防止用户伪造表单的安全方法


Secure way to stop users from forging forms

如何防止用户在PHP或jquery端伪造表单,我使用jquery的ajax功能来提交表单,这意味着技术人员可以通过使用firebug或web inspector等工具更改一些变量,例如某些值(不应该更改/是用户id或类似的东西)。

那么我怎样才能防止用户更改这些变量,或者通过一种安全和好的方式确保它们是不可更改的呢?

谢谢

正如其他人已经说过的,您不能阻止用户篡改。

你从我这里接收数据,我可以给你发送任何我想要的东西,我甚至可以手工做一个HTTP请求,甚至不使用浏览器,你不能做任何事情。

如果你不希望用户能够修改信息,就不要提供给他。

您可以将其存储在PHP的会话中,该会话存储在服务器端(不使用cookie,它们也发送给用户)或将其保存在数据库中,这两种方法都不能被最终用户访问。

如果你仍然想将数据传递给用户,计算某种类型的哈希(一个安全的哈希,使用安全的哈希算法和安全的消息摘要,如Gumbo所指出的,这排除了像CRC32或MD5这样的算法和mac(如你的名字或生日)的数据,并将其存储在服务器端,然后当用户提交回数据时,检查哈希是否匹配。

但是要知道这个解决方案不是100%安全的。哈希函数有冲突,并且存在不好的实现。

我建议坚持黄金法则:如果它不在那里,它就不能破坏/被篡改/被盗等

你不能阻止用户这样做。

将这些变量存储在会话中

你永远不能相信客户端。在服务器上验证表单以确保数据一致。这意味着检查给定的用户ID是否有发布表单的权限,等等。

我要用…你不能。你从不相信用户的数据;客户端验证总是,只有是第一道防线。