问题描述

WP 源代码显示,wp_filter_kseswp_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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。