5


0

Rails Sanitize:安全性+埋め込みの許可

ユーザーが動画、スライドシェアなどのようなものを埋め込むことができるようにしたいユーザー生成コンテンツサイトを構築しています…​ Railsでサニタイズできるように一般的に受け入れられているタグ/属性のリストをお勧めできますが、かなりのセキュリティが得られますが、埋め込み可能なコンテンツ/ htmlフォーマットを十分に許可できますか?

3 Answer


0


オフになっている限り、オブジェクトを許可できるはずです。 オブジェクトタグの実際に受け入れ可能なパラメーターを定義できるため、ホワイトリストのみを許可し、任意のオブジェクトを含めることはできません。

ただし、埋め込み用のUIサポートを提供する方が良い場合があります。 たとえば、ユーザーにYouTube URLの入力を求め、それからビデオの埋め込みコードを導き出します。

いくつかの利点:-デフォルトのYouTubeコードは標準に準拠していないため、独自のオブジェクトコードを構築できます-埋め込み要素を出力ページに含める方法を完全に制御できます


0


ユーザーがWYSIWYG Htmlエディターを使用できるようにすることは正直に言って良いことかもしれませんが、実際にはユーザーと開発者の両方にとってうまく機能しません。 その理由は:

  • ブラウザーごとに動作が異なります。

  • ホワイトリストによりサイトを保護できますが、ユーザーは電話をかけ、 OBJECTタグなどに別のパラメーターを許可するように要求します。 ブラックリストは安全ではありません。

  • HTMLタグが何であるかを知っているユーザーは多くありません。

  • ユーザーにとっては、テキストをフォーマットするのは難しいです BOLD + FONT-SIZEではなくHEADER)。

  • 一般に、それはかなり苦痛であり、実際にサイトを変更することはできません ユーザーがHTMLを適切に使用しなかったため、必要に応じて設計します。

私が今CMSのようなシステムをやっているなら、おそらく*セマンティック*マークアップで行くでしょう。 +ほとんどのユーザーは、すぐに慣れて、プレーンテキストです(ここSO)。

また、適切なHTMLを生成し、必要なタグをサポートできます。 +たとえば、画像を埋め込む必要がある場合は、次のように記述できます。

_ 私の顔:image-http://here.there/bla.gif _

次のようにHTMLが生成されます:


周りにはたくさんのマークアップ言語がありますので、自分に適したものを選んで、独自の修正を追加してください。

たとえば、GitHubは修正された `markdown`を使用し、それを解析するコードはhttp://github.github.com/github-flavored-markdown/[couple]の行です。

1つの欠点は、ユーザーが言語を学習する必要があり、WYSIWYGではないことです。

よろしく、+ Dmitriy。


0


これには素晴らしいプロジェクトがあります。 YouTube埋め込みのみを許可する埋め込み分析も備えています。たとえば、