从安全角度来看,有人可以在登录PHP时为我提供一步一步(但非常简单)保护ajax调用的途径吗?
示例:
在通过ajax请求发送会话数据之前,我一直坚持会话数据的安全性(以及是否)。我不是在这里建立一家银行,但是我担心这么多ajax调用转到“开放式”的php页面,可以接受来自任何地方的请求(假设源代码可能被欺骗)。
答案 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文件。