XSS 跨站脚本攻击
个人理解:攻击者通过合法方式(如表单输入、URL自定义参数访问等)向web页面插入代码,实现获取cookie、篡改布局、页面重定向等攻击。
XSS分类:
1.反射型(非持久化):将恶意代码作为URL参数去访问。
2.存储型(持久化):通过发布文章或留言等表单输入提交方式将代码存储到服务器的数据库中(后台未作过滤的情况下)。每当用户访问使用这段代码的页面就会被攻击。
3.DOM型 个人理解可归入反射型,通过url执行恶意代码。
防御方式:
1.前端输入/后端返回字符串过滤后再使用,将html js特殊字符转实体。
2.cookie设置httponly禁止客户端通过js获取
3.尽量避免直接将字符串作为html js css代码使用
其他:
一些前端框架由于动态生成dom的原因(默认会进行转义),已经填补了大部分XSS漏洞,需要注意的是直出HTML代码的部分,如vue的v-html,react的dangerouslySetInnerHTML
可以使用xss插件过滤:XSS-根据白名单过滤HTML(防止XSS攻击)
参考文档:
前端的安全问题