2011-04-21 30 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

相關問題