当前位置:  开发笔记 > 编程语言 > 正文

使用java和hibernate进行数据"安全性"

如何解决《使用java和hibernate进行数据"安全性"》经验,为你挑选了1个好方法。

我目前正在处理的系统需要一些基于角色的安全性,这在Java EE堆栈中得到了很好的照顾.该系统旨在成为业务领域专家在其上编写代码的框架.

但是,还需要数据security.也就是说,最终用户可以看到哪些信息.

这实际上意味着降低数据库中行(甚至列)的可见性.

我们正在使用Hibernate来实现持久性.但是,我们使用自己的注释,以便不向业务领域专家公开我们的持久性选择.

对于基于行的安全性,这意味着我们可以添加注释,例如@Secured在实体级别,这会导致将额外的列添加到基础表以约束我们的选择?

对于基于列的安全性,我们可能必须@Secured要么协助生成查询,要么使用方面来过滤返回的信息?

我很想知道这对hibernate的缓存机制有何影响?

我相信很多人会有同样的问题,我想知道你是怎么接近这个的?

非常感激...



1> JMM..:

Hibernate有一个可能适合您的过滤机制.过滤器将重写hibernate生成的查询,以包含一个附加子句来限制返回的行.我不知道在休眠中屏蔽/隐藏列的任何内容.

您的数据库也可能支持此功能.例如,Oracle拥有虚拟专用数据库(VPD),它将在数据库级别重写您的查询.此解决方案具有额外的好处,任何针对您的数据库的外部程序(例如报告工具)都将强制执行您的安全限制.VPD还支持使用NULL屏蔽受限制的列.

遗憾的是,上述解决方案还不足以支持我通常使用的类型项目的安全性要求.通常某种情况在上述解决方案中无法轻易表达.例如,用户可以查看他们已创建的数据,或已被标记为公共的数据,或属于他们管理的项目.

我们通常创建查询/查找器/ DAO对象,我们传入执行安全性所需的值,然后相应地创建查询.

我希望这有帮助

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有