查看文章
 
OWASP ESAPI for Javascript
2010-01-19 14:36
前几天OWASP ESAPI 4 JS 发布了:

http://code.google.com/p/owasp-esapi-js/

本来我和luoluo正准备搞个相关的议题,PPT写了一半,然后ESAPI 4 JS 发布了,让我们准备的topic失色很多。

还是关于 DOM Inserted Based XSS 的问题,以前我在blog上曾经写过一点:

Javascript的输入输出,以及二次渲染问题

这方面的解决方案原本是一项空白,因为很多input filter 或者 output encode 都没有找到出错的本质,从理论上来说,这些修补方案都会存在问题,包括 OWASP Anti XSS Cheat Sheet 中提到的那些方案


我们的解决方案:
第一种:类似 ESAPI 4 JS 的原理,在JS的层面,输出到html时再次根据不同情况作encode。以前luoluo写过一个类似的js lib,还集成到了taobao的js框架中。不过没这次ESAPI发布的这个js lib好。

第二种:使用QQ(client里)使用的那种基于js的template系统,示范代码如下:

var _tpl = MPT.j(['<form id="link" action="$forward$" method="get" target="_blank">', '<input type="hidden" name="ptlang" value="$ptlang$" />', '<input type="hidden" name="clientuin" value="$clientuin$" />', '<input type="hidden" name="clientkey" value="" />', '<input type="hidden" name="gid" value="$gid$" />', '<input type="hidden" name="type" value="102" />', '<input type="hidden" name="uri" value="" />', '<input type="hidden" name="dummy" value="1" />', '</form>']);

$('body').append(_tpl.replace({
            ptlang: this.dp.ptlang,
clientuin: this.dp.clientuin,
gid: this.dp.gid,
forward: this.dp.forward

}));


好处是代码清晰可读。


既然 ESAPI 4 JS 发布了,我们的议题可能就杯具了,所以就先写篇blog吧!

类别:象牙塔||添加到搜藏 |分享到i贴吧|浏览(1578)|评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
     

   
帮助中心 | 空间客服 | 投诉中心 | 空间协议
©2012 Baidu