Đầu ra HTML có nên được chuyển qua esc_html () AND wp_kses () không?


11

Tôi bối rối về các cách sử dụng khác nhau esc_html()wp_kses(). Tôi hiểu rằng esc_html()chuyển đổi các ký tự đặc biệt thành thực thể HTML của chúng và wp_kses()loại bỏ các thẻ không mong muốn (ví dụ <script>:), nhưng tôi không chắc chắn trong bối cảnh nào chúng nên được sử dụng cùng nhau hoặc riêng rẽ.

Nếu tôi chạy một số HTML không đáng tin cậy thông qua esc_html(), thì bất kỳ JavaScript nào sẽ được hiển thị dưới dạng văn bản thuần túy thay vì được trình duyệt hiển thị, vì vậy nó có an toàn ở điểm đó không, đúng không? Lý do duy nhất để chạy nó thông qua wp_kses()là để tránh hiển thị tập lệnh thô?

Về cơ bản, esc_html()làm cho nó an toàn, và wp_kses()làm cho nó đẹp. Đúng không?

Câu trả lời:


16

Nguyên tắc chung, ít nhất là được tán thành bởi Mark Jaquith , là vệ sinh đầu vào, thoát khỏi đầu ra (hệ quả của quy tắc này là vệ sinh sớm, thoát muộn ).

Vì vậy: sử dụng các bộ lọc khử trùng (như kses()gia đình) khi lưu trữ dữ liệu không đáng tin cậy trong cơ sở dữ liệu và sử dụng các bộ lọc thoát (tức là esc_*()gia đình) khi xuất dữ liệu không đáng tin cậy trong mẫu .


14

Các hàm kodes nên được sử dụng khi bạn muốn cho phép một số tập hợp con html nằm trong kết quả. Ví dụ: các bình luận cho phép một số HTML trong đó in đậm, in nghiêng, liên kết và như vậy.

Hàm esc_html nên được sử dụng để thoát html hoàn toàn. Không có HTML nào đi qua nó mà không được chuyển đổi thành thứ gì đó sẽ được hiểu là không phải HTML bởi trình duyệt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.