2015-04-27 30 views
0

我有一個Rails 3.2.21應用程序。我的一個用戶有一個斜線地址(想想大街321 1/2)。目前,我們會過濾掉斜槓,這會導致系統中此用戶的地址無效。如何在不禁用此特定地址的驗證或允許全球範圍內的斜槓(具有巨大的安全風險)的情況下如何允許此地址通過?有沒有一種方法可以對斜線進行編碼,將其放入數據庫並在檢索時將其編碼回斜線?Rails安全性:允許斜槓作爲用戶輸入

謝謝!

+1

使用參數進行數據庫插入/更新,而不是手動構建字符串。對於我接觸過的大多數SQL實現來說,這是通過'@'來完成的,而'?'是用於位置的。 – Crisfole

+0

看起來像是打電話給你的。地址中的斜線是有效的。但是你可以在你的驗證器中利用正則表達式將它限制在某些位置和限制之下。我很想知道存在哪些安全風險。一個XSS如何在地址中使用斜槓? –

+0

只要允許斜線,就可以增加XSS的可能性(Rails對HTML編碼的所有內容都是非常好的編碼,但是有幾個已知的漏洞,特別是與JS結合時,我寧願儘可能使用白名單)。 –

回答

1

只是允許斜線開闢了可能性增大爲XSS

不是真的。在可能意外將內容注入XSS潛力(HTML,JavaScript字符串文字)的地方,斜槓不是特殊字符。輸入驗證在任何情況下都不是解決注入問題的正確場所。

斜槓可能影響的漏洞類型是filepath注入(通常會導致通過目錄遍歷進行不需要的文件訪問)。但仍然需要擔心的地方就是創建文件路徑。

有沒有一種方法可以對斜線進行編碼,將其放入數據庫並在檢索時將其編碼回斜線?

數據庫不需要被斜線保護。如果你這樣做了,那麼就是代碼中存在的任何XSS或文件路徑問題,這些問題不在數據庫中 - 你仍然會像以前一樣脆弱。