2012-02-05 2 views
0

私はRails 3とRuby 1.9.2を使用しています。私はもちろんの私の投稿フォームにRails - javascript injection

"<script language='javascript'>alert('test');</script>" 

を追加すると、それはjavascriptのアラートを実行し、私は私の投稿の内容を表示していたとき、私はちょうど

<%[email protected]%> 

をやっている何か特別なことをやっています!

保存する前と表示する前に両方ともhtml_safeを追加しようとしましたが、何も修正されませんでした。

セキュリティコードを追加する必要がある場合、投稿を保存する前に、または表示する前に追加する必要がありますか?私はレール3がそれ自体をやっていると聞きましたので、セキュリティについてあまり気にしませんでしたが、まだ注意が必要な主なことがいくつかあります。

+0

です。あなたのコードを教えてください。 – SLaks

+0

私は数分でそれを追加します... –

+0

この場合、 '' ** html_safe'を使用しないでください。 javascriptは 'html_safe'を使用していますので、** BECAUSE **を実行します。 'html_safe'は「このHTMLは安全だから、エスケープする必要はありません」という意味です。あなたの 'html_safe'呼び出しを取り除くと、Railsはデフォルトで潜在的に悪質なコンテンツをエスケープします。 – Mischa

答えて

2

レールで3を見てね、あなたの視野に入れて何かをエスケープについては非常に厳しいですが、Railsの2およびそれ以前にこれを行うには、あなたの責任でした。あなたはhヘルパーメソッドを使用して、すべてをエスケープする必要があります。

<%= h(value) %> 

あなたはビューに表示何も、すべてをエスケープしている特定のでなければならない任意のユーザ入力を受け付けるアプリケーションを構築します。

+0

OPが2.3.6未満のバージョンのRailsを使用していない限り、Rails 2または3を使用しているかどうかに関係なく、hは必要ありません。 – varatis

+0

私はそれが2.3.xものだと思った。 – tadman

1

あなたはRails 3を使用していますか? javascriptのものは自動的にエスケープする必要があります。

しかし、XSSの防止に関する詳しい情報は、私はちょうどRyan Bates' RailsCasts.