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オブジェクトを渡すことを考えていた。
危険な文字をエスケープ? – kinakuta
'\ u2028 \ u2029'もエスケープする必要があります。 http://stackoverflow.com/a/9168133/351705 –
@kinakuta - ユーザーが投稿したコンテンツが含まれています。xssが防止されていることを確認したいだけです。 – Kannaj