2

Rails 4 アプリでサニタイズ メソッドを使用して、ユーザーが生成した html を表示するページをスクラブし、スクリプト インジェクションなどの安全でないことを防止しています。だから私は次のようなビューを持っています:

sanitize @user_input

現在、使用者が次のようにソースタグを含むビデオタグを入力しているときに問題が発生しています:

<video><source src="foo.bar"></video>

残念ながら、サニタイズによってソース タグが取り除かれているため、動画が機能しなくなっているようです。ソースタグを許可するようにサニタイズを使用するにはどうすればよいですか? また、許可/禁止されているタグのリストを取得するにはどうすればよいですか? ボンネットの下で何が起こっているのかを理解することは素晴らしいことです。

完全に明確にするために、ソースタグをホワイトリストに追加できるようにしたいと思います。サニタイズの引数で許可されたタグとして指定すると、ホワイトリストに登録されたタグの以前のデフォルトがすべて削除されます。たとえば、a、h1 などのデフォルトのタグを引き続き許可したいと思います。

ソースを完全に置き換えるのではなく、ホワイトリストに追加するにはどうすればよいですか?

4

4 に答える 4

1

次のようなことができます。

<%= sanitize @user_input, tags: %w(video source), attributes: %w(src) %>

于 2016-01-28T19:57:05.723 に答える
1

http://apidock.com/rails/ActionView/Helpers/SanitizeHelper/sanitizeを確認してください。

次のように、ホワイトリストに登録したいタグを含むオプション ハッシュを指定できます。

sanitize('<video><source src="foo.bar"></video>', tags: %w(video source))

Rails アプリ内から完全なホワイトリストを取得する方法があるかどうかはわかりませんが、これは使用されているデフォルトのサニタイザーのソース コードです (WhiteListSanitizerクラスを確認してください)。

https://github.com/rails/rails-html-sanitizer/blob/master/lib/rails/html/sanitizer.rb

そこから、許可されているタグが次のとおりであることがわかります。

%w(strong em b i p code pre tt samp kbd var sub
    sup dfn cite big small address hr br div span h1 h2 h3 h4 h5 h6 ul ol li dl dt dd abbr
    acronym a img blockquote del ins)

許可される属性は次のとおりです。

%w(href src width height alt cite datetime title class name xml:lang abbr)

タグ リストに と を追加して、ヘルパーに提供videoできます。sourcesanitize

于 2016-01-28T19:56:21.360 に答える