你應該創建一個基於你期望並希望允許在FTP
鏈接的一部分,並使用該到合併您的附加參數params
僅元素的新哈希值。
你有什麼可以讓我通過修改查詢字符串來添加任何我想要的信息FTP
,打開安全漏洞的大門。通過構建一個散列來代替params.merge(...
中的params
,您可以將預期的查詢字符串組件有效地列入白名單,以便在您要呈現的模板中使用。
作爲GET
例如,如果你希望像
/some/path?opt1=val1&opt2=val2
您的控制器操作的URL可能會做
@cleaned_params = { opt1: params[:opt1], opt2: params[:opt2] }
@cleaned_params.merge! action: :ftp, archive: archive, recipient: :company
再經過@cleaned_params到link_to
= link_to "FTP", @cleaned_params
這樣,如果我手動輸入像
/some/path?opt1=val1&opt2=val2&maliciousopt=somexss
的params[:maliciousopt]
將永遠不會成爲一個網址到您的FTP
link_to
在您的視圖。
同樣的行爲適用於POST
請求,僅是惡意我可能會在提交
<input type="hidden" name="maliciousopt" value="somexss" />
由於之前添加幾個字段的形式...你可以給我一個例子嗎?我真的不明白。 – snowangel
爲我更新了我的答案。 – deefour
完全感激 - 謝謝。 – snowangel