2012-04-20 52 views
1

我想拒絕訪問者訪問頁面,但仍然使用頁面。我如何:htaccess - 禁止頁面只能通過ajax或只能作爲一個包括

〜使頁面不可查看,但允許它處理ajax請求。

〜使PHP文件不可查看,但將其包含在腳本中。

看來我需要htaccess。我試過使用它,但它阻止了我使用該文件作爲包含。

爲Ajax唯一的事情,看來我可以在Ajax的唯一頁面使用此:

<?php 
$AJAX = (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && 
     $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest'); 
if ($AJAX){ 
    // echo ajax code. 
} 
?> 

這是可靠的?

標籤:只有通過AJAX

回答

2

完成第二個關於如何使腳本可用於服務器端包含和使用但不能從客戶端訪問的問題的一種方法是將此添加到包含您希望的腳本的文件夾中的.htaccess文件中以這種方式保護:

deny from all 

嘗試瀏覽到腳本,你應該不能去它。這適用於整個目錄.htaccess文件被放置在。

'屏蔽'php客戶端通過這樣的Web服務器訪問客戶端的另一種方法是將php文件放置在目錄外部您的wwwroot文件/的public_html。

在您的PHP配置中,您必須將此dir添加到您的include搜索路徑,或者只需通過正確的相對路徑或通過使用絕對路徑來包含它。

舉例來說,如果你有root_containing_folder/wwwroot文件/ index.php文件和root_containing_folder /應用/ core.php中,在index.php中你可以有

require_once('../app/core.php'); 

和核心將被包括在內,但瀏覽器能永遠不要自己去core.php。 (如果可以的話,它必須通過像www.facing-site.com/../app/core.php這樣的網址 - 你的網絡服務器絕不允許!)

+0

而且這將工作的文件我運行一個cron工作,但是從訪客被禁止。 – Dor1000 2012-04-20 22:36:53

+0

這取決於你如何運行php文件作爲cronjob。這句話使目錄中的文件不可見。 – stUrb 2012-04-20 22:43:04

+0

正如您所說,運行cron作業有哪些不同的方式。你能否把一些關鍵詞放到我的谷歌上。我正在計劃密碼保護cron作業文件,需要一個唯一的GET變量,並讓cron作業使用get var來運行它。但這可能會暴露於暴力強制。 – Dor1000 2012-04-20 23:27:38

1

你不能做這些事情:當一個腳本,使一個AJAX請求,這是用戶的瀏覽器發送請求。如果您希望客戶端腳本查看您的內容,瀏覽器必須能夠看到它。

您可以應用一些安全通過默認值,例如在腳本中添加某種身份驗證令牌。這不會給你太多的保護,因爲用戶需要做的只是閱讀JS來獲得令牌,但它會阻止偶然的訪問者徘徊。你的'如果XHR'實際上是這樣做的 - 如果地址放在地址欄中,瀏覽器通常不會發送該頭部,但用戶可以輕鬆地在AJAX代碼之外獲得相同的效果。

+0

這是有道理的,任何標題讀取可能會被欺騙。 – Dor1000 2012-04-20 22:30:42