2014-01-26 62 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逃脫了。)

相關問題