-
Notifications
You must be signed in to change notification settings - Fork 250
/
DOM型跨站脚本
31 lines (31 loc) · 1.23 KB
/
DOM型跨站脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
DOM型跨站,来自用户输入的字符串通过JS生成HTML标签的方式被直接输出到客户端。
<b>修复建议</b>
使用跨站修复函数处理输出到客户端的数据字符串。
<b>修复示例</b>
如:
<pre>
<script type="text/javascript">
String queryString = Window.Location.getQueryString();
int pos = queryString.indexOf("eid=")+4;
HTML output = new HTML();
output.setHTML(queryString.substring(pos, queryString.length()));
</script>
</pre>
修复为:
<pre>
<script type="text/javascript">
function xss_escape(str,reg){
returnstr ? str.replace(reg ||/[&<">'](?:(amp|lt|quot|gt|#39|nbsp|#\d+);)?/g,function (a, b){
if(b){
return a;
}else{
return{ '<':'&lt;', '&':'&amp;', '"':'&quot;', '>':'&gt;', "'":''', }[a]
}
}): '';
}
String queryString = Window.Location.getQueryString();
int pos = queryString.indexOf("eid=")+4;
HTML output = new HTML();
output.setHTML(xss_escape (queryString.substring(pos, queryString.length())));
</script>
</pre>