XSS攻击

880 阅读2分钟

XSS叫做跨站脚本攻击,在很早之前这种攻击很常见,2010年数据统计的时候还是排名第二的web安全威胁。在从事前端之后,还没有见过哪个网站会被XSS攻击过,当然,也从来没去各个网站尝试过。

XSS说起来也简单,就是让网页html出现script标签,从而执行内部的代码,获取一些用户信息,包括cookie、storage等,然后通过这些信息以被攻击的用户身份去进行一些操作。

XSS可以分为三种类型:

反射型XSS(也叫非持久型):有些网页是通过地址传参,然后又把参数传递到页面,这种情况下,通过参数传递,然后返回之后就执行中间的代码,从而进行攻击。这种一般都是一次性的,就是通过链接注入。

DOM XSS:通过一些不同场景,改变DOM的属性,注入,比如我们添加网络图片的功能,原本代码是:,我们一般是通过设置src=’xxx’,如果我们xxx输入的是" onerror="alert(1),结果就变成,于是就被攻击了。包括a链接也是可以通过设置src的时候这样操作。这是纯前台攻击,不经过后端。

存储型XSS(也叫持久型):通过一些评论或者文章,发布之后存储到服务器,不同用户请求回来的都是这种脚本,这种攻击会一直存在,有很强的稳定性,因为是记录在数据库里面。

其实到了现在,这种攻击很少能生效了,我还特地去掘金、csdn、简书评论试了下,并不会造成攻击。但是还是需要防范。

现在很多浏览器内置了防范XSS的模块,我们也可以通过一些方案防止:

客户端校验数据,通过转义等方法过滤特殊的字符或者直接去除特殊的字符。服务端存储的时候进行一次过滤,跟前端做的类似。服务端或者前端输出的时候,渲染到页面的时候也进行过滤。如果服务端设置cookie的时候设置httponly等。简单来说就是处理特殊字符。

其实XSS攻击就是通过执行js代码,当然,通过什么方法注入到你的页面或者你触发这些方法就不一定了。觉着这个攻击了解了解就够了,到现在还没遇见需要对XSS进行处理的项目。