xss (cross site scripting) 跨站脚本攻击
分类:
- 反射型(url直接注入)
一般会转为短网址,消除可疑。
- 存储型(存储到DB后读取时注入)危害较大!
例如在评论区的内容中加入<script>alert</script>,提交后被存储在数据库中,其他用户一旦进入就会遭到攻击。
攻击注入点:
- 节点内容:
<div>
#{content}
</div>
<div>
<script>
</script>
</div>
复制代码
- html属性
<img src="#{image}" />
<img src="1 " onerror="alert(1) " />
复制代码
- javascript代码
<script>
var data = "#{data}";
var data = " hello";alert(1);" ";
</script>
复制代码
- 富文本(例如QQ邮箱)
富文本需要保留html,而html有被攻击的风险
xss如何进行防御?
- 浏览器自带的防御
只能防御前两种。
- 转义
var escapeHtml = function(str) {
str = str.replace(/&/g, '&');
str = str.replace(/</g, '<');
str = str.replace(/>/g, '>');
str = str.replace(/"/g, '"o;');
str = str.replace(/'/g, ''');
str = str.replace(/ /g, ' ');
return str;
}
复制代码