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

时间:2014-11-19 02:44:35

标签: java security design-patterns crud

这是一个普遍的问题。

我怀疑与CRUD操作中的ID以及必须发送ID的其他操作有关。

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

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

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

如何限制更多用户仅在Web应用程序显示的记录中进行更改?

提前致谢

1 个答案:

答案 0 :(得分:0)

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

使用

request.getSession().setAttribute(name, value);

设置它,

request.getSession().getAttribute(name);

阅读它。

这样,它就不会被篡改。

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