2011-04-21 85 views
1

我想阻止一些文件的PHP脚本,但是,我想我的JavaScript AJAX调用允许脚本,我不知道这是甚至可能但..块直接访问PHP文件,并允许json

什么,我现在要做的是,

$filename = array('index.php'); 

$basename = basename($_SERVER['REQUEST_URI']); 

if(!in_array($basename, $filename)) { 
    die('...'); 
} 

这将阻止所有文件,而不是index.php的,但如果我有一个login.php中,使我的AJAX调用可能吗?

+0

我真的不知道你的意思 – Neal 2011-04-21 18:33:33

+0

你使用任何插件来做你的AJAX?我相信JQuery和其他一些人设置了一个可以检查的标题。 – 2011-04-21 18:34:22

+4

这不可能以安全的方式进行。所有的请求头可以伪造。如果您需要这样做才能创造安全性,则需要重新考虑应用程序的安全性。 – 2011-04-21 18:35:13

回答

2

当你发送一个JavaScript AJAX调用它增加了

X-要求 - 由于:XMLHttpRequest的

到HTTP标头。所以,如果你想要做的事在AJAX的情况下,呼叫可以 检查这样的事情:

$headers = getallheaders(); 
if($headers['X-Requested-With') == 'XMLHttpRequest') { 
    // ... 
} 

请记住,任何HTTP客户端可以修改标题,所以它并没有真正增加任何安全(但例如浏览器无法使用默认设置直接调用您的PHP脚本)。

+0

好吧,如果他们可以看到发生了什么,它并不重要,因为他们仍然需要该表单,并且所有内容都正在使用PHP进行验证。这只是一个简单的方法来重定向用户从另一个文件。 – Dexty 2011-04-21 18:45:31