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>&lt;script type=&#39;text/javascript&#39;&gt;alert(&#39;1&#39;);&lt;/script&gt;</div>

所有的特殊字符都被转义了,所以用户输入的恶意代码也就无法执行了.

但是在实际应用中,我们也存在某些位置确实是需要输入代码脚本的,这种情况leap自然也考虑到了,如果不希望htpl对输出内容进行XSS防御的话,可以采用如下表达式:

<div>${value;escape:off}</div>

此时htpl将不再对这个表达式进行转义.

results matching ""

    No results matching ""