在我与之合作的公司中,我们经常需要与客户端的基础架构进行集成。最近,在听说我们使用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