问题描述
WP 源代码显示,wp_filter_kses
和 wp_filter_post_kses
都传递了 「预期以斜线转义」 的数据。
另一方面,wp_kses_data
传递的数据 「预期不被转义」,wp_kses_post
的代码看起来像 wp_kses_data 。
将这些功能的数据传递给未知数据 (以斜线方式转义) 的安全性如何?
第一组可以优于第二组还是更喜欢第二组更安全?
或者这是一个您绝对需要知道数据的条件的削减的情况?
–update–
我现在在想,如果你不知道数据是否被转义,你可以使用 wp_kses_data( stripslashes_deep( $data ) );
并运行返回,如果你需要转义最后的 addslashes() 。
最佳解决方案
从抄本:
wp_filter_kses should generally be preferred over wp_kses_data because wp_magic_quotes escapes $_GET, $_POST, $_COOKIE, $_SERVER, and $_REQUEST fairly early in the hook system, shortly after ‘plugins_loaded’ but earlier then ‘init’ or ‘wp_loaded’.
然后首选。更多的问题是,「剥离斜线更安全吗?」 他们都使用相同的允许的 HTML 。嗯,这绝对取决于绝对的情况,但我认为这样做比较安全。
基本用途:
$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
变体使用不同的标签集合; 允许由 non-admins 使用的那些。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。