在wordpress admin中,在添加新页面时会阻止标题中的脚本

时间:2013-11-17 05:26:20

标签: php wordpress

我发现当我输入

时在admin中创建新页面
<script>alert(1)</script> 

在标题字段中发布/预览页面然后脚本正在执行。它清楚地表明数据没有被正确地转义,从而对xss攻击开放。

任何人都可以帮我解决如何在保存到管理部分之前清理数据,或者是否有任何插件,因为我对wordpress相当新。我知道有很多插件适用于前端评论等,但找不到管理部分。

2 个答案:

答案 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

https://make.wordpress.org/core/handbook/testing/reporting-security-vulnerabilities/#why-are-some-users-allowed-to-post-unfiltered-html