ThinkPHP6 预防XSS攻击的一点小建议
攻击 建议 预防 一点 XSS ThinkPHP6
2023-06-13 09:12:43 时间
- 背景
前几天,我们线上项目,出现一些恶意攻击行为;
基本就是恶意用户在一些接口开放的参数上,
填写了类似
<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>
两边的标签,类似微博过滤效果