2017-01-20 9 views
0

phpで信頼できないJSON文字列を検証する安全な方法はありますか?サーバーサイドのJSON文字列の検証

クライアントには動的フォームが表示されます。ユーザーはそのフォームにデータを入力できます。データはサーバーに保存する必要があります。サーバーはデータを処理しません。次回のページロード時にのみ、フォーム値を復元するためにクライアントに渡されます。したがって、私は別々にすべての値をチェックし、独自のデータベースフィールドに保存しないようにしないでください。

私はそれをJSON文字列として保存し、すべてのページ読み込み時にオブジェクト変数としてDOMに挿入します。そのために入ってくるJSON文字列を安全に保護する方法はありますか?

+0

「サニタイズ」とはどういう意味ですか? – lonesomeday

+0

なぜデータをクッキーまたはセッションに保存しないのですか? – Kaylined

+0

@lonesomeday潜在的に危険な部分(引用符を閉じる、オブジェクトを終了する、他のコードを実行するなど)を削除して、 'var 'のようなDOMに挿入する準備ができました。 ) – kot

答えて

0

scriptタグにコードを注入していて、潜在的に危険なXSSの脆弱性がないことを保証するには、まずPHPを使用してコードを再作成してから-encode it。 json_decodeがそれに呼び出されたときに、無効なJSONで

$safeJSON = json_encode(json_decode($unsafeJSON)); 

ものはnullを返します。この場合、文字列"null"がブラウザに返されますが、この状況では何の危害もありません。


実際にはJSONではないため、あなたがやっていることは安全でない可能性があります。 scriptタグ内で使用されている場合、それは単なるJavascriptオブジェクトリテラルです。 JSONとして使用している場合、たとえばAJAX呼び出しを行うことで、ブラウザはJSON.parse呼び出しで無効なJSONを認識しないため、セキュリティ上の脆弱性はありません。 JavascriptオブジェクトとJSONの違いについては、this excellent blog postを参照してください。

関連する問題