0

我有一个关于 input=hidden 字段的棘手问题,其值为 $_SESSION['userid']。问题是,当有人打开萤火虫时,他可以轻松更改值数据......我该如何防止这种情况?

<input type="hidden" name="id" value="ID" />
4

2 回答 2

3

您不能,您可能需要在表单提交后验证 $_POST['id'] === $_SESSION['userid'] 以验证您在那里获得了正确的值。

于 2013-10-09T14:12:48.263 回答
2

理论上,任何位于客户端的内容(HTML、JavaScript...)都可以由用户修改。因此,我们的想法是要么不在客户端放置任何敏感数据,要么至少在服务器端仔细检查。

在您的示例中,您使用的似乎是一个 SESSION 变量。为什么在客户端需要它?如果这个数据已经在 $_SESSION 中,也许你可以直接使用它?在你的接收代码中而不是直接读取而不是直接$_POST['id]读取$_SESSION['userid']

如果您确实需要重新发送数据(如果需要,请解释原因),然后在服务器端检查您获得的内容是否与当前登录的用户(或当前会话中的内容)匹配。

在我的一个自动生成表单的应用程序中,我只是忽略了服务器端的一些字段,并将它们替换为我所期望的无论如何 - 从我的数据库或会话变量中获取。

于 2013-10-09T14:15:28.300 回答