XSS定义
跨站脚本攻击(XSS)是指攻击者通过在网页中注入恶意脚本 srcipt ,进而在用户浏览该网页时执行恶意脚本
,从而窃取用户信息、篡改网页内容等。总之:安全无小事,需要前后端等同学都预防,默认不信任数据
。
不安全的数据来源
- 假设来源不一定安全,那么需要进行转义。
- URL查询参数
- 后台数据库(接口)返回值
- 用户在当前页面的输入内容
- 假设来源安全(内存临时变量),那么大概率安全,也要进行判断。
一、HTML相关
1、避免使用.innerHTML
和 .outerHTML
当从URL查询参数中取值并未经过转义处理直接使用时,攻击者可以在URL中添加恶意脚本,使其在用户访问时被执行。
<div id="content"></div>
<script>
var content = document.getElementById("content");
var name = new URLSearchParams(window.location.search).get("name");
content.innerHTML = "Hello, " + name;
// 解决办法:使用`.innerText`或`.textContent`替代`.innerHTML`和`.outerHTML` 或者其他转义方法
</script>