Ý nghĩa kỹ thuật – Không chỉ là code, mà là cả hệ thống
Mỗi khi bạn triển khai một phần mềm mới, thêm một module xác thực, hay đơn giản là cấu hình lại một rule trong tường lửa – bạn đang tạo ra các hậu quả kỹ thuật (technical implications).
Ví dụ thực tế:
Triển khai SIEM mới → cần mở cổng log, ảnh hưởng rule firewall → có thể cần thêm VLAN hoặc subnet riêng.
Chuyển từ xác thực truyền thống sang MFA → tăng bảo mật nhưng yêu cầu đồng bộ hóa máy chủ xác thực và cải tiến app client.
Cài thêm agent để phát hiện xâm nhập (EDR) → tiêu tốn CPU RAM, gây chậm máy → ảnh hưởng đến vận hành.
Thông điệp quan trọng: Không có thay đổi nào là “nhỏ” trong hạ tầng – nếu bạn không đánh giá đúng ý nghĩa kỹ thuật của nó.
Allow List – Phòng thủ chủ động bằng cách chỉ cho phép điều bạn hiểu
Allow List là phương pháp cho phép chỉ những giá trị hợp lệ được nhập vào hệ thống. Nó giống như nói với hệ thống rằng: “Chỉ những thứ này được chấp nhận, mọi thứ còn lại đều nghi ngờ.”
Ví dụ thực tế:
Trường số điện thoại chỉ nhận chuỗi số 10 chữ số.
Trường email chỉ nhận định dạng có @vnpro.vn.
Trường mã nhân viên chỉ được nhập các ký tự [A-Z]{3}[0-9]{4}.
HTML5 hỗ trợ rất tốt với input type=email
, type=number
, và bạn có thể dùng thêm Regular Expression (Regex) để tăng độ chính xác.
Tình huống phức tạp – nhập liệu tự do (free-form):
Có cho phép tiếng Nhật, Ả Rập không?
Người dùng copy từ Word → Unicode sai chuẩn.
Có khoảng trắng vô hình, ký tự “smart quote”, hay ký tự ẩn?
Giải pháp nâng cao:
Dùng Unicode character categories để xác định loại ký tự hợp lệ.
Dùng normalize()
để chuẩn hóa encoding (NFC/NFD) → chống bypass kiểu e
+ ´
= é
.
Lưu ý thực chiến: Allow List cần được cập nhật liên tục theo logic ứng dụng. Nếu không có tool quản lý tốt, rất dễ lỗi logic hoặc từ chối sai (false negative).
Deny List – Hạn chế tạm thời, rủi ro dài hạn
Deny List (block list) là phương pháp cổ điển: liệt kê các mẫu “xấu” và cấm.
Nghe hợp lý:
Cấm '
, ;
để chặn SQLi.
Cấm <
, >
để chặn HTML/XSS.
Cấm ()
để chặn JavaScript.
Nhưng: Bạn không thể biết hết mọi cách hacker có thể dùng để vượt Deny List.
Ví dụ thực tế:
SQLi vẫn hoạt động với uNiOn SeLeCt
.
HTML viết bằng mã <script>
.
Điểm yếu chí mạng:
Deny List dễ chặn nhầm.
Bỏ sót các mẫu tấn công mới.
Không thể dùng làm phòng thủ chính – chỉ phù hợp với tình huống khẩn cấp hoặc vá nhanh.
Tổng kết cho anh em IT: Dùng Allow List, né Deny List
Tips thực chiến cho Dev, Admin, Blue Team:
Dùng Allow List với regex, HTML5 validation.
Normalize dữ liệu đầu vào trước khi xử lý.
Không bao giờ chỉ dựa vào Deny List.
Tích hợp input validation vào pipeline CI/CD.
Test input với payload từ BurpSuite, fuzzers, OWASP Zap.
Ghi nhớ: Hacker không cần biết bạn validate kiểu gì – họ chỉ cần một điểm bạn bỏ sót.
Input Validation phải là lớp phòng thủ đầu tiên, không phải tấm khiên cuối cùng.