0

いつ安全に使用できるのか、いつ安全に使用できないのか疑問に思ってhtml_safeいました。コードにユーザー コンテンツが含まれている可能性がある場合は、これを行いたくないということを読みました。これは実際にはどういう意味ですか?

flash[:danger]="Dear #{@user.username} <br> please take a look #{view_context.link_to('here', some_path)}" <br> Your organization #{@user.organizationname} bla bla"

たとえば、このようなフラッシュ メッセージの場合、html_safe正しく表示する必要がありますが、この場合、ユーザーが入力したコンテンツも含まれusernameますorganizationname。それでも安全に使用できhtml_safeますか...?

4

2 に答える 2

3

html_safe でレンダリングする文字列にユーザー コンテンツを挿入する場合、挿入されたすべてのコンテンツがsanitized

flash[:danger]="Dear #{ActionController::Base.helpers.sanitize @user.username} <br> please take a look #{view_context.link_to('here', some_path)}" <br> Your organization #{ActionController::Base.helpers.sanitize @user.organizationname} bla bla"

http://api.rubyonrails.org/classes/ActionView/Helpers/SanitizeHelper.html

于 2015-07-25T10:12:06.547 に答える
1

一般的に言えば、悪意のあるユーザーが有害な js コードを として入力する可能性はありません。organizationnameこのコードはアプリの一部になります。これは望ましくありません。この攻撃はクロスサイト スクリプティング (XSS) として知られており、それについてはこちらで読むことができます: http://www.jasonwieringa.com/Learning-About-XSS-Attacks-in-Rails/

axel が指摘したように、すべての html 特殊文字をエンティティとして置き換えるsanitizeため、マークしたいすべてのユーザー入力を呼び出す必要html_safeがあるため、不要なマークアップや js コードはユーザーのブラウザーによって解釈されません。

于 2015-07-25T10:12:43.663 に答える