2010-12-08 62 views
6

最新最好的方式,以確保只有科雷執行PHP腳本,而不是別人誰在你的PHP腳本跌跌撞撞..PHP和cron的:安全問題

我在想一個密碼變量....但這是合法的CRON命令? :

/usr/local/bin/php -f /home/mysite/public_html/dir/script?password=12345 

這樣通過HTTP訪問時,PHP腳本(除非他們知道密碼)

由於人們不能夠執行相同的命令。

回答

13

你應該保持這個文件的public_html

/usr/local/bin/php -f /home/mysite/script 
// is secure from public access 
+2

非常好感謝提到是可以做到的。 – Moe 2010-12-08 12:51:07

+1

優雅的解決方案.. +1 – 2012-09-26 09:34:46

0

如果您只需要從cron執行它,請不要將腳本放在public_html(或文檔根目錄下的任何位置)目錄中。這真的很簡單。

0

以外您可以通過命令行發送到PARAMS一個PHP文件。只是不像你在想什麼。

http://www.php.net/manual/en/reserved.variables.argc.php

但是,你也想保持這種淡出公衆的HTML文件夾,像其他人說。所以你不能向他們衝浪。從命令行運行的PHP不需要在任何類型的web服務器監視文件夾中。

0

或者您也可以通過IP 阻斷執行,做這樣的事情:

($ _ SERVER [ 'REMOTE_ADDR'] == 「127.0.0.1」)或死亡( 'NO ACCESS');

0

有一個密碼可以工作,但是:

  • 寫在crontab密碼是一個糟糕的主意,因爲其他地方的用戶可能能夠讀取其
  • 你的語法是不行的(它會嘗試運行腳本「script?password = 12345」。參數不能在shell腳本中命名,因此您必須運行「script.php 12345」

有效的解決方案是檢查您的PHP腳本,當前環境看起來像cron在啓動時提供的環境命令。 Cron特定的環境變量可能會幫助您確保腳本正在被cron運行而不是用戶運行。