我從Windows 7 Gadget中提取一些外部JSON數據,這基本上是一個運行在具有高安全特權的Internet Explorer中的JavaScript塊。因此,我想確保JSON的格式正確並且不是惡意的。有沒有一種用JavaScript驗證JSON輸入的安全方法?
這樣做的好方法是什麼?
我從Windows 7 Gadget中提取一些外部JSON數據,這基本上是一個運行在具有高安全特權的Internet Explorer中的JavaScript塊。因此,我想確保JSON的格式正確並且不是惡意的。有沒有一種用JavaScript驗證JSON輸入的安全方法?
這樣做的好方法是什麼?
使用JSON.parse(jsonString);
。這將構建數組和對象,但不會在JSON中運行任何代碼。要支持沒有HTML5 JSON對象的舊瀏覽器,請使用json2.js,它使用相同的API通過在JSON之前檢查無效數據來提供相同的保護。
JSON是JavaScript。因此,您可以像驗證JavaScript一樣靜態驗證JSON。您擔心通常可用於驗證JavaScript的eval
方法,並且避免此方法非常明智。如果它是惡意的並且你執行驗證,那麼你已經被搞砸了。 JSLint是一個很好的工具。請參閱堆棧 溢出問題Is JSLint available for offline use?有關如何利用此「實用程序」功能的說明。另一種方法是使用json2.js
。此方法可以正確解析包含 函數的JSON,因此請注意此警告。
只要你不嘗試在驗證過程中執行任何事情,它應該沒問題。不要使用代碼執行來測試有效性(即如果它運行,它是有效的;否則不是)。 – BoltClock 2011-03-19 22:09:44
只需使用json2.js http://www.json.org – kjy112 2011-03-20 00:10:50