这个问题大概率来源是跨站脚本攻击( XSS )。
先从加载的位置删除这个脚本,这个是缓解措施。然后在后端加输入过滤,尤其是涉及数据库操作和直接返回外部输入的。从输入中转义掉 html 标签,双引号、实体编码等字符。
还有开启一些全局的 XSS 防御配置项,比如 Spring 框架可以开启全局 xss 防护和 csp 限制 javascript 脚本的加载来源:
@
Configurationpublic class SecurityConf {
@
Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.headers()
.xssProtection()
.and()
.contentSecurityPolicy("script-src 'self'");
return
http.build();
}
}
当然 csp 也包含一些其他的安全策略,可以参考 MDN 的官方文档:
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CSP另外就是前端不要拼接原生 html ,如果需要自定义 html 的,用白名单标签做防御,白名单以外的标签转移掉