在我與之合作的公司中,我們經常需要與客戶端的基礎架構進行集成。最近,在聽說我們使用Hibernate之後,一個客戶端表現出以下擔憂:由於Hibernate連接到數據庫的用戶可以直接訪問表並且Hibernate動態地生成SQL,因此這樣的用戶可以在數據庫中執行任何操作。休眠安全理解:休眠與存儲過程
如果用戶只有執行存儲過程的權限,那麼SP可以限制數據,但更重要的是他可以向數據庫發出的查詢類型:基本上沒有動態注入SQL。因此,如果存在一個消除行的存儲過程,那麼獲取用戶憑據的惡意人員將能夠一次性刪除單行,但無法發出DELETE *。我知道Hibernate也可以映射視圖,但這又限制了數據,而不是用戶可以執行的操作。 Hibernate也可以執行SP,但是這在很大程度上違背了使用Hibernate的目的,並且意味着應用程序的完全重寫。
雖然我不認爲這是主要問題,但由於應用程序服務器也提供安全性,所以我有一個說服客戶端的問題。你對此有何看法? Hibernate是否真的比使用存儲過程的應用程序更安全?在使用Hibernate時可以採用哪些額外的安全措施?
爲什麼不創建視圖,然後使用它們的授予權限來防止刪除?這個問題似乎與Hibernate/NHibernate沒有任何關係。 –
http://en.wikipedia.org/wiki/Fear,_uncertainty_and_doubt – mxmissile