-
背景
前几天,我们线上项目,出现一些恶意攻击行为;
基本就是恶意用户在一些接口开放的参数上,
填写了类似<script>alert('搞事情');</script>
的代码,从而影响网站的正常访问 -
分析
这是典型的 XSS 攻击行为
最简单的处理方式,就是过滤处理请求参数
比如,替换掉"<script>"、"<img>"
标签等
或者在请求类中 添加过滤方式:htmlspecialchars
解决方案
- 第 ① 种简单方式(不建议,可能造成很多字符转义,影响代码处理逻辑):
在请求处理类文件
app\Request.php
中,添加htmlspecialchars
过滤方式
效果:htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。
- 第 ② 种方式(推荐):
找到框架文件
vendor/topthink/framework/src/think/Request.php
的方法filterValue()
, 添加过滤代码
//代码
$value = preg_replace("/<(\/?script.*?)>/si","",$value);
效果:会替换掉
<script >...</script>
两边的标签,类似微博过滤效果