Java 阻止用户在WebApps中更新之前更改id

Java 阻止用户在WebApps中更新之前更改id,java,security,design-patterns,crud,Java,Security,Design Patterns,Crud,这是一个一般性问题 我对CRUD操作和其他必须发送ID的操作中的ID有疑问 我的意思是,无论使用什么技术,结果都是一个html表单,其中Id将位于表单中的输入字段中(可能是分散的、隐藏的,但始终存在)。考虑到这种方式,用户可以使用firebug(例如)修改entityId并发送具有不同id的表单,这将允许用户更新甚至删除不是原始请求的记录 <form> <input id="entityId" type="hidden"/> <input id="

这是一个一般性问题

我对CRUD操作和其他必须发送ID的操作中的ID有疑问

我的意思是,无论使用什么技术,结果都是一个html表单,其中Id将位于表单中的输入字段中(可能是分散的、隐藏的,但始终存在)。考虑到这种方式,用户可以使用firebug(例如)修改entityId并发送具有不同id的表单,这将允许用户更新甚至删除不是原始请求的记录

<form>
    <input id="entityId" type="hidden"/>
    <input  id="someName" type="button"/>
</form>

我如何处理这种情况? 我尝试的第一个解决方案是通过userId和entityId进行选择,这样我可以允许用户只更新自己的记录,但他仍然可以更改id,并在他拥有的其他记录中进行更改

如何限制更多用户仅对web应用程序显示的记录进行更改


提前感谢

听起来您不应该将记录id写入web表单,而是应该将其保存在服务器上的用户会话中

使用

设置它,并且

request.getSession().getAttribute(name);
阅读它

这样,它就不能被篡改


如果您需要在一个会话中允许多个表单(和记录),您可以在附加到会话的集合中跟踪它们。

可能是从servlet方面,在会话变量中为用户设置当前entityid,并检查它们是否匹配。您需要检查提交的值是否有效,以及它们是否具有修改权限them@AndrewBarber我想OP知道这一点,并且正在询问how@ScaryWombat袋熊你是对的。这个想法是如何实现的。不确定是否将其存储在会话中是一个好主意,如果我有一个包含100条记录的网格,并且我可以编辑所有记录,那么如果我将所有记录存储在会话中,则可能会导致内存问题。这是一个一般性问题,如果后端是rest web服务呢?。如果我不发送用户名,如果用户名不唯一,我该怎么办?
request.getSession().getAttribute(name);