我在jsf中有一个Web应用程序,该应用程序有新的,编辑和删除类别,支出,预算,用户等。
当打开编辑页面时,我有这样的网址:
http://localhost:8080/Practica3/faces/usuarios/edit.xhtml?id=2
问题是如果用户将数字2更改为另一个数字,而另一个数字存在于数据库中,则该页面将id 2的数据更改为新id的数据。
问题是如果ID号X是另一个用户的数据,并且更改id的用户不在条件下查看该数据。
如何禁用编辑ID,或拒绝向其他用户显示数据?
谢谢,我希望得到回复。
答案 0 :(得分:0)
如果允许当前用户编辑所请求的实体,则只需签入服务层。如果没有,则抛出一些安全例外,如有必要,可以在instance.has_changed
中配置自定义错误页面。
技术问题与HTTP / JSF无关。如果你在JSF方面单独“修复”它,那么你在服务层中仍然存在一个巨大的安全漏洞,这会影响使用它的任何其他前端。前端不对服务层本身的业务限制负责。
答案 1 :(得分:0)
问题不在于停止编辑ID。这是在客户端/浏览器上,你不能阻止这个值被编辑。
您需要实施适当的访问安全控制。当您收到任何回复时,您需要检查用户是否可以执行他们指定的操作(读取,更新,删除等)以及检查以确保他们有权访问他们要执行操作的数据。
这两个主题位于OWASP Top 10:
这些页面将告诉您问题所在,缓解策略以及在您的应用程序中测试的不同方法。
我也会熟悉其他十大类别(这不是一个全面的列表,但是一个很好的起点)。