【问题标题】:Secure ajax form POST安全的 ajax 表单 POST
【发布时间】:2011-02-22 18:10:01
【问题描述】:
我想知道如何通过 AJAX 开发安全的表单帖子。
例如,我有:
我的 HTML 表单。
我的 JavaScript 处理提交。
提交网址为“post_data.php”
发布的数据是:
id=8&name=Denis
PHP 验证变量 id 和 name 是否为 POSTED 及其数据类型。如果没问题,它会继续在数据库上做一些事情。
我的问题是,如何防止有人在我的网站之外或其他任何地方创建自己的 html 表单,并将虚假数据发布到我的 PHP 脚本?
假设数据确实存在于我的数据库中,这可能很糟糕。
谢谢
【问题讨论】:
标签:
ajax
security
forms
post
【解决方案1】:
一种非常常见的方法是在表单的<hidden> 字段中包含某种令牌,并将相同的令牌保存在服务器上的会话变量(或其他地方)中。提交帖子后,您检查令牌是否有效。
其他人仍然可以伪造令牌,但他们不能(至少以任何简单的方式)强迫您将相同的令牌保存在您的服务器上,因此不会接受您自己的其他形式。
例如,这是 ASP.NET MVC 中对此的内置支持的工作原理。
【解决方案2】:
token 方法可能是最有效的方法。话虽如此,即使您采取了这些其他安全措施,也不应该假设数据来自您自己的表单。验证数据始终很重要。