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

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

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

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

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

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

一、完全过滤

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

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

$keyword = addslashes(trim($_GET['query']));

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

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

$keyword = strip_tags(addslashes(trim($_GET['query'])));

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

比如,依然搜索360爆出的“88888”:

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

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

二、代码转义

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

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

以下三种方法中,选择你所中意的一种方式,添加到主题functions.php里面即可:

A. 直接过滤,允许提交

add_filter('comment_text', 'filter_comment');

function filter_comment($comment_content) {

if ( '' != $comment_content ) {

/* $filter 是需要过滤的关键词,关键词之间用分隔符 | 隔开即可。 */

$filter = '/

if (preg_match($filter,$comment_content,$matches)) {

$comment_content = strip_tags($comment_content);

}

}

return $comment_content;

}

效果截图:

B. 提出警告,禁止提交

add_filter('comment_text', 'filter_comment');

function filter_comment($comment_content) {

if ( '' != $comment_content ) {

/* $filter 是需要过滤的关键词,关键词之间用分隔符 | 隔开即可。 */

$filter = '/

if (preg_match($filter,$comment_content,$matches)) {

wp_die('警告:评论含有危险内容,已被拦截,请在更正后重试。');

}

}

return $comment_content;

}

效果截图:

C. 内容转义,允许提交

add_filter('comment_text', 'filter_comment');

function filter_comment($comment_content) {

if ( '' != $comment_content ) {

/* $filter 是需要过滤的关键词,关键词之间用分隔符 | 隔开即可。 */

$filter = '/

if (preg_match($filter,$comment_content,$matches)) {

$comment_content = htmlspecialchars($comment_content).'
(系统提示:评论含危险内容,已被转义处理。)';

}

}

return $comment_content;

}

效果截图:

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

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

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

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

php 跨站脚本攻击漏洞,PHP跨站脚本攻击(XSS)漏洞修复思路(二)相关推荐

  1. XSS跨站脚本攻击实例讲解,新浪微博XSS漏洞过程分析

    2011年6月28日晚,新浪微博遭遇到XSS蠕虫攻击侵袭,在不到一个小时的时间,超过3万微博用户受到该XSS蠕虫的攻击.此事件给严重依赖社交网络的网友们敲响了警钟.在此之前,国内多家著名的SNS网站和 ...

  2. xxs漏洞危害_反射型XSS漏洞详解

    反射型XSS漏洞 如果一个应用程序使用动态页面向用户显示错误消息,就会造成一种常见的XSS漏洞.通常,该页面会使用一个包含消息文本的参数,并在响应中将这个文 本返回给用户.对于开发者而言,使用这种机制 ...

  3. 漏洞复现篇——利用XSS漏洞实现多种网络钓鱼方法

    实验环境: PHPstudy 火狐浏览器 DVWA靶场 模拟实验: 重定向钓鱼 把当前页面重定向到一个钓鱼页面,例如重定向到百度,代码如下: <script>document.locati ...

  4. 漏洞复现篇——利用XSS漏洞实现键盘记录

    实验环境: PHPstudy 火狐浏览器.IE DVWA靶场 实验准备: 在www目录下创建一个名为keylog.php的文件,代码如下: <?php $file = fopen("k ...

  5. XSS(跨站脚本)漏洞详解之XSS跨站脚本攻击漏洞的解决

    XSS(跨站脚本)漏洞详解 XSS的原理和分类 跨站脚本攻击XSS(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆, ...

  6. 跨站脚本攻击之反射型XSS漏洞【转载】

    转载自FovWeb.com 如果一个WEB应用程序使用动态页面传递参数向用户显示错误信息,就有可能会造成一种常见的XSS漏洞.一般情况下,这种页面使用一个包含消息文本的参数,并在页面加载时将文本返回给 ...

  7. java反射行跨站脚本攻击_跨站脚本攻击之反射型XSS漏洞【转载】

    如果一个WEB应用程序使用动态页面传递参数向用户显示错误信息,就有可能会造成一种常见的XSS漏洞.一般情况下,这种页面使用一个包含消息文本的参数,并在页面加载时将文本返回给用户.对于开发者来说,使用这 ...

  8. xss 跨站脚本漏洞 php,跨站脚本漏洞(XSS)基础讲解

    XSS漏洞 一.文章简介 XSS漏洞是Web应用程序中最常见的漏洞之一.如果您的站点没有预防XSS漏洞的固定方法,那么很可能就存在XSS漏洞. 这篇文章将带你通过代码层面去理解三个问题: 什么是XSS ...

  9. WEB安全:XSS漏洞与SQL注入漏洞介绍及解决方案

    对web安全方面的知识非常薄弱,这篇文章把Xss跨站攻击和sql注入的相关知识整理了下,希望大家多多提意见. 对于防止sql注入发生,我只用过简单拼接字符串的注入及参数化查询,可以说没什么好经验,为避 ...

  10. xss漏洞学习心得(泪目)

    XSS学习心得大杂烩 背景 xss的定义 xss漏洞的分类 xss绕过技巧payload 常见的有: 绕过payload 背景 领导给了我一些资产让我去测试,发现其中藏有不少的xss漏洞,含泪做一个总 ...

最新文章

  1. 如何恢复matlab关联,恢复matlab文件关联
  2. 【GitLab】与idea的搭配
  3. poj 1250 解题(链表法)
  4. c语言分配飞机10个座位,leetcode1227(飞机座位分配)--C语言实现
  5. 【Elasticsearch】使用 Elasticsearch 的 44 条建议
  6. python分析数据走势_python数据分析应用 - 近5年八类资产价格走势分析
  7. matlab画图,想让子图使用不同的色标
  8. 没有计算机基础可以学python-学习第一天day1(计算机基础,及python基础)
  9. 第五次作业 第三章例题
  10. 第十一届河南省程序设计大赛----部分题解
  11. duet for Mac(Mac投屏软件)好用又不花钱
  12. AD转换及其相关背景知识
  13. java中钟摆运动的代码_仿真树叶飘落效果的实现(精灵旋转、翻转、钟摆运动等综合运用)...
  14. sigmoid二分类
  15. ps、firewords在win78中无法直接拖入的问题解决方法
  16. ojdbc6中的错误信息(中英) 【转】
  17. 1.有四个数字:1,2,3,4能组成多少个互不相同且无重复数字的三位数?各是多少?
  18. 域名纠错系统怎么解决
  19. 【数据库】从操作上描述 OceanBase 的高可用与容灾
  20. 应用数据流状态管理框架Redux简介、设计思想、核心概念及工作流

热门文章

  1. Mr. Panda and Fantastic Beasts(EC2016 后缀数组)
  2. Auditing SQL Server SQL Statements
  3. 阿里云数据库(hk)连接不上处理方法
  4. 第二本书:疯狂人类进化史20190621
  5. 学生用计算机计算分数,Excel案例(十三)——学生计算机成绩表
  6. 传奇地图文件MapInfo参数大全
  7. Android Studio连接夜神nox模拟器
  8. Unity Android 真机调试 + 夜神模拟器调试 + ADB Logcat
  9. c语言parse是什么意思英语,it/parse是什么意思
  10. java smart单点登录_SmartBi 单点登录的实现