Lưu ý: Tôi quan tâm đến việc phun SQL và thoát ra ở nơi khác - câu hỏi này chỉ là về lọc đầu vào, cảm ơn.Lọc đầu vào của người dùng - tôi có cần lọc HTML không?
Tôi đang ở giữa việc tái cấu trúc chức năng lọc đầu vào của người dùng. Trước khi đi qua các tham số GET/POST để một bộ lọc loại cụ thể với filter_var() tôi thực hiện như sau:
- kiểm tra mã hóa tham số với mb_detect_encoding()
- chuyển đổi sang UTF-8 với iconv() (với // bỏ qua) nếu nó không ASCII hoặc UTF-8
- sạch trắng-không gian với a function found on GnuCitizen.org
- vượt qua kết quả qua strip_tags() - không có thẻ cho phép ở tất cả, Markdown chỉ
Bây giờ là câu hỏi: bạn có chuyển thông số thành bộ lọc như htmLawed hoặc HTML Purifier hoặc tôi có thể nghĩ đầu vào là an toàn không? Dường như với tôi rằng hai sự khác biệt này chủ yếu dựa trên độ chi tiết của các thành phần và thuộc tính HTML được phép (mà tôi không quan tâm, khi tôi xóa mọi thứ), nhưng tài liệu htmLawed có phần về 'dangerous characters' cho thấy có thể có lý do để dùng nó. Trong trường hợp này, những gì sẽ là một cấu hình lành mạnh cho nó?
Ký tự nguy hiểm có thể là ký tự điều khiển UTF-8. – Jacco
Bất kỳ đề xuất nào về cách loại bỏ chúng? – djn
Tôi không thực sự nhận được lưu ý của bạn, SQL Injection là tất cả về ngăn chặn đầu vào người dùng khó chịu trong một truy vấn sql. Trong thực tế, phần lớn các lỗ hổng là do INPUT khó chịu, không phải đầu ra. Chúng được gọi là lỗ hổng "Taint và Sink". – rook