2014-01-26 58 views
2

我想将django视图中的字典传递给JavaScript文件。该字典是由网站用户填充的数据库构建的。这两种方法在安全性方面有什么区别?从Django模板中跳出JSON数据的正确方法

  1. var mydata = JSON.parse("{{mydata|escapejs}}");

  2. var mydata = {{ mydata|safe }};

此外,doc at django说,这为escapejs这不会使字符串安全用于HTML使用。你能告诉我一个不安全的例子吗?&我该如何保证它安全。

+0

HTTPS:/ /djangosnippets.org/search/?q=json+filter –

+0

您能否详细说明将使用哪种数据?文本,数字,日期,(未)解析,(未)消毒等? – EWit

+0

它是文本和数字的混合。这是用户输入,需要谨慎对待。例如。 '{'fruit':['apple','banana'],'份':'2'}' – Medorator

回答

2

以下字典可以打破你的网页没有适当的转义:

{'x':'</script><b>HELLO</b>'} 

中的标签,你可以在你看来,比使用escpaejs保持安全json.dumps它。

(我相信的解释意味着,如果你想显示的HTML json.dumps输出,让我们在一个<pre>标签说,只要确保它不使用safeescapejs逃脱了。)

相关问题