2011-09-25 23 views
5

イム入力をユーザーに許可するようにjQuery Markitupを使用してHTML ...そこで彼らは、入力されたもののようなことができます。しかしhtmlをエスケープするには?

<h1>Foo</h1> 
<p>Foobar</p> 

、私はhttp://railscasts.com/episodes/204-xss-protection-in-rails-3を見て、入力にコードのこの部分を試してみることにしました。

<script>alert('test');</script> 

私の驚きは、フォームを送信してページをリフレッシュしたときに警告ボックスが出てきたことです。これはセキュリティリスクです。

これは私が私の見解で持っているものです。

<div><%= comment.description.html_safe %></div> 

上記は、任意のHTMLをレンダリングするだけでなく、XSSになりやすいです。だから私は試してみました:

<div><%= html_safe(comment.description).html_safe %></div> 

をしかし、上記の任意のHTMLをレンダリングしません。実際には、テキストというhtmlが表示されますが、これは目的の動作ではありません。

私はHTMLをレンダリングすると同時に、xssから自分自身を守る必要があります。これについてどうすればいいですか?

答えて

0

<%= sanitize(comment.description) %> 

アップデートしてみてください。すべてのタグを削除するには

はstrip_tagsを使用

+0

いやサニタイズは、HTMLをレンダリングし、JSからのアラートを実行しません。面白い。しかし、これにはどんな意味がありますか?私はhttp://railscasts.com/episodes/27-cross-site-scriptingを見ていました。Ryan Bは、「すべてのHTMLタグをエスケープしているわけではありません。 .. –

関連する問題