执行/保护POST参数

时间:2014-01-27 07:59:41

标签: security post

我的标题可能含糊不清所以请查看下面的情况。

我有一个Web应用程序来管理员工列表。应用程序以中心辐条模式设置,其中单击员工列表中的员工会重定向到新窗口,显示所选员工的个人详细信息以获取可能的更新。

该应用程序使用HTTPS。通过GET检索员工列表和详细信息,同时通过POST更新详细信息。该应用程序使用HTTPS,所有用户(我们只有少数用户)有权检索和更新员工详细信息。

我的问题是,在更新/发布操作期间是否仍需要或建议检查员工ID(主键)?理论上,复杂的用户可以在POST之前更改员工ID,并更新其他员工的详细信息,即使没有提取第二个员工的记录。尽管如此,即使该用户以某种方式欺骗界面,他的任何“黑客”也只是可以接受,因为用户无论如何都可以检索和更新任何员工。

所以在我的情况下,你是否仍然认为有必要强制执行一种机制,以便只有当前显示的记录可以更新?如果是,那么实施这一目标的公认做法是什么?感谢

2 个答案:

答案 0 :(得分:2)

许多基于Web的系统都是无状态的。主要原因是允许多个会话/窗口。

您可以将当前编辑的员工ID存储在会话变量中,并且只允许更改该员工ID,但是,如果用户在同一会话中打开了两个浏览器窗口,该怎么办?现在,您必须为每个窗口保留当前编辑的员工ID。好吧,您没有这些信息,因此您必须将员工ID存储在表单中,这一切都可由客户编辑。

因此,只需在服务器上强制执行规则,如果他们有权编辑该员工,请让他们。

确保您的系统使用HTTPS来防止中间人攻击,逃避所有输出以防止跨站点脚本(XSS),并要求所有更新都使用POST以及使用会话和表单令牌来防止跨站点请求伪造(CSRF)。完成后,任何员工ID操作都可能是自己造成的,而且您的工作不是保护用户免受他们的侵害。

答案 1 :(得分:0)

您通常做的是 - 点击一行,获取员工ID并将其发送到服务器,按ID检索信息并将其发布给用户。通常,您将ID保留为隐藏价值的一部分,因此在您更新时,您会更新 ID。并且,通常,您不允许更改ID。 IMO无需检查ID,但如果您认为有人可以跳过,只需检查页面的ID是否与隐藏值相同。