2011-09-30 69 views
0

爲了使用一些AJAX調用,我們經常使用一些輸入類型=「隱藏」。但是這些值可以很容易地改變。那麼,它是一個內置的rails功能,比發送日期到AJAX,沒有用戶可用,或不能被用戶更改的許可?rails如何以安全的方式將數據提供給ajax?

在我當前的rails應用程序中,我使用過濾器來放棄我的控制器上的所有惡意操作。我沒有構建公共API,所以我並不需要更強大的檢查。

但例如,我有一個apotomo小部件顯示一些數據,使用一些隱藏的輸入。但如果你改變它,你可以訪問另一個數據集。就我而言,這不是一個真正的問題,因爲無論如何,所有這些用戶都有權訪問這些數據集。

但是以某種方式以安全的方式給ajax調用數據?或唯一的安全性,是關於權利管理?

回答

1

來自用戶的所有輸入都是不安全的,因爲您無法控制它!用戶甚至不需要網頁瀏覽器,但可以使用其他程序(如curlwget)發送操作數據。

正如你所說的,使用白名單(不是黑名單,因爲你永遠無法確定所有的壞事,但一切都好!)是一個很好的開始。

要確保hidden字段未被更改,您可以使用某種在服務器端使用固定祕密計算的校驗和。這個祕密絕不能暴露給你的訪客!

hash = md5(field_1 + field_2 + field_3 + my_secret) 

當這四個隱藏字段(field_1..3,哈希)在您的形式到達,你可以重新計算哈希值,並將其與PARAMS比較[:哈希爲了確保該field_1到field_3沒有被改變了。

+0

對我來說似乎是對的。謝謝。 – Perello

相關問題