gpt4 book ai didi

java - 数据 'security' 与 java 和 hibernate

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:11:57 25 4
gpt4 key购买 nike

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

但是,对数据安全也有要求。即,最终用户可以看到哪些信息。

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

我们使用 Hibernate 来实现持久化。但是,我们正在使用自己的注释,以免将我们的持久性选择暴露给业务领域专家。

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

对于基于列的安全性,我们或许可以使用 @Secured 来协助生成查询,或者使用方面来过滤返回的信息?

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

我相信很多其他人都会遇到同样的问题,我想知道您是如何处理这个问题的?

非常感谢...

最佳答案

Hibernate 有一个 filter mechanism这可能对你有用。过滤器将重写 hibernate 生成的查询,以包含一个附加子句来限制返回的行。我不知道 hibernate 中有什么东西可以屏蔽/隐藏列。

您的数据库也可能支持此功能。例如,甲骨文有 Virtual Private Database (VPD) 将在数据库级别重写您的查询。该解决方案还有一个额外的好处,即任何不利于您的数据库的外部程序(例如报告工具)都将强制执行您的安全限制。 VPD 还支持使用 NULL 屏蔽受限制的列。

不幸的是,上述解决方案不足以支持我通常从事的类型项目的安全要求。在上述解决方案中通常存在某种无法轻易表达的上下文。例如,用户可以查看他们创建的数据、标记为公开的数据或属于他们管理的项目的数据。

我们通常创建查询/查找器/DAO 对象,我们在其中传递实现安全性所需的值,然后相应地创建查询。

希望对你有帮助

关于java - 数据 'security' 与 java 和 hibernate ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34638/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com