XSS 全称是跨站脚本攻击
通过代码注入
的方式来达到攻击的目的。
xss攻击是有一定前提的,
1、服务器渲染,用户录入的内容直接由服务端拼接到页面中且未做特殊字符转译操作
2、<script>xxxx</script>这种录入攻击只能基于将文本解析由element.createElement生成dom
3、<a href="javascript:alert(2)" >我是个链接</a> 这种形式基于innerHtml或者经过文本解析由element.createElement生成dom
防御方式:
1、使用innerText
2、字符转译
& 替换为:& < 替换为:< > 替换为:> ” 替换为:" ‘ 替换为:' / 替换为:/
<a href="{{xss}}">点我a>(vue)
链接中如果存在 javacript: 开头的协议,点击链接时浏览器会执行后面的代码。
这个时候光转义是没有用的,需要对 url 协议进行白名控制
,只允许 http, https, http, mailto
等安全协议
3、CSP(Content Security Policy)
原文:https://www.cnblogs.com/zale-blogs/p/12104539.html