外贸站宝塔面板防XSS跨站脚本攻击
外贸站点因为面向海外用户,经常需要接收表单、评论或用户输入,如果没有做好防护,很容易被植入XSS跨站脚本攻击脚本,导致信息泄露或后台被控制。
本文带你直接在宝塔面板后台完成防护配置,不需要自己改代码,零基础也能照做。
配置前需要确认的条件
- 宝塔面板已安装并登录(版本不限,本文以7.x为例)。
- 外贸站点已添加并正常访问。
- 面板上的 Nginx 或 Apache 已启用(推荐Nginx)。
- PHP版本建议7.4以上,但非必须。
开启宝塔防火墙并加载XSS规则
宝塔面板自带的Nginx防火墙(简称WAF)可以拦截常见Web攻击,包括XSS。
操作路径:
- 登录宝塔面板,点击左侧菜单 软件商店。
- 找到 Nginx防火墙(如果是Apache环境,则使用Apache防火墙),点击安装或已安装后的 设置。
- 进入防火墙页面后,先确保 总开关 为开启状态。
- 点击 规则管理 -> 全局规则,找到“XSS跨站脚本攻击”对应的规则集,确认勾选并启用(一般默认开启)。
如果规则列表中没有专门的XSS分类,也可以直接勾选“基础防护”下的“SQL注入与XSS拦截”规则(多数版本已内置)。
添加自定义规则拦截可疑参数
有些XSS变种(如通过URL编码、大小写绕过)可能被默认规则漏掉,可以手动添加自定义拦截规则:
- 在防火墙设置页,切换到 自定义规则 页签。
- 点击 添加规则。
- 规则类型选择 请求参数(GET/POST),匹配方式 正则匹配。
- 输入正则表达式,例如拦截常见的
标签:
(
- 动作选择 拦截,优先级填 99,描述写“XSS关键字拦截”。
- 点击保存。
注意:正则不宜写得太宽,否则可能误伤正常提交(比如评论里包含JavaScript技术文章)。建议先观察日志,再逐步放宽或收窄。
配置URL白名单避免误拦
外贸站点可能有正常业务需要接收HTML代码(如富文本编辑器内容),这时需要给特定URL加白名单:
- 回到防火墙首页,点击 URL白名单。
- 添加需要放行的路径,例如
/article/submit或/api/editor。 - 白名单模式建议选择 完全放行(该URL不经过任何规则检测)。
如果只是部分参数放行,可以在自定义规则里用“排除”动作,但新手直接加URL白名单最稳妥。
验证防护效果
完成配置后,可以用测试语句检查规则是否生效:
- 打开外贸站的一个公开页面(如联系表单)。
- 在表单输入框中提交
。 - 如果防火墙拦截成功,你会看到宝塔防火墙返回的拦截页面(403状态码),并提示“请求被防火墙拦截”。
- 也可以查看防火墙的 攻击记录,确认是否有拦截日志产生。
高频问题与避坑
Q:开启防火墙后,网站正常用户无法提交数据了?
A:大概率是自定义规则过严,或误拦了正常POST请求。先关闭自定义规则,逐步添加排除。建议先开启全局基础规则运行一两天,无问题再开启自定义规则。
Q:Nginx防火墙和Apache防火墙选哪个?
A:根据你站点环境。Nginx防火墙性能更好,推荐使用。如果站点是Apache环境,则安装Apache防火墙,配置方法类似。
Q:外贸站需要额外做CDN防御吗?
A:宝塔面板防火墙主要防御应用层攻击,如果你使用了Cloudflare等CDN,可以在CDN侧也开启WAF规则,双重防护。
避坑提醒:
- 不要同时启用多个WAF(如CDN WAF + 宝塔WAF),容易导致规则冲突或请求超时。建议只用一个做主要拦截。
- 测试XSS payload时不要用真实用户账号或生产数据,最好在测试环境或非高峰时段操作。
- 定期查看防火墙日志,关注是否有正常业务被误拦,及时调整白名单。
完成以上步骤,你的外贸站就被宝塔面板保护起来了,XSS攻击流量会被有效拦截。
如果你发现个别变种依然能通过,可以搜索“宝塔WAF自定义规则XSS变种”进一步补充规则。