0

RoR 3は、ERBテンプレートを自動的にサニタイズします(正しく実行された場合)。ただし、アプリケーション層にのみRoRを使用し、プレゼンテーションにjavascriptを使用している小さなプロジェクトがあります。したがって、典型的なリクエストは、Railsルートへのajax呼び出しであり、返されたjsonをレンダリングします。問題は、現在、jsを挿入し、タイトル付きの新しい製品を作成することが可能で<script>alert('hello')</script>あり、これが次のリクエストでそのまま返され、ブラウザーがスクリプトを適切に解釈することです。

するのが最善ですか

  1. ポストの入力をサニタイズしますか?
  2. サーバー上のjson応答をサニタイズしますか?(to_jsonをオーバーライドしますか?)
  3. クライアントのjson応答をサニタイズしますか?

ご意見をいただければ幸いです。

4

1 に答える 1

1

ページにデータを追加するときは、コンテンツクライアント側でHTMLエンティティをエンコードする必要があります。

問題は、他の製品フィールドに、リンクや段落タグなどのマークアップが意図的に含まれていて、それらもエンコードされるかどうかです。この場合、json応答の一部をページ上でHTMLとしてレンダリングする場合は、新しい製品が作成された時点で入力をサニタイズし、許可するHTMLタグを特定のサブセットに制限する必要があります。 、次にそれらの属性をスクラブします。サニタイズジェムのように、このプロセスを自動化するライブラリがあります。

于 2011-07-28T15:35:20.237 に答える