Hibernate Security Apprehension:Hibernate与存储过程

Dan*_*Dan 1 security nhibernate stored-procedures hibernate

在我合作的公司,我们经常需要与客户的基础设施集成.最近,在听说我们使用Hibernate之后,一个客户端表现出以下关注:由于Hibernate连接到数据库的用户可以直接访问表并且Hibernate动态生成SQL,因此这样的用户可以在数据库中做任何事情.

如果用户只有执行存储过程的权限,那么SP可以限制数据,但更重要的是他可以向数据库发出的查询类型:基本上没有动态和注入的SQL.因此,如果存在消除行的存储过程,那么获取用户凭据的恶意用户将能够一次性消除单行,但无法发出DELETE*.我知道Hibernate也可以映射视图,但这又限制了数据,而不是用户可以执行的操作.Hibernate也可以执行SP,但这在很大程度上超过了使用Hibernate的目的,并意味着完全重写应用程序.

虽然我不认为这是一个主要问题,但由于应用程序服务器也提供安全性,我遇到了说服客户端的问题.你对此有何看法?Hibernate真的不如使用存储过程的应用程序安全吗?使用Hibernate时可以采取哪些额外的安全措施?

Joh*_*ner 7

  1. NHibernate可以映射到sprocs而不是表
  2. 如果您愿意,可以将读取操作映射到表/视图,并将插入/更新/删除操作映射到sprocs
  3. NHibernate会生成参数化的SQL,即没有SQL注入的机会
  4. 如果您决定映射到表和/或视图,则可以始终将用户权限限制为某些表上的某些操作
  5. 大多数使用sprocs的项目都是从为每个表生成CRUD过程并为它们分配执行权限开始的 - 这比允许表访问要安全得多