php - 阻止用户伪造表单的安全方法

标签 php jquery ajax security antiforgerytoken

如何防止用户在 PHP 或 jquery 端伪造表单,我正在使用 Jquery 的 ajax 功能来提交表单,这意味着技术人员可以更改一些变量,例如某些内容的值(这应该不能通过使用 firebug 或 web 检查器等来更改/是用户 ID 或类似的内容。

那么我怎样才能防止用户更改这些变量或通过安全且良好的方式确保它们不可更改?

谢谢

最佳答案

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

你正在从我这里接收数据,我可以向你发送任何我想要的数据,我什至可以手动执行 HTTP 请求,甚至不需要使用浏览器,而你对此无能为力。

如果您不希望用户能够更改信息,请不要向他提供该信息。

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

如果您仍想将数据传递给用户,请计算某种哈希(安全哈希,使用安全哈希算法和安全 message digest 作为 Gumbo noted ,这排除了数据的 CRC32 或 MD5 等算法以及 MAC(如您的名字或生日)并将其存储在服务器端,然后当用户提交回数据时,检查是否哈希值匹配。

但请注意,此解决方案并非 100% 安全。哈希函数存在冲突,并且存在错误的实现。

我建议遵守黄金法则:如果它不存在,它就无法破坏/被篡改/被盗/等等。

关于php - 阻止用户伪造表单的安全方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8532356/

相关文章:

php - 如何在网站中添加社交登录选项?

javascript - 无法使用 search() API 的自定义正则表达式实现进行 stateSave

javascript - jquery填写div的内容

php - AJAX 调用检查后台运行进程的状态,超时

javascript - 使用 AJAX 调用执行 Javascript

php - 如何从服务器为 Telegram BOT 定义命令

PHP strtotime 关闭一天

php - SQL慢速连接,插入尊重选择

javascript - 如何在列表框中设置跨度元素和图标的对齐方式?

jQuery get() AJAX 仅返回空格