2011-05-18 61 views
0

嘿夥計們,我明白它的方式是cron可以用來執行php代碼,通過啓動php解釋器並將它傳遞給要執行的腳本的路徑。預定的php代碼執行

我想要安排的代碼是在codeigniter控制器/模型中。所以基本上控制器包含3個函數來執行一些數據庫統計。每個功能都有自己的時間表。

我該如何確保該控制器的安全,以便代碼不會被惡意執行?作爲cron工作的一部分,我是否會將一些信用傳遞給控制器​​?或者我把這個代碼作爲一個單獨的ci應用程序?

有關此事的任何想法,將不勝感激。

感謝

+0

你可以在這裏找到更多的答案:http://stackoverflow.com/questions/6034237/send-a-daily-email-notification-to-users-in-php – jeroen 2011-05-18 15:37:20

回答

0

你總是可以移動web目錄以外的文件,所以你只能從服務器端訪問。另一種方法是更改​​文件的權限,以便服務器無法讀取該文件,並在根目錄下執行cron(不推薦)。

至於credis,只要傳遞正確的get變量,就可以讓腳本運行。例如,腳本只運行當你調用:

http://localhost/script.php?chjfbbhjscu4iu793673vhjdvhjdbjvbdh=bugy34gruhw3d78gyfhjbryufgbcgherbciube 
+0

GET變量是一個壞主意,你應該不要依賴如此低的安全性來阻止任何人啓動您的腳本。實際上,您的腳本不應該作爲網頁訪問,它是一個腳本。 – 2011-05-18 15:41:18

+0

我只是給了不止一個選項,它是所有這些選項中最差的,但有時候更難以移動腳本。 – Colum 2011-05-18 15:43:57

1

做一個腳本你不應該創建一個控制器。您應該創建一個正常PHP腳本,並通過命令行/ cron啓動它。

腳本不應該在你的公共網頁目錄,它應該是在其他地方(在例如script文件夾),而不是由公衆開放(的腳本不應該是一個網頁)。

因爲如果你有一個腳本作爲控制器,這意味着你通過HTTP服務器,這是不安全 lanch腳本,並在您的cron任務,你必須使用像wget "localhost/mycontroller/myaction"(不乾淨)。

+0

您突出顯示的問題是我的問題以及我的想法,像@colum建議的那樣傳遞信譽的原因。正如我前面提到的,代碼在控制器中的原因是讓生活變得輕鬆,並使用CI類。 – djeetee 2011-05-18 16:01:43

+0

@djeetee我明白我的最後一段對於你的問題有點多餘......我強調儘管這個解決方案,即使需要更多的時間,也是值得的。 – 2011-05-18 16:05:18

0

我不認爲查詢字符串的想法實際上是不好的,特別是如果這個URL是通過防火牆後面的自己的網絡傳遞的,那麼就沒有真正的問題了。

您可以實現的另一個安全功能是確保「客戶端」的請求IP地址等於服務器的IP地址,因此只有在執行控制器操作的服務器調用該腳本時,腳本才能繼續。