网络编程
位置:首页>> 网络编程>> JavaScript>> jQuery模板提案(8)

jQuery模板提案(8)

作者:dishuipiaoxiang 来源:Denis'Blog 发布时间:2010-03-30 18:27:00 

标签:jquery,模板,Javascript,对象

HTML插入

默认情况下,数据项在模板中被渲染时不会被HTML编码。如果你在一个模板中显示用户提交的数据,那么恶意用户就能够执行跨站点脚本攻击(XSS)。

注意下面代码中第一个产品的名字,第一个产品包含一个没有任何恶意的onClick事件处理程序,当数据项显示,有人点击了产品名字,JavaScript得到执行。

<script type="text/javascript">
jQuery(function(){
  var products = [
        { name: "<a onclick='alert(\"do evil\")'>click here</a>", price: 12.99},
        { name: "Product 2", price: 9.99},
        { name: "Product 3", price: 35.59}
  ];
  $("ul").append("#template", products);
});
</script>
<script id="template" type="text/html">
 <li>{%= name %} - {%= price %}</li>
</script>
<ul></ul>

为了很容易的在一个模板中给要显示的数据进行HTML编码,使你免遭这种XSS的进攻,可以使用一个名为text()的内置函数。text()函数将一个数据项转换成文本节点。这里告诉你如何使用text()函数。

<script type="text/javascript">
jQuery(function(){
  var products = [
        { name: "<a onclick='alert(\"do evil\")'>click here</a>", price: 12.99},
        { name: "Product 2", price: 9.99},
        { name: "Product 3", price: 35.59}
  ];
  $("ul").append("#template", products);
});
</script>
<script id="template" type="text/html">
 <li>{% text(name) %} - {%= price %}</li>
</script>
<ul></ul>

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com