- SQL injection (OWASP A03):
db.query('SELECT * FROM users WHERE id = ' + req.params.id)→ attacker truyền1 OR 1=1dump toàn bộ DB. - Fix: parameterized queries
db.query('SELECT * FROM users WHERE id = $1', [id])hoặc ORM. - NoSQL injection MongoDB:
{ username: req.body.username }với body{ username: { $gt: '' } }bypass auth. - Fix: validate với Zod/Joi trước khi query.
- XSS (A07): lưu
<script>alert(1)</script>vào DB rồi render unescaped → steal cookies. - Fix: escape output, CSP headers, DOMPurify.
- ReDoS:
/(a+)+/.test(userInput)với input'aaaaaaaaab'→ exponential backtracking block event loop hàng giây. - Fix:
safe-regexpackage kiểm tra pattern, timeout regex execution. - Directory traversal:
fs.readFile('/uploads/' + req.query.file)vớifile=../../etc/passwd. - Fix:
path.resolve()+ verify kết quả starts with allowed directory. - Prototype pollution:
obj[userKey] = userValuevới key__proto__corrupt Object prototype. - Fix:
Object.create(null)cho plain objects, validate keys. - Dependency vulnerabilities:
npm audit+npm audit fix,snykcho CI/CD. - Helmet.js: một lệnh
app.use(helmet())set 11 security headers (X-Frame-Options, HSTS, CSP cơ bản, nosniff).
Các lỗ hổng bảo mật phổ biến trong Node.js API và cách phòng tránh?
Xem toàn bộ Node.js cùng filter theo level & chủ đề con.
Mở danh sách Node.js