2016-07-27 19 views
1

私は以下のサーバー側のレンダリングに反応する - window.initialState - XSSを防ぐ方法?

window.__INITIAL_STATE__= ${JSON.stringify(initialState)} 

私はXSSを防ぐために何もしていたhaventのように反応するように私の初期状態を渡しています。たとえば、ユーザーが提出したコンテンツの1つに以下の文字列が含まれているとします。 "<script>***</script> "

これは残念ながら、htmlソースのスクリプトタグを破壊します。 ILLEGAL TOKEN

を返すので、私はこのようなサーバー側での使用を考えていました。

${JSON.stringify(initialState).replace(/</g, '\\u003c') 

それは今のところ動作しますが、そのような場合には、初期状態の通過を処理するための良い方法はありますか?上記の正規表現はすべての潜在的な脆弱性をカバーしていますか?

これは問題につながる可能性がある場合、私はちょうどAPIオブジェクトまたは何かを介してJSONオブジェクトを渡すことを考えていた。

+0

危険な文字をエスケープ? – kinakuta

+0

'\ u2028 \ u2029'もエスケープする必要があります。 http://stackoverflow.com/a/9168133/351705 –

+0

@kinakuta - ユーザーが投稿したコンテンツが含まれています。xssが防止されていることを確認したいだけです。 – Kannaj

答えて

0

can thisあなたの問題を解決できますか?

それはJSON.stringifyのように動作しますが、初期状態は、その中にscript要素を持っていない理由自動的

関連する問題