Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何验证AJAX调用?_Php_Ajax - Fatal编程技术网

Php 如何验证AJAX调用?

Php 如何验证AJAX调用?,php,ajax,Php,Ajax,我设计了一个使用AJAX的网站。我有一个名为store.PHP的PHP页面,它接受POST方法发送的数据并存储在数据库中 如何在store.php中实现身份验证?我只希望登录到我的站点的用户使用store.php 目前我正在使用htaccess重定向store.php的请求,但我认为这不是一个好的解决方案。Ajax请求的安全性不是一个简单的问题。他们可能容易受到中间人攻击和重放攻击,仅举几例。我建议你读这本书。它会给你很多关于这个主题的好信息 至于您的问题,特别是:一旦设置了PHP会话,这些会话

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

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


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

Ajax请求的安全性不是一个简单的问题。他们可能容易受到中间人攻击和重放攻击,仅举几例。我建议你读这本书。它会给你很多关于这个主题的好信息


至于您的问题,特别是:一旦设置了PHP会话,这些会话cookie也将应用于Ajax请求

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

您要查找的是该用户的持久状态。在PHP中实现这一点的最佳方法是利用会话


关于它有很多文档:

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

我通常只在ajax页面中包含用于在站点其余部分进行身份验证的完全相同的代码。我使用
SESSION
来保存sessionID,其余的在我的数据库中处理。我通常只是添加一行这样的内容

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.

您当前在网站中使用什么进行身份验证?基于用户名/密码的身份验证。如果有一个有效的匹配项,我使用$\u SESSION来存储一些值,检查用户是否登录。会话也会在Ajax请求中发送,因此基本规则是,如果允许Ajax请求执行正常(网页)请求所执行的操作,那么您就非常安全了。哦。。为什么我不这么想!只需注意杰夫·兰伯特接受的答案是正确的。我在这里的回答中给出的建议在技术上是正确的,但是如果可能的话,最好不要实现您自己的安全性。只需使用默认会话安全性。