PHP跨站脚本攻击(XSS)漏洞修复思路(二)

上一篇文章《PHP跨站脚本攻击(XSS)漏洞修复方法(一)》写到了360修复XSS漏洞的插件并不完善的问题,那么这篇文章就来分享一下自己如何写代码修补这个漏洞。

从上一篇文章看出,部署了360出的XSS修复插件之后,至少还存在iframe无法过滤缺憾,是否还有其他纰漏目前还不得而知。

分析一下中国博客联盟和张戈博客已开放的数据入口:

①、中国博客联盟,主要有搜索、后台博客提交等;

②、张戈博客(WordPress),主要是用户评论提交;

所以,本文就已这2个入口为例子,来分享XSS漏洞修复的简单思路。

一、完全过滤

问题①,我可以找到站内搜索和博客提交这2个开放入口的数据处理php,然后对数据过滤即可。

比如站内搜索,中国博客联盟取得搜索关键词是这样一行代码:

考虑到中国博客联盟的站内搜索,只能搜索博客名称、域名、类型及描述这四种,而这四种均不需要出现html代码!如果有人提交搜索了html代码,绝非善意!

那对于这种情况,我只需要完全过滤掉html内容即可!所以可以用到strip_tags()函数,具体运用如下:

在数据外套上 strip_tags 进行html完全过滤即可!那么系统后台得到的数据就是不含任何html代码的。

比如,依然搜索360爆出的“88888<iframe src=http://xxooxxoo.js>”:

PHP跨站脚本攻击(XSS)漏洞修复思路(二)

从搜索结果可以看出,系统已自动过滤了后面的iframe恶意内容,问题得到解决。

因此,对于XSS漏洞的第一种修复方法就是使用 strip_tags 函数来完全过滤html内容。

二、代码转义

问题②,WordPress的评论并不能如此暴力的过滤,因为很多用户确实是想提交一些html代码,来进行交流。

对于这种情况,有3种思路:

ajax方式的评论都会用到主题下的comment-ajax.php文件,所以我们编辑这个文件,搜索$comment_type = '',然后在这行后面添加以下三种方法中,你所中意的代码:

A. 直接过滤,允许提交

效果截图:

PHP跨站脚本攻击(XSS)漏洞修复思路(二)

B. 提出警告,禁止提交

效果截图:

PHP跨站脚本攻击(XSS)漏洞修复思路(二)

C. 内容转义,允许提交

效果截图:PHP跨站脚本攻击(XSS)漏洞修复思路(二)

其中过滤列表只写了iframe和script2种,如果你需要过滤其他你不喜欢的内容,比如某些人评论总是带上链接,这些都是可以过滤的!反正方法我已经分享了,具体就看你自行发挥了!

Ps:其实WordPress本身已屏蔽了XSS漏洞,评论是不允许一些html代码的, 比如font字体标签等。本文也只是为了探讨修复XSS漏洞的一个简单思路,临时关闭了HTML过滤。为了安全起见,非特殊情况,还是不要禁止WordPress自带的HTML过滤为好!

最后,再去用360扫一扫,已经是“满意100”了:

PHP跨站脚本攻击(XSS)漏洞修复思路(二)

好了,关于XSS漏洞的简单修复思路的探讨,就暂告一段落,后续有新的见解再来补充完善。

发表评论

gravatar

:?::razz::sad::evil::!::smile::oops::grin::eek::shock::???::cool::lol::mad::twisted::roll::wink::idea::arrow::neutral::cry::mrgreen:

刷新评论

目前评论:7   其中:访客  7   博主  0

  1. 小武 6 来自天朝的朋友 谷歌浏览器 Windows 8.1 辽宁省大连市 电信

    嗯. 最安全的就是 只要遇到尖括号 就转义. .

  2. 必分享 3 来自天朝的朋友 谷歌浏览器 Windows 7 广东省佛山市 电信

    支持下。

  3. 消灭星星 2 来自天朝的朋友 谷歌浏览器 Windows 7 浙江省杭州市 电信

    :sad: :sad: :sad: 签到成功!签到时间:下午10:32:43,每日签到,生活更精彩哦~

  4. zhangsan 0 来自天朝的朋友 火狐浏览器 Windows 8.1 广东省佛山市顺德区 联通

    <script>alert(“XSS测试”)</script>

  5. kid 2 来自天朝的朋友 谷歌浏览器 Windows 7 浙江省杭州市 电信

    测试一下

  6. kid 2 来自天朝的朋友 谷歌浏览器 Windows 7 浙江省杭州市 电信

    大神你好,露兜这种转义方法还有用吗 http://www.ludou.org/wordpress-escape-comments.html

  7. kid 2 来自天朝的朋友 谷歌浏览器 Windows 7 浙江省杭州市 电信

    777 在测试一下

加载中,请稍候...