Secur1ty just lik3 a girl. B0th of th3m h4ve s0me h0les. Y0u alw4ys try to t0uch the h0le, but n0t 3very tim3 y0u c4n 3xpl0it it!
查看文章 |
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吧! |
最近读者:

