使用php和auth制作ajax调用的正确方法

时间:2010-12-07 23:19:40

标签: php ajax security

从安全角度来看,有人可以在登录PHP时为我提供一步一步(但非常简单)保护ajax调用的途径吗?

示例:

  1. 在php页面上,为登录用户提供了会话ID。
  2. 会话ID在将页面推送到客户端之前动态放入javascript。
  3. 客户端点击“提交”按钮,该按钮将数据(包括会话ID)发送回php处理页面。
  4. php处理页面确认会话ID,执行任务并发回数据
  5. 在通过ajax请求发送会话数据之前,我一直坚持会话数据的安全性(以及是否)。我不是在这里建立一家银行,但是我担心这么多ajax调用转到“开放式”的php页面,可以接受来自任何地方的请求(假设源代码可能被欺骗)。

3 个答案:

答案 0 :(得分:1)

PHP可以获取会话数据,而无需通过javascript发送会话ID。只需使用$ _SESSION变量即可。如果您想检查会话是否存在,您可以执行

if(isset($_SESSION['some_val'))
   //do work son.

您需要使用JavaScript将用户输入异步传递回服务器,但不要跟踪会话。

答案 1 :(得分:0)

请勿使用javascript发送您的会话数据。

您不需要(在大多数情况下)。

只需使用javascript发布数据,让PHP从会话中检索会话数据。

取决于您如何设置会话数据。

一个简单的例子就是你有一个名为username的会话。

当PHP从javascript获取请求时,您可以执行:$ _SESSION ['username']来检索sessiondata。

这是一个非常简单的例子,只是为了说明如何做到这一点。

答案 2 :(得分:0)

如上所述,您不需要使用您的javascript发送任何会话标识符,向服务器发送AJAX请求与任何其他请求相同,它会知道您的会话就好了。所以基本上,只是不要担心,它已经被照顾。

这是你问题的另一部分让我担心。

  

我担心这么多ajax调用会转到“开放式”的php页面,可以接受来自任何地方的请求

它也让我担心;你根本不应该有任何“开放式”的PHP页面。每个公共.php脚本都应该完成身份验证和授权。实现这一目标的最简单,最易维护的方法是使用单个控制器脚本(例如index.php)进行身份验证和授权,然后将请求发送到适当的控制器。除了这个控制器之外,所有其他脚本应该在文档根目录之外,这样它们就不能直接调用

这意味着您只需要担心一个地方的身份验证和授权;如果你需要改变它,它只会在一个地方改变。这意味着您不必担心意外地将某些可执行文件遗留在某些库文件中,而这些文件并不是直接调用的。这意味着您不需要使用mod_rewrite规则来试图保护根本不应该在doc根目录中的.php文件。

相关问题