。 params.merge
をクロスサイトスクリプティングの脆弱性として使用しているすべてのリンクにはフラグが立てられています。どのように私は次のようなものを浄化することができますか?params.mergeとクロスサイトスクリプティング
- @archives.each do |archive|
= link_to "FTP", params.merge(:action => :ftp, :archive => archive, :recipient => "company")
。 params.merge
をクロスサイトスクリプティングの脆弱性として使用しているすべてのリンクにはフラグが立てられています。どのように私は次のようなものを浄化することができますか?params.mergeとクロスサイトスクリプティング
- @archives.each do |archive|
= link_to "FTP", params.merge(:action => :ftp, :archive => archive, :recipient => "company")
あなたが期待するとFTP
リンクの一部になると、あなたの追加パラメータをマージすることを使用できるようにしたいparams
の要素のみに基づいて新しいハッシュを作成する必要があります。
は何を持っていることは、私は、クエリ文字列を修正するセキュリティ上の脆弱性への扉を開くことにより、そのFTP
リンクに私が欲しいものは何でも追加することができます。 params.merge(...
にparams
の代わりに使用するハッシュを構築することによって、あなたは効果的にあなたがレンダリングしているテンプレートで使用するために期待されるクエリ文字列コンポーネントをホワイトリストしています。
あなたは
/some/path?opt1=val1&opt2=val2
お使いのコントローラのアクションのようなURLを期待していた場合GET
例として、あなたは
@cleaned_params = { opt1: params[:opt1], opt2: params[:opt2] }
@cleaned_params.merge! action: :ftp, archive: archive, recipient: :company
を行う可能性があります。そしてlink_to
= link_to "FTP", @cleaned_params
に@cleaned_paramsを渡します
私は
/some/path?opt1=val1&opt2=val2&maliciousopt=somexss
params[:maliciousopt]
はあなたのビューでFTP
link_to
にそれを作ることは決してありませんようにURLを手動で入力する場合はこの方法です。
同じ動作が...あなたは私の例を与えることができる唯一の私はそれ
<input type="hidden" name="maliciousopt" value="somexss" />
感謝を送信する前にフォームにカップルのフィールドを追加する可能性がある悪質なことを、
POST
の要求に適用されますか?私は本当にそれを取得しません。 – snowangelあなたのために私の答えを更新しました。 – deefour
完全に負債です - ありがとうございます。 – snowangel