質問
Railsで出力HTMLをサニタイズする最適なソリューションは何ですか(XSS攻撃を回避するため)?
次の2つのオプションがあります:Sanitize Helperのwhite_listプラグインまたはsanitizeメソッド http: //api.rubyonrails.com/classes/ActionView/Helpers/SanitizeHelper.html 。私にとって今日まで、white_listプラグインはより良く機能し、過去にはSanitizeは非常にバグが多かったが、Coreの一部として、おそらく開発中であり、しばらくサポートされるでしょう。
解決
hヘルパーメソッドはここで機能すると思います:
<%= h @user.profile %>
これは山括弧をエスケープし、埋め込みJavaScriptを無効にします。もちろん、これにより、ユーザーが使用する可能性のある書式もすべて削除されます。
フォーマットが必要な場合は、マークダウンをご覧ください。
他のヒント
個人的には、すべてのWebアプリでHTMLエントリを受け入れることは小さな決定ではないと思います。ホワイト/ブラックリストのタグは好きなだけテストできますが、正しいネストをテストしていない限り、誰かが一連の終了タグを入力できます。たとえば、
</td></tr></span></div>
そしてレイアウトを本当に混乱させます。
HTML解析よりもビジネスロジックに時間を費やしたいので、通常はTextileのようなものをマークアップに入力します。
もちろん、このテキストエントリがアプリにとってより基本的なものである場合(たとえば、スタックオーバーフローの場合)、独自のハンドロールにもっと注意を払う必要があるでしょう。
所属していません StackOverflow