输入的参数,必须经过转码才能输出到页面上,如果不经转换而原样直接输出到页面上,则会产生XSS漏洞。
比如:在输入框,输入姓名“张三confirm(123)”
如果直接在页面上输出的话,就会弹窗显示123,其实就是执行了用户设定的js操作了,这就产生了xss漏洞。
xss漏洞很好预防,只要在参数输出时转码就行了。
预防方式,只要输出时做处理:
(1)jstl:<c:out value="${name}" escapeXml="true"/>
(2)EL: ${fn:escapeXml(param)}
(3)工具类:org.apache.commons.lang.StringEscapeUtils.escapeXml(String)。
实质就是转换如下特殊字符:> , < , & , ", '
另外,重点注意区别
xml转义字符([b]包含了单引号[/b]):
< < 小于号
> > 大于号
& & 和
' ' 单引号
" " 双引号
html转义字符:
< 小于 <
> 大于 >
& &符号 &
" 双引号 "
© 版权 ©
® 已注册商标 ®
™ 商标(美国) ™
× 乘号 ×
÷ 除号 ÷
比如:在输入框,输入姓名“张三confirm(123)”
如果直接在页面上输出的话,就会弹窗显示123,其实就是执行了用户设定的js操作了,这就产生了xss漏洞。
xss漏洞很好预防,只要在参数输出时转码就行了。
预防方式,只要输出时做处理:
(1)jstl:<c:out value="${name}" escapeXml="true"/>
(2)EL: ${fn:escapeXml(param)}
(3)工具类:org.apache.commons.lang.StringEscapeUtils.escapeXml(String)。
实质就是转换如下特殊字符:> , < , & , ", '
另外,重点注意区别
xml转义字符([b]包含了单引号[/b]):
< < 小于号
> > 大于号
& & 和
' ' 单引号
" " 双引号
html转义字符:
< 小于 <
> 大于 >
& &符号 &
" 双引号 "
© 版权 ©
® 已注册商标 ®
™ 商标(美国) ™
× 乘号 ×
÷ 除号 ÷