2011-07-28 5 views
0

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

それは

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

私は入力を感謝します。

答えて

1

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

あなたの他の製品フィールドに意図的にエンコードされるリンクや段落タグのようなマークアップが含まれていますか?この場合、の場合は、jsonレスポンスの一部をページ上のHTMLとしてレンダリングする必要があります。新しい製品が作成された時点で入力を消毒し、それらの属性をスクラビングすることによって、 sanitize gemのように、このプロセスを自動化するライブラリがあります。

+0

ありがとうございました。ユーザーが提供するマークアップを含むモデル属性がいくつかあります。そこで、before_validationをスクラブするためにオブザーバーを選択しました。 –

+0

sanitize gemは素晴らしいですが、JRubyのような別の環境では作成者がそれをサポートしないのでビルドしませんので、より詳細な解決策が得策です。 – rcd

関連する問題