2011-03-19 66 views
1

我從Windows 7 Gadget中提取一些外部JSON數據,這基本上是一個運行在具有高安全特權的Internet   Explorer中的JavaScript塊。因此,我想確保JSON的格式正確並且不是惡意的。有沒有一種用JavaScript驗證JSON輸入的安全方法?

這樣做的好方法是什麼?

+0

只要你不嘗試在驗證過程中執行任何事情,它應該沒問題。不要使用代碼執行來測試有效性(即如果它運行,它是有效的;否則不是)。 – BoltClock 2011-03-19 22:09:44

+2

只需使用json2.js http://www.json.org – kjy112 2011-03-20 00:10:50

回答

1

使用JSON.parse(jsonString);。這將構建數組和對象,但不會在JSON中運行任何代碼。要支持沒有HTML5 JSON對象的舊瀏覽器,請使用json2.js,它使用相同的API通過在JSON之前檢查無效數據來提供相同的保護。

2

JSON是JavaScript。因此,您可以像驗證JavaScript一樣靜態驗證JSON。您擔心通常可用於驗證JavaScript的eval方法,並且避免此方法非常明智。如果它是惡意的並且你執行驗證,那麼你已經被搞砸了。 JSLint是一個很好的工具。請參閱堆棧 溢出問題Is JSLint available for offline use?有關如何利用此「實用程序」功能的說明。另一種方法是使用json2.js。此方法可以正確解析包含 函數的JSON,因此請注意此警告。

相關問題