web-dev-qa-db-ja.com

どのKSESをいつ使うべきですか?

WPソースは、wp_filter_kseswp_filter_post_ksesが「スラッシュでエスケープされることが予想される」データに渡されることを示しています。

一方、wp_kses_dataには「エスケープされないことが期待される」データが渡され、wp_kses_postにはwp_kses_dataのようなコードがあります。

未知の(スラッシュでエスケープされた)データをこれらの関数に渡すことはどれほど安全ですか?

最初のセットを2番目のセットよりも優先させることができますか、それとも2番目のセットをより安全に優先させますか。

それとも、スラッシュの観点からあなたのデータの状態を絶対に知る必要があるのでしょうか。

- 更新 -

データがエスケープされているかどうかわからない場合はwp_kses_data( stripslashes_deep( $data ) );を使用し、最後にエスケープする必要がある場合はaddslashes()を使用してリターンを実行することができます。

6
WraithKenny

コーデックスから:

wp_magic_quotesは、$ _GET、$ _POST、$ _COOKIE、$ _SERVER、および$ _REQUESTを、フックシステムのかなり早い時期、 'plugins_loaded'の直後、 'init'または 'wp_loaded'の前にエスケープするため、通常、wp_filter_ksesはwp_kses_dataよりも優先されます。

その場合、最初のセットが優先されます。 「スラッシュの除去は安全ではないよりも安全ですか?」という疑問があります。どちらも同じ許可済みHTMLを使用しています。ええ、それは絶対的な場合に依存します、しかし私はそれがそうではないより安全であると思います。

Ksesの基本的な使い方

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

WordPressのkses関数のすべてはそれからちょうどする

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

そう:

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

postバリエーションは異なるタグのセットを使用します。非管理者による使用が許可されているもの。

3
two7s_clash