三分钟热度教程:WordPress插件开发之输出的数据也要消毒处理

追格官方小助手/ 2022年11月22日/ WordPress/ 浏览 1803

因为,我只能保持三分钟热度,所以,知识点一定要在三分钟之内讲完……

先说明一下,这个说的输出数据,特指输出数据到网面上,或者称为渲染数据到网面,更为合适。这种场景下,经常会遇到一个安全问题:XSS


Cross-site scripting (XSS) 是一种常见于web应用程序的计算机安全漏洞。XSS使攻击者能够将客户端脚本注入其他用户查看的网页。攻击者可利用跨站点脚本漏洞绕过访问控制,如同源策略。


要解决这个问题也很简单,就是将字符转义后再输出。你没猜错!WordPress 同样提供了一大批转义函数。


esc_attr 用于打印到HTML元素属性中的所有其他内容。


esc_html 只要html元素包含正在显示的一段数据,就可以使用。这不会将HTML显示为HTML(因此<strong>将按原样输出,而不是使用粗体),它用于HTML内部,并将删除HTML。


esc_js 用于内联Javascript,它转义Javascript以用于<script>标记。


esc_textarea 用于编码文本,以便在textarea元素中使用。


esc_url 用于所有url,包括HTML元素的src和href属性中的url。


esc_url_raw 在数据库中存储url时使用,或在需要非编码url的其他情况下使用。


esc_xml 用于转义xml块。


wp_kses 用于安全地转义所有不受信任的HTML(发布文本、注释文本等)。这将HTML显示为HTML(因此<em>将显示为强调文本)


wp_kses_post wp_kses的替代版本,它自动允许文章内容中允许的所有HTML。


是不是哪里不对?wp_kses 和 wp_kses_post 又出现了!是的,这就是 wp_kses 的复杂与强大,输入输出都可以用……


使用举例:


esc_html_e( 'Hello World', 'text_domain' );
// Same as
echo esc_html( __( 'Hello World', 'text_domain' ) );


需要再啰嗦一句,如果你需要输出的就是html代码,就不要再对他们转义了!或者进行有条件的转义,这正是 wp_kses 的用武之地!


发表评论

暂无评论,抢个沙发...

客服 工单