如何验证AJAX调用


How to authenticate AJAX call?

我设计了一个使用AJAX的网站。我有一个名为store.php的PHP页面,它接受POST方法发送的数据并存储在数据库中。

如何在store.php中实现身份验证?我只希望用户登录到我的网站使用store.php.

目前我正在使用htaccess来重定向store.php的请求,但我不认为这是一个很好的解决方案

对服务器脚本的任何AJAX调用仍将在请求中包含会话id。如果您在站点中实现会话,那么启动会话,您将能够看到当前登录用户的会话变量。

在数据库中存储与用户关联的令牌。确保令牌是唯一的且不可猜测的。还要将相同的令牌存储在隐藏的表单字段中,以便将其发送回页面。在服务器上确保令牌存在于提交的表单值中,并检查它是否有效。

Ajax请求的安全性不是一件简单的事情。它们可能容易受到中间人攻击和重放攻击,仅举几例。我推荐阅读这本书:http://www.amazon.com/Ajax-Security-Billy-Hoffman/dp/0321491939。它会给你很多关于这个主题的好信息。

至于你的问题,具体来说:一旦你的PHP会话已经建立,这些会话cookie也将应用于Ajax请求。

您正在寻找的是用户的持久状态。在PHP中实现这一点的最好方法是使用会话。

有很好的文档:http://www.php.net/manual/en/book.session.php

我通常只在ajax调用的页面中包含用于验证站点其余部分的完全相同的代码。我使用SESSION来保存sessionID,其余的在我的DB中处理。我通常最后只添加这样一行…

require_once('loginProcedures.php'); 
//Login Authentication takes place here using SESSION ID
if (!$me['validLogin']) die("Invalid Authentication");
//perform actions and echo your result for a valid login.