XSS攻击防御
xss攻击一直是令web应用开发人员非常头疼的一个问题,因为web应用中包含大量的html和js内容,经常容易忽略某些细微的位置导致留下xss漏洞.
leap的安全模块已经考虑到这个问题了,并且做了非常简便的处理,可以让使用leap的开发人员完全不需要关注xss攻击的问题而专注于应用业务开发.
leap的模板引擎会对所有的渲染表达式的输出进行特殊字符转义,让所有XSS攻击失效,举例如下:
假设我们有一段模板如下:
<div>${value}</div>
在正常的用户输入情况下,这段代码并没有问题,但是,假设用户输入的内容是一段js代码:
<script type="text/javascript">
alert('1');
</script>
如果我们没有做任何处理的话,这里输出的结果是:
<div>
<script type="text/javascript">
alert('1');
</script>
</div>
这个时候攻击者就可以通过这段js代码做各种事情了,这是非常危险的事情,但是如果开发人员每个地方都要去注意这种攻击代码校验的话,又是非常麻烦的事情,这里leap已经为开发人员提供了一个非常简单的解决方案:自动转义,通过htpl模板引擎输出的最后终结果如下:
<div><script type='text/javascript'>alert('1');</script></div>
所有的特殊字符都被转义了,所以用户输入的恶意代码也就无法执行了.
但是在实际应用中,我们也存在某些位置确实是需要输入代码脚本的,这种情况leap自然也考虑到了,如果不希望htpl对输出内容进行XSS防御的话,可以采用如下表达式:
<div>${value;escape:off}</div>
此时htpl将不再对这个表达式进行转义.