Nên sử dụng KSES nào và khi nào?


7

Nguồn WP cho thấy wp_filter_kseswp_filter_post_ksesđược truyền dữ liệu "dự kiến ​​sẽ được thoát bằng dấu gạch chéo".

Mặt khác, wp_kses_datađược truyền dữ liệu "dự kiến ​​sẽ không thoát" và wp_kses_postcó mã trông giống như wp_kses_data.

Làm thế nào an toàn để truyền dữ liệu không xác định (về mặt thoát với dấu gạch chéo) cho các chức năng này?

Bộ thứ nhất có thể được ưu tiên hơn bộ thứ hai hay thích bộ thứ hai an toàn hơn?

Hay đây là một trường hợp mà bạn thực sự cần phải biết tình trạng dữ liệu của mình trong điều kiện bị cắt giảm?

- cập nhật--

Bây giờ tôi đang hình dung rằng nếu bạn không biết liệu dữ liệu có được thoát hay không, bạn có thể sử dụng wp_kses_data( stripslashes_deep( $data ) );và chạy trả lại mặc dù là addlash () nếu cuối cùng bạn cần thoát.

Câu trả lời:


3

Từ bộ mã:

wp_filter_kses thường được ưu tiên hơn wp_kses_data vì wp_magic_quotes thoát $ _GET, $ _POST, $ _COOKIE, $ _SERVER và $ _REQUEST khá sớm trong hệ thống hook, ngay sau đó là 'plugins_'

Bộ đầu tiên sau đó được ưa thích. Nhiều câu hỏi hơn, "liệu tước gạch chéo có an toàn hơn không?" Cả hai đều sử dụng cùng một HTML được phép. Vâng, nó phụ thuộc, trong trường hợp tuyệt đối, nhưng tôi sẽ cho rằng nó an toàn hơn là không.

Cơ sở của kíp:

$filtered = wp_kses($unfiltered, $allowed_html, $allowed_protocols);

Tất cả các chức năng của wordpress kodes sau đó chỉ cần làm

$filtered = wp_kses($unfiltered, $allowedtags);

VÌ THẾ:

$filtered = wp_kses_data($unfiltered);
$filtered = wp_filter_kses($unfiltered); // does the same, but will also slash escape the data

các postbiến thể sử dụng một bộ thẻ khác nhau; những người được phép sử dụng bởi người không phải quản trị viên.


Tôi thực sự đã viết phần đó trong bộ mã dựa trên core.trac.wordpress.org/ticket/17089 ... nhưng đó là khi bạn biết dữ liệu được thoát (vì wp_magic_quotes). Những gì tôi không biết là phải làm gì nếu bạn không biết trạng thái của dữ liệu ...
WraithKenny
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.