Trình lọc HTML mất HTML làm đầu vào và tạo HTML làm đầu ra. Mục đích của nó là cho phép người dùng nhập html với một số thẻ, thuộc tính và giá trị, trong khi lọc ra những người khác. Điều này sử dụng danh sách trắng để ngăn chặn bất kỳ dữ liệu nào có thể chứa tập lệnh. Vì vậy, điều này rất hữu ích cho một cái gì đó giống như một trình soạn thảo WYSIWYG.
Tên người dùng và mật khẩu mặt khác không phải là HTML. Chúng là văn bản thuần túy, vì vậy trình lọc HTML không phải là một tùy chọn. Việc cố gắng sử dụng Trình lọc HTML ở đây sẽ làm hỏng dữ liệu hoặc cho phép các cuộc tấn công XSS.
Ví dụ, nó cho phép sau qua không thay đổi, mà có thể gây ra các vấn đề XSS khi chèn như một giá trị thuộc tính trong một số yếu tố:
" onclick="javascript:alert()" href="
Hoặc nếu ai đó cố gắng sử dụng những biểu tượng đặc biệt trong mật khẩu của họ, và đi vào :
<password
khi đó mật khẩu của họ sẽ bị trống và dễ đoán hơn nhiều.
Thay vào đó, bạn nên mã hóa văn bản. Mã hóa cần thiết phụ thuộc vào bối cảnh, nhưng bạn có thể sử dụng htmlentities
khi xuất ra những giá trị này nếu bạn dính vào quy tắC# 0 và quy tắC# 1, tại OWASP XSS Prevention Cheat Sheet
1 cho filter_var –
Đối với đầu vào văn bản bình thường, filter_var nên là đủ. Đối với văn bản cho phép các thẻ HTML, bạn nên sử dụng HTMLPurifier. – Nikko