API key trong git history
Commit accidentally → leak forever. Tools như git-secrets, gitleaks scan. Nếu lỡ commit: rotate ngay, force-push không cứu được (đã clone). Use BFG Repo-Cleaner.
Audit security web app qua 5 nhóm: (1) OWASP Top 10 (injection, XSS, CSRF, auth, …), (2) Authentication + session management, (3) Secrets + config, (4) HTTP headers + transport, (5) Dependency + supply chain. Checklist 40 mục dưới đây áp dụng cho mọi web app production. Mỗi audit cycle: 4-8 giờ kỹ sư.
Security incident có thể tổn thất 50-500 triệu (revenue lost + GDPR/Nghị định 13 fines + reputation). Audit định kỳ 6 tháng 1 lần là minimum cho web app production. Hướng dẫn này dựa OWASP Top 10 2021 + Nghị định 13/2023 Việt Nam.
Mỗi bước có duration + todos cụ thể + deliverable rõ ràng. Theo thứ tự — không skip.
Quét manual + automated 10 lỗ hổng phổ biến nhất theo OWASP. Đây là baseline minimum.
Auth là attack surface lớn nhất. Verify mọi flow: login, logout, password reset, account lockout.
Secrets leak là root cause của 30% incidents. Verify không có secrets in code, env, log.
Modern web app cần headers đúng để defense in depth. Test với securityheaders.com.
Supply chain attacks (npm package compromise) tăng nhanh 2024-2026. Verify dependencies định kỳ.
Nghị định 13 về bảo vệ dữ liệu cá nhân — apply cho mọi web app xử lý data người dùng VN.
Print ra hoặc copy vào Notion để track. Mỗi category là 1 group rõ ràng.
Pattern thực tế đã gây fail nhiều dự án. Recognize sớm + fix ngay.
Commit accidentally → leak forever. Tools như git-secrets, gitleaks scan. Nếu lỡ commit: rotate ngay, force-push không cứu được (đã clone). Use BFG Repo-Cleaner.
Vẫn còn thấy trong legacy code VN. Phải migration sang bcrypt/argon2. Migration plan: re-hash password khi user login next time.
Backup leak = full database leak. Encrypt backup at rest + transit. Store backup separately từ production credentials.
Admin panel tại /admin không có IP whitelist + chỉ rely vào auth = risky. Add IP whitelist (Cloudflare Access) + MFA + audit log.
'Sprint sau sẽ fix' = không bao giờ fix. Embed security trong definition of done. PR review check security checklist.
Insights từ dự án thực tế Alodev đã làm — không lý thuyết.
Snyk + npm audit + git-secrets trong GitHub Actions. Block merge nếu high/critical vulnerability. Catch sớm, fix rẻ.
Internal audit không đủ — outside perspective cần thiết. Pentesting Việt Nam 30-80 triệu cho web app medium. ROI cao.
Reward nhân viên discover vulnerability — 1-5 triệu/finding. Mỗi quý tổ chức 'security day' với reward + ăn pizza.
Có sẵn runbook cho 5-10 scenarios (DB leak, admin compromise, DDoS). Khi happen, không panic — execute runbook.
Test online: securityheaders.com
Check password breached: haveibeenpwned.com/Passwords
PDF official từ Cổng thông tin Chính phủ
Internal audit (đội tự làm theo checklist): 4-8 giờ kỹ sư cho web app medium. Outside pentest: 30-80 triệu, 1-2 tuần. Frequency: internal mỗi 3 tháng, outside mỗi 12 tháng. ROI: 1 incident = 50-500 triệu mất, audit là rẻ.
Có. Tấn công automated bot scan mọi web 24/7, không phân biệt SME hay enterprise. Đặc biệt nguy hiểm: SME có data KH (CRM, contacts) → bị leak có thể bị phạt Nghị định 13 + reputation damage. Minimum: OWASP Top 10 check + Nghị định 13 compliance.
Phụ thuộc severity. Critical (RCE, SQL injection): fix trong 24-72h. High (XSS, auth bypass): 1-2 tuần. Medium (missing headers, weak crypto): 2-4 tuần. Low (cosmetic): roadmap dài hơi. Reserve 10-15% dev time cho security backlog.
Doanh nghiệp SME: chưa cần public bug bounty. Internal program với nhân viên + close circle (HackerOne private) OK. Public bug bounty cần dev team có capacity respond + reward thực — premature thường tạo noise. Khi quy mô >100k user mới cần public.
Mức phạt theo Nghị định: 50-100 triệu cho tổ chức vi phạm xử lý data cá nhân không có sự đồng ý. 200-500 triệu cho trường hợp nghiêm trọng (data >100 người, data nhạy cảm). Reputation damage lớn hơn nhiều: KH cũ lo ngại + KH mới không tin.
Hướng dẫn này là kinh nghiệm tổng hợp. Mỗi dự án có context riêng. Đặt lịch tư vấn 30 phút để bàn case cụ thể của bạn — miễn phí, không bán hàng ép.