Là check_plain () đủ để tái hiển thị văn bản nhập vào bởi người sử dụng trong trình duyệt, hay tôi nên vẫn còn bộ lọc với filter_xss () ?
Là check_plain () đủ để tái hiển thị văn bản nhập vào bởi người sử dụng trong trình duyệt, hay tôi nên vẫn còn bộ lọc với filter_xss () ?
Câu trả lời:
Tôi tưởng tượng câu hỏi là về việc sử dụng check_plain(filter_xss($string))
, hoặc filter_xss(check_plain($string))
.
check_plain()
và filter_xss()
có hai mục đích khác nhau và ngược lại:
check_plain()
mã hóa các ký tự đặc biệt trong một chuỗi văn bản đơn giản sau đó được hiển thị dưới dạng HTML.filter_xss()
lọc một chuỗi HTML để ngăn các lỗ hổng cross-site-scripting (XSS). Cụ thể mục đích của nó là:
Nếu bạn sử dụng check_plain()
, chuỗi được truyền cho hàm được coi là được sử dụng dưới dạng văn bản thuần túy; trong trường hợp như vậy, filter_xss()
là không cần thiết. Nếu bạn sử dụng filter_xss()
, thì chuỗi được truyền cho hàm được coi là HTML và check_plain()
không cần thiết.
Nếu câu hỏi là về việc sử dụng check_plain()
và filter_xss()
trên các phần khác nhau của cùng một chuỗi thì, như các greggles đã chỉ ra trong nhận xét của anh ấy, bạn có thể sử dụng (ví dụ) check_plain()
trên nội dung của các thuộc tính thẻ và filter_xss()
trên toàn bộ thẻ HTML.