| name | code-review-security-review |
| description | null |
Security Review
Category: code-review · Status: 🟢 Active
When to use
Khi review bảo mật: validate input, XSS, token, phân quyền.
Steps
- Input: validate + escape mọi dữ liệu từ user/URL/API; không tin client.
- XSS: tránh
dangerouslySetInnerHTML; nếu bắt buộc thì sanitize (DOMPurify).
- Token/secret: không hardcode, không log, không để trong bundle FE; dùng httpOnly cookie cho session.
- Phân quyền: kiểm tra quyền ở server, không chỉ ẩn nút ở UI; chặn IDOR (truy cập id người khác).
- Phụ thuộc: tránh lib có lỗ hổng đã biết; cẩn thận URL/redirect mở.
Template
import DOMPurify from 'dompurify';
<div dangerouslySetInnerHTML={{ __html: DOMPurify.sanitize(html) }} />
if (!can(user, 'post:edit', post)) throw new ForbiddenError();
Example
Good: validate server-side, sanitize HTML, secret ngoài bundle, check quyền + chống IDOR.
Avoid: tin input client, innerHTML thô, token trong localStorage/log, chỉ ẩn nút mà không chặn API.
Checklist