2010-11-28 86 views
2

是否可以對來自命令行的任何請求進行完全授權?通過命令行安全:這是一個好主意嗎? (PHP)

我的想法是做此項檢查:

if(isset($_SERVER['argc']) AND $_SERVER['argc']>=2) { 
    // it must be the admin, give him full authorization, no further checks needed. 
} else { 
    // normal web request, authentication needed. 
} 

這是否有道理?

在我開始使用命令行來執行我的PHP腳本之前,我還需要知道些什麼嗎?

回答

1

只有服務器只有一個用戶纔是安全的。否則,你需要:

  • 檢查腳本
  • 正確的用戶ID使腳本只執行該用戶

(這是假設Linux服務器)

1

命令行不是一個很好的控制你的web應用程序的地方:你的應用程序顯示HTML輸出,這對於查看控制檯的人來說並不是很好(更不用提JavaScript了)等等)。

您可以安排從命令行運行時生成不同的輸出,但作爲實際問題:爲什麼要這麼做呢?爲什麼不讓管理員像任何其他用戶一樣通過網絡進行身份驗證?

如果你想擁有內置到應用程序無論如何,雖然特殊的後門,我建議這樣的事情(這是基於Web):

define('ADMIN_BACKDOOR', true); // comment out to disable 
$is_admin = defined('ADMIN_BACKDOOR') && $_SERVER['REMOTE_ADDR'] == '127.0.0.1'; 

這是IMO幾乎不可能利用,並它允許您從自然環境(瀏覽器)進行管理訪問。

+0

我需要這個'後門',因爲我希望能夠調用無法通過網絡訪問的腳本,並且無需登錄即可對自己進行身份驗證。我幾乎沒有任何管理服務器的經驗,而且我即將簽署專門的服務器計劃。我認爲命令行是讓cronjobs訪問我的腳本的最佳方式。更具體地說,我需要讓爬蟲開始爬行。我已經爲使用命令行的情況建立了特殊的輸出設置(例如:不顯示任何html的例外) – HappyDeveloper 2010-11-28 11:25:52

+1

請解釋「無法通過網絡訪問」。如果他們確實無法訪問,那麼需要進行身份驗證?另外,我的印象是你想調用的腳本是你的「主」應用程序的一部分。如果他們專門被cron調用,那麼肯定這種方法沒問題。 – Jon 2010-11-28 11:28:21

相關問題