基于前端思考XSS攻击

131 阅读2分钟

在学习编程之前,一直对黑客技术很感兴趣,感觉很酷,所以也从杂志上了解了一些,五一整理之前买的杂志,发现了之前收集的关于XSS的介绍,所以从新整理了一下,分享给大家,还请各位大佬多多指点。

XSS攻击

XSS是Cross-site scripting的缩写,翻译成中文就是跨站脚本攻击,这里有一个小梗,就是Cross-site scripting的缩写本来应该是CSS,但是又和HTML当中的CSS层叠样式有重复,所以就缩写成了XSS。

XSS的攻击原理很简单,就是利用各种方式将JS代码嵌入到前端的页面当中,在其他用户访问这个页面的时候,浏览器解析到嵌入的JS代码,从而达到自己的目的,比如:盗用cookie,广告刷浏览器,网络调用,放马挖矿。

当然聊到这里,可能有小伙伴会问哪些方式可以将代码嵌入到前端页面当中,(嘿嘿嘿),比如:在用户发表文章或者评论的地方发布js脚本,导致脚本内容存储在服务端,之后,其他用户访问,这段代码被服务端渲染到页面,浏览器执行,导致XSS攻击成功。比如,在发表评论的地方不发表评论,而是发表下面的JS代码:

<script>
    window.location.href="http://www.xss刷点击率.com"
</script>

那么如果没有其他的措施,再次刷新页码,这段代码被浏览器解析,可能就跳走了。

基于前端的XSS防御

那么基于前端,有没有XSS防御的策略呢,那聊聊作者见过的一些方法:

1、前端对提交后端的代码进行js转义,防止链接等信息传入后端,比如:

str = str.replace(/\/g,'\\');

当然,实际工作当中XSS过滤机制要复杂很多,我们之后细聊。

2、采用XSS插件,这个就不举例了,有套路:

(1)npm安装

(2)require导入

(3)读官网使用

思考

XSS攻击攻击手段多,发起攻击简单,更多考量的是前端,后端,服务的对代传递数据的校验,所以作为一个程序员,一个好习惯就是要对上下游的数据做晚上的校验过滤,这个校验过滤包括:数据规范,严谨性,安全性,效率等等,缺一不可。