保护ajax表单POST

时间:2010-05-22 17:07:34

标签: ajax security forms post

我想知道如何通过AJAX开发一个安全的表单帖子。

例如,我有:

我的HTML表单。

我的JavaScript处理提交。

提交网址为“post_data.php”

发布的数据是:

id=8&name=Denis

PHP验证变量id和name是否为POSTED及其数据类型。如果可以的话,继续在数据库上做一些事情。

我的问题是,如何阻止某人在我的网站外创建自己的html表单,或者其他什么,并将错误数据发布到我的PHP脚本?

想象一下,数据确实存在于我的数据库中,这可能很糟糕。

由于

2 个答案:

答案 0 :(得分:7)

执行此操作的一种非常常见的方法是在表单上的<hidden>字段中包含某种令牌,并将相同的令牌保存在服务器上的会话变量(或其他位置)中。提交帖子后,您将检查该令牌是否有效。

其他人仍然可以伪造一个令牌,但他们不能(以任何简单的方式,至少)强迫您在服务器上保存相同的令牌,因此不会接受除您自己以外的其他形式。

例如,这是ASP.NET MVC中对此内置支持的工作原理。

答案 1 :(得分:1)

令牌方法可能是最有效的方法。话虽如此,即使您有其他安全措施,也不应该假设数据来自您自己的表单。验证数据始终很重要。