Smarty模板引擎XSS漏洞的出现与防范分享
来源:互联网 发布:无线传感器网络的特点 编辑:程序博客网 时间:2024/06/05 18:49
原文地址:google的网页快照
--------
Smarty模板引擎XSS漏洞的出现与防范分享
简单来说,在使用模板变量输出源码时,忽略了本该转义的url、html或js,若变量的值包含特殊格式或攻击者人为构造出特殊格式时出现。
若这些模板变量:
1.未进行url转义①
示例:
常见模板变量出现场景
源码
a标签的hred属性内
<a href=”http:/mysite.com/{{$vars}}”></a>
iframe、img、script、link等标签的src属性中
< img src=” http:// mysite.com/{{$vars}}”/>
js代码的被当做url使用的变量中
var url = ‘http:// mysite.com/{{$vars}}’
2.未进行html转义:②
示例:
常见模板变量出现场景
源码
title标签内
<title>{{$user}}的个人中心</title>
Input的value值
< input value=” {{$user}}”/>
3.未转义的js变量:③
示例:
常见模板变量出现场景
源码
页面内联script标签内的js 变量
var a = ‘{{$a}}’
页面内dom元素0级事件内
<div onclick=”someFunction({{$param}})”>
在异步所使用的模板中
{{$callback}}{ {{$obj}} }
4.需要先进性html转义,后进行js转义:④
示例:
常见模板变量出现场景
源码
页面内联script标签内的js 语句内,后续将插入页面
dom.innerHTML = “{{$vars}}”;或
document.write(“{{$vars}}”)
5.需要先进性js转义,后进行html转义:⑤
示例:
常见模板变量出现场景
源码
页面内dom元素0级事件内方法的参数
<div onclick=”someFunction({{$param}})”>
防治办法
根据上面的红色标记,主要采取下表的防治办法:
类型
smarty转义
其他
① 进行url转义
{{$var|escape:”url”}}
类似于js内的encodeURIComponent,整体转义
转义字符:转义了除 ! ‘ ( ) * – . _ ~ 0-9 a-z A-Z 之外的所有字符,它们被转换成了各自对应的16进制的转义序列,中文字符在不同charset下得到的结果不一样
② 进行html转义
{{$var|escape:”html”}}
Tangarm提供了一个利用js转义的方法baidu.string.encodeHTML,在利用js生成html模板时内部的变量可用
转义字符:smarty提供的方法转义了< > ‘ “4个字符,一般转义这4个即可,tangram提供的方法还多转义了 & 字符,一共转义了5个字符
③ 进行js转义
{{$var|escape:”javascript”}}
转义字符:’ ” / n r
④ 先进行html后进行js转义
{{$var|escape:”html”|escape:”javascript”}}
实际上最终转义了字符:
“<” 转成 “<”
“>” 转成 “>”
“’” 转成 “’”
“”” 转成 “””
“” 转成 “\”
“/” 转成 “/”
“n” 转成 “n”
“r ”转成 “r”
⑤ 先进行js后进行html转义
{{$var|escape:” javascript “|escape:”html”}}
实际上最终转义了字符:
“<” 转成 “<”
“>” 转成 “>”
“&” 转成 “&”
“’” 转成 “'”
“”” 转成 “"”
“” 转成 “\”
“/” 转成 “/”
“n” 转成 “n”
“r” 转成 “r”
高级
1使smarty默认转义:在显示页面前先执行$smarty->default_modifiers = array(‘$’ => ‘escape:”html”‘);则所有的$开头的smarty变量都默认转义了,若需要取消转义,则对无需转义的变量使用{{$var|smarty:nodefaults}}
2同域下的异步操作:尽量采用ajax的方式,少使用插入script标签的方式,可以减少因为callback函数名未转义而出现的xss漏洞
3请服务器端将json类型的数据Response的hearer 的contentType设置为“application/javascript”
- Smarty模板引擎XSS漏洞的出现与防范分享
- php的smarty模板引擎
- Smarty模板引擎的使用
- Smarty模板引擎的使用
- Smarty模板引擎的安装
- ASP.Net防范XSS漏洞攻击的利器HtmlSanitizer
- php模板引擎smarty的安装与使用
- smarty模板引擎_9-Smarty模板的继承特性
- smarty模板引擎_10-Smarty模板的缓存
- php Smarty模板引擎配置与测试
- php Smarty模板引擎配置与测试
- 【smarty模板引擎】smarty模板引擎教程
- 类似于smarty之类的模板引擎的模板引擎原型
- 类似于smarty之类的模板引擎的模板引擎原型
- web安全防范之XSS漏洞攻击
- xss的防范要点
- XSS攻击的防范
- XSS攻击的防范
- [MySQL]查询
- 64位windows7 上安装32位oracle 10g 的方法
- Android tabHost 刷新Activity
- RTMP流媒体技术零基础学习方法
- 国嵌消息队列实验代码解析
- Smarty模板引擎XSS漏洞的出现与防范分享
- 一双跑鞋的mybatis(六)---使用generator自动生成mybatis映射代码
- 我对j2ee的认识
- .net yield关键字
- Android 关于获取摄像头帧数据解码
- Makefile中的wildcard用法
- Ubuntu编程->实用工具小结
- spring mvc静态资源处理
- js实现图片拖动改变顺序