Khái niệm Web Security
Web Security là tập hợp các nguyên tắc, biện pháp và công nghệ nhằm bảo vệ website, ứng dụng web và dữ liệu khỏi các hành vi truy cập trái phép, tấn công độc hại hoặc khai thác lỗ hổng.
Nó không chỉ bao gồm việc ngăn chặn hacker, mà còn đảm bảo rằng dữ liệu:
- Không bị đánh cắp (confidentiality),
- Không bị thay đổi trái phép (integrity),
- Có thể truy cập đúng lúc bởi người dùng hợp lệ (availability).
Web Security nằm trong lĩnh vực lớn hơn gọi là Application Security và có mối quan hệ chặt chẽ với Network Security, Identity & Access Management, và Data Protection.
Mục tiêu của Web Security
Web Security theo đuổi các mục tiêu bảo mật truyền thống trong mô hình CIA triad:
Confidentiality (Tính bảo mật)
- Đảm bảo chỉ người có quyền mới truy cập được dữ liệu.
- Dữ liệu nhạy cảm (mật khẩu, thẻ tín dụng, thông tin cá nhân) phải được mã hóa và bảo vệ.
Integrity (Tính toàn vẹn)
- Dữ liệu không bị chỉnh sửa ngoài ý muốn hoặc bởi bên thứ ba không hợp lệ.
- Ví dụ: kiểm tra mã xác thực, mã hóa, hashing dữ liệu.
Availability (Tính sẵn sàng)
- Hệ thống phải luôn hoạt động đúng, phản hồi nhanh chóng và không bị tấn công từ chối dịch vụ (DDoS).
- Hạ tầng mạnh, có khả năng tự phục hồi là điều quan trọng.
Authentication & Authorization (Xác thực và phân quyền)
- Đảm bảo người dùng là ai và được phép làm gì.
- Tránh truy cập sai quyền hoặc lạm dụng tài khoản người khác.
Một vài mối đe dọa bảo mật Web phổ biến
Tổ chức OWASP (Open Web Application Security Project) liệt kê Top 10 nguy cơ bảo mật web hàng đầu.
Broken Access Control
Hệ thống không kiểm soát tốt quyền truy cập, cho phép người dùng truy cập tài nguyên không được phép.
Ví dụ: Người dùng thường có thể truy cập tài nguyên của người khác bằng cách thay đổi ID trong URL.
Cryptographic Failures
Lỗi trong mã hóa hoặc không mã hóa dữ liệu nhạy cảm như mật khẩu, thẻ tín dụng, v.v.
Ví dụ: Truyền dữ liệu qua HTTP thay vì HTTPS.
Injection
Ứng dụng cho phép người dùng nhập dữ liệu độc hại mà không lọc sạch, dẫn đến việc thực thi lệnh không mong muốn.
Ví dụ: SQL Injection, Command Injection, LDAP Injection…
Insecure Design
Thiết kế ứng dụng ngay từ đầu đã thiếu tư duy bảo mật hoặc không tính đến các rủi ro.
Ví dụ: Không có giới hạn số lần đăng nhập, không thiết kế kiểm soát quyền rõ ràng.
Security Misconfiguration
Cấu hình hệ thống sai hoặc không an toàn, như để mặc định, bật chế độ debug, lộ thông tin lỗi.
Ví dụ: Không tắt cổng admin, public file .git
, cấu hình server sai.
Vulnerable and Outdated Components
Sử dụng thư viện, phần mềm, framework đã lỗi thời hoặc chứa lỗ hổng bảo mật đã biết.
Ví dụ: Dùng jQuery, Log4j, Spring chưa được cập nhật bản vá bảo mật.
Identification and Authentication Failures
Lỗi trong xác thực người dùng như mật khẩu yếu, token không được bảo vệ, không giới hạn login.
Ví dụ: Cho phép đăng nhập brute-force không giới hạn.
Software and Data Integrity Failures
Không xác minh tính toàn vẹn của phần mềm, mã nguồn hoặc dữ liệu được tải về.
Ví dụ: Tải script từ CDN không có kiểm tra hash hoặc chữ ký số.
Security Logging and Monitoring Failures
Không ghi log hoặc không theo dõi đủ để phát hiện và phản hồi sự cố kịp thời.
Ví dụ: Không có alert khi người lạ đăng nhập từ vị trí bất thường.
Server-Side Request Forgery (SSRF)
Ứng dụng gửi request đến các dịch vụ nội bộ (internal services) mà attacker kiểm soát đầu vào, có thể dẫn đến lộ thông tin hệ thống.
Ví dụ: Cho phép người dùng nhập URL và hệ thống gửi request nội bộ theo URL đó.
Một số kỹ thuật bảo mật Web tốt hơn
Authentication & Authorization
- Đăng nhập bằng username/password, 2FA, OAuth2, JWT,…
- Phân quyền theo vai trò (RBAC), cấp độ truy cập rõ ràng.
HTTPS (SSL/TLS)
- Mã hóa toàn bộ dữ liệu truyền đi giữa trình duyệt và máy chủ.
Input Validation & Sanitization
- Kiểm tra và làm sạch dữ liệu đầu vào, ngăn SQLi, XSS,…
CORS, CSP, HSTS
- Thiết lập header HTTP để giới hạn nguồn truy cập, chống clickjacking, XSS,…
WAF (Web Application Firewall)
- Lọc và chặn các request độc hại vào ứng dụng.
Rate Limiting & Captcha
- Giới hạn số lượng request để chống brute-force hoặc DDoS.