3

許多評論員(例如ZDNet)都表示,GitHub案例中的弱點是模型Homakov discovered was vulnerable已爲其屬性​​啓用了質量分配。質量分配真的是Homakov的GitHub黑客的罪魁禍首嗎?

但是,我認爲問題不是這樣,而是在控制器中使用before_filter(或類似的)失敗,以確保他更新的表中的任何給定行只能由管理員更新或通過在該行中列出ID的用戶。如果在控制器中安裝了這樣的過濾器,那麼即使該模型的屬性是可分配的,該桌子也可以從攻擊中得到保護。

我正確嗎?

+0

這也可以工作,但需要設計可能泄漏的特定過濾器。質量分配非常簡單,一行解決了這個基礎問題。 –

+1

儘管如此,集體作業非常方便。啓用質量分配和控制器中的一些過濾器不是更方便,而不是禁用質量分配和控制器中的一大堆解決方法? – sampablokuper

回答

3

是的,我認爲你是對的。

在這種情況下,你也可以使用授權的寶石,例如:cancandeclarative authorizationheimdallr ...

的問題是不是就可以使用。問題是如何幫助別忘了在某些情況下使用它。例如,cancan可以使用以下方法:check_authorization它有助於檢查所有操作的授權。

關於這說,霍米亞科夫。添加受保護的屬性將是最簡單的方法。也許只是因爲限制授權的解決方案不同而發現了漏洞。在某些情況下,添加受保護的屬性會導致api靈活性的下降。

2

據我所知,這個問題與before_filters檢查管理員無關。 存在一個屬性,例如在public_keys模型中引用了user_id,該屬性不應暴露給質量分配。

before_filter可以作爲另一種安全的「層」上班.slice也可以用於確保你只能得到你應該得到也能正常工作的屬性。

在最後一個筆記上:我認爲admin!= god,意思是說,我發現沒有用Github管理員有權執行Homakov能夠執行此操作的行爲。

相關問題