xss攻击

548 阅读2分钟

xss(cross site script):翻译过来就是“跨域脚本”攻击,她是网络安全中比较常见的一种威胁。请注意它的关键词:script,通过一个例子,带你立刻了解什么是xss。

页面某个div显示如下内容

<div><%= getParams(name) %></div>

后端通过getParams方法获取url中携带的传参name的值,并在前端进行展示。

如果我们在url中输入http://getData?name="><script>alert('XSS');</script><"

那么getParams实际将返回<div><script>alert('XSS');</script></div>

此时,前端div就被注入了恶意的script脚本。

说白了,xss就是通过注入恶意的脚本,通过html拼接, 构造出如script这样的脚本标签,获取用户浏览器中的用户登录信息(如cookie)。

xss攻击可以归纳为三种类型:DOM型、反射型和存储型。

1、DOM型:通常为前端js的锅,比如上面的例子,getParams是在前端js脚本中实现。

2、反射型:通常通过url传给后端,后端通过解析,返给前端,如上面的例子。

3、存储型:这个更好理解了,将xss风险的脚本通过前端提交到后端,并保存到数据库。等到下次用户访问页面调用存储的脚本,就将形成xss攻击。

理解了xss攻击形成的原理和常见场景,我们才能针对性地采取措施,进行预防(xss预防方法有多种,需要考虑具体情况。生搬硬套,有时反而给网页带来负面效果)。

1、html转义:

<  转成 &lt
>  转成 &gt

2、xss白名单:借助第三方成熟的xss转移工具

3、设置http的httpOnly属性,不允许前端通过js获取cookie内容

4、浏览器csp

5、验证码: 防止脚本冒充用户

总结:所以不要觉得xss攻击预防都是后端的事情,前端也需要扮演一定的角色哦。