XSS漏洞的出现与防范分享
3077 点击·0 回帖
![]() | ![]() | |||||||||||||||||||||||||||||||||||||||||
![]() | 出现情况 简单来说,在使用模板变量输出源码时,忽略了本该转义的url、html或js,若变量的值包含特殊格式或攻击者人为构造出特殊格式时出现。 若这些模板变量: 1.未进行url转义① 示例:[table][tr][td=1,1,262] 常见模板变量出现场景 [/td][td=1,1,302]源码 [/td][/tr][tr][td=1,1,262]a标签的hred属性内 [/td][td=1,1,302]<a href=”http:/mysite.com/pw_$vars”></a> [/td][/tr][tr][td=1,1,262]iframe、img、script、link等标签的src属性中 [/td][td=1,1,302]< img src=” http:// mysite.com/pw_$vars”/> [/td][/tr][tr][td=1,1,262]js代码的被当做url使用的变量中 [/td][td=1,1,302]var url = ‘http:// mysite.com/pw_$vars’ [/td][/tr][/table]
2.未进行html转义:② 示例:
3.未转义的js变量:③ 示例:
4.需要先进性html转义,后进行js转义:④ 示例:
5.需要先进性js转义,后进行html转义:⑤ 示例:
防治办法 根据上面的红色标记,主要采取下表的防治办法:
高级 1使smarty默认转义:在显示页面前先执行$smarty->default_modifiers = array(‘$’ => ‘escape:”html”‘);则所有的$开头的smarty变量都默认转义了,若需要取消转义,则对无需转义的变量使用pw_$var|smarty:nodefaults 2同域下的异步操作:尽量采用ajax的方式,少使用插入script标签的方式,可以减少因为callback函数名未转义而出现的xss漏洞 3请服务器端将json类型的数据Response的hearer 的contentType设置为“application/javascript” | |||||||||||||||||||||||||||||||||||||||||
![]() | ![]() |