我发现当我输入
时在admin中创建新页面<script>alert(1)</script>
在标题字段中发布/预览页面然后脚本正在执行。它清楚地表明数据没有被正确地转义,从而对xss攻击开放。
任何人都可以帮我解决如何在保存到管理部分之前清理数据,或者是否有任何插件,因为我对wordpress相当新。我知道有很多插件适用于前端评论等,但找不到管理部分。
答案 0 :(得分:1)
wordpress中有很多清理功能,例如:
sanitize_title( $title, $fallback_title, $context );
由于我不知道您要清理哪种数据或数据类型,我无法为您选择合适的功能..
在这里阅读更多内容:
http://codex.wordpress.org/Function_Reference/sanitize_title
以及其他功能列表:
http://codex.wordpress.org/Function_Reference/sanitize_title#Related
答案 1 :(得分:1)
设置
define( 'DISALLOW_UNFILTERED_HTML', true );
wp-config.php
中的是阻止所有用户在帖子和页面的标题和正文中插入脚本的推荐方法。
这将在保存到数据库之前从字段中删除任何<script>
标记。
为什么允许某些用户发布未经过滤的HTML?
具有管理员或编辑角色的用户可以在帖子标题,发布内容和评论中发布未经过滤的HTML。毕竟,WordPress是一种发布工具,人们需要能够包含他们需要进行通信的任何标记。具有较低权限的用户不得发布未经过滤的内容。
如果您正在对WordPress运行安全测试,请使用权限较低的用户,以便过滤所有内容。如果您担心管理员将XSS放入内容并窃取cookie,请注意所有cookie都标记为仅HTTP传递,并分为用于管理页面的特权cookie和用于公共对象页面的非特权cookie。内容永远不会在管理员中未经过滤显示。无论如何,管理员具有广泛的超级权力,其中未经过滤的HTML是较小的权力。
在WordPress Multisite中,只有超级管理员可以发布未经过滤的HTML,因为所有其他用户都被视为不受信任。
要为所有用户(包括管理员)停用未经过滤的HTML,您可以将
define( 'DISALLOW_UNFILTERED_HTML', true );
添加到wp-config.php
。