宝塔面板检测到网站存在跨站脚本漏洞时,说明网站没有对用户输入的内容做有效过滤,攻击者可以通过提交恶意脚本代码,在用户访问页面时执行这些代码,造成用户信息泄露、页面被篡改等问题,需要尽快完成修复。

方案一:开启宝塔面板WAF应用防火墙
宝塔面板自带的WAF应用防火墙可以直接过滤常见的跨站脚本注入请求,操作步骤如下:
1. 进入WAF配置页面
登录宝塔面板,在左侧菜单栏找到软件商店,搜索宝塔WAF,如果已经安装直接点击设置,未安装则先完成安装再进入设置页。
2. 开启防护并配置规则
在WAF设置页的全局设置中,将防护状态切换为开启,然后根据网站程序类型调整防护规则:
- 如果是PHP程序,开启
PHP防护和XSS防护规则 - 如果是Java或者Python程序,勾选
通用注入过滤选项 - 可以设置
拦截提示页,避免拦截后用户看到空白页面
3. 针对单个网站配置规则
如果需要给单个网站单独设置规则,可以切换到站点配置标签,选择对应的网站域名,开启独立防护,还可以添加自定义过滤规则,比如拦截包含<script>、javascript:的请求参数。
以下是WAF规则配置的参考示例,用于过滤常见的XSS注入关键词:
# 自定义XSS过滤规则 rule_name = "xss_filter" match_field = "args,body" match_pattern = "(?i)<script.*?>|javascript:|onerror=|onclick=" action = "block"
方案二:安装防篡改系统过滤注入
防篡改系统可以从文件层面阻止恶意脚本的写入,同时过滤动态请求中的注入内容,操作步骤如下:
1. 安装防篡改插件
在宝塔面板软件商店中搜索防篡改系统,完成安装后点击设置进入配置页。
2. 配置防护目录和规则
在防护目录中添加网站的根目录,勾选实时防护和注入过滤选项,系统会自动监控目录下的文件变化,阻止恶意脚本文件被写入。
3. 开启动态请求过滤
在高级设置中开启请求内容过滤,设置过滤规则,拦截包含恶意脚本的请求参数,同时可以开启访问日志,方便后续排查攻击来源。
代码层面临时修复方法
如果暂时无法调整面板配置,可以先修改网站代码做临时防护,以PHP程序为例:
对所有用户输入的参数使用htmlspecialchars函数转义,避免恶意脚本被解析执行:
<?php // 接收用户输入的参数并转义 $user_input = $_GET['content'] ?? ''; // 转义特殊字符,防止XSS注入 $safe_input = htmlspecialchars($user_input, ENT_QUOTES | ENT_HTML5, 'UTF-8'); // 输出到页面 echo $safe_input; ?>
如果是Java程序,可以使用ESAPI库对输出内容做编码处理:
import org.owasp.esapi.ESAPI;
public class XssFilter {
public static String safeOutput(String input) {
// 使用ESAPI编码输出内容,防止XSS
return ESAPI.encoder().encodeForHTML(input);
}
}
修复后验证方法
完成修复后,可以通过以下方式验证漏洞是否修复成功:
- 在网站表单中提交测试内容
<script>alert(1)</script>,如果页面没有弹出提示框,说明过滤生效 - 查看宝塔WAF或者防篡改系统的拦截日志,确认恶意请求被成功拦截
- 使用漏洞扫描工具重新扫描网站,确认跨站脚本漏洞提示消失
日常运维中建议定期更新网站程序和宝塔面板版本,同时开启WAF和防篡改系统的自动规则更新,持续保障网站安全。