【发布时间】:2010-11-26 22:16:44
【问题描述】:
在与我合作的公司,我们经常需要与客户的基础架构集成。 最近,听说我们使用Hibernate后,有一个客户表示担心:由于Hibernate连接数据库的用户可以直接访问表,而Hibernate动态生成SQL,那么这样的用户可以在数据库中做相当多的事情。
如果用户只有执行存储过程的权限,那么 SP 可以限制数据,但更重要的是他可以向数据库发出的查询类型:基本上没有动态和注入的 SQL。因此,如果有一个删除行的存储过程,获取用户凭据的恶意人员将能够一次性删除一行,但无法发出 DELETE *。我知道 Hibernate 也可以映射视图,但这再次限制了数据,而不是用户可以执行的操作。 Hibernate 也可以执行 SP,但这在很大程度上超出了使用 Hibernate 的目的,并且意味着对应用程序的完全重写。
虽然我不认为这是一个主要问题,但由于应用程序服务器也提供安全性,我在说服客户方面遇到了问题。你对此有何看法? Hibernate 真的不如使用存储过程的应用程序安全吗?使用 Hibernate 时可以采取哪些额外的安全措施?
【问题讨论】:
-
为什么不创建视图然后对它们使用授予权限来防止删除?这个问题似乎与 Hibernate/NHibernate 没有任何关系。
标签: security nhibernate hibernate stored-procedures