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转义:
< 转成 <
> 转成 >
2、xss白名单:借助第三方成熟的xss转移工具
3、设置http的httpOnly属性,不允许前端通过js获取cookie内容
4、浏览器csp
5、验证码: 防止脚本冒充用户
总结:所以不要觉得xss攻击预防都是后端的事情,前端也需要扮演一定的角色哦。