我们在看使用前台过滤script脚本的时候使用到了xss.js,在它的官方文档中写了这样的一段使用说明:
在浏览器端使用
Shim模式(参考文件 test/test.html
):
<script src="https://raw.github.com/leizongmin/js-xss/master/dist/xss.js"></script>
<script>
// 使用函数名 filterXSS,用法一样
var html = filterXSS('<script>alert("xss");</scr' + 'ipt>');
alert(html);
</script>
如果按照这段使用说明来测试这个短代码的时候是会报如下的错误,
Refused to execute script from 'https://raw.githubusercontent.com/leizongmin/js-xss/master/dist/xss.js' because its MIME type ('text/plain') is not executable, and strict MIME type checking is enabled.
这个是因为你没有给type类型没写或者是写错了,按提示应给成text/plain的类型,但是修改过来,你以为就可以了,你想错了!
但是经过测试,即使这里不报错了可以正常加载了但是使用它的filterXss的方法的时候还是会报错,
Uncaught ReferenceError: filterXSS is not defined
at new_file.html?__hbt=1562816031213:12
说你的这个filterXss的方法没有定义,这个应该还是没哟加载xss.js
原本想直接就引用它的js了,省的还得访问自己的静态资源,节省带宽,也许人家的访问速度比咱还快,最后还是被现实给打败了,不能用啊!
所以我最后把他js_xss的项目从git下载下来,直接从它的项目中拷贝一份js放在自己的项目中,然后再想一开始那样引用就没有问题了
当然了,我认为光从前端过滤xss攻击还是不可以的,当他给你通过接口直接提交参数的时候你的前端xss就不会过滤,
所以还是需要在后端加一层xss过滤,前端设置只是为了减少后端的过多操作。