我有一個PHP腳本,我不希望任何人都能夠通過他們的瀏覽器運行。設置php文件權限,這樣只有我的服務器的捲曲可以運行
它發送電子郵件,並通過我的服務器的cron捲曲調用,但需要在公共www目錄。我需要什麼權限或所有者才能將文件設置爲僅允許我的服務器的curl執行(或者我的意思是讀取)文件?
我在centos上。
謝謝!
我有一個PHP腳本,我不希望任何人都能夠通過他們的瀏覽器運行。設置php文件權限,這樣只有我的服務器的捲曲可以運行
它發送電子郵件,並通過我的服務器的cron捲曲調用,但需要在公共www目錄。我需要什麼權限或所有者才能將文件設置爲僅允許我的服務器的curl執行(或者我的意思是讀取)文件?
我在centos上。
謝謝!
你既可以限制訪問的文件放置適當的訪問限制.htaccess文件的目錄或在你的PHP文件的開頭是這樣實現基本密碼檢查:
<?php
$password = $_GET['password'];
hash = '40bd001563085fc35165329ea1ff5c5ecbdbbeef'; //precalculated sha1 hash of your password
if (sha1($password) != $hash) {
die('Forget it!');
}
對於這可以進一步提高安全性,但你的想法...
爲什麼不使用php-cli從命令行運行而不是通過curl運行?
如果你真的必須承載它,你可以做這樣的事情在你的.htaccess
<Directory /your/path/>
Order allow,deny
Allow from 192.168.1.0/24
Allow from 127
</Directory>
如果可以的話,我會建議做一個不同的方法:運行該腳本通過CLI(調用php -f
在cron作業中)並讓PHP腳本檢查它是如何運行的。您可以使用php_sapi_name()找出命令行界面是否調用該腳本,並在從Web調用該腳本時終止該腳本。據我所知,這將是最安全的解決方案。
如果你真的需要通過curl
得到它,使用Josh的解決方案或定義需要添加到腳本的GET參數密鑰:
curl domain.com/script.php?password=123456
並不十分安全,因爲該密鑰將是可見的在crontab中,但是應該提供適當的防範來自外部的訪問,特別是如果你將它與檢查$_SERVER["REMOTE_ADDR"]
並確保它是127.0.0.1
。
這是不可能的,因爲措辭。從我所知道的情況來看,我認爲有很多選項可以用來解決您的問題:
您可以chown root或其他用戶,然後chmod 700,然後使用PHP的命令從cronjob調用腳本來自所有者的crontab文件的在線功能。
如果您需要通過curl訪問文件,那麼您正在訪問Web服務器,並且Web服務器需要能夠執行/讀取腳本,這將允許任何人執行腳本。
另一種選擇是使用基於規則的訪問控制,如下所述:http://library.linode.com/web-servers/apache/access-control/rule-based-access以確保只有源自服務器的連接能夠訪問相關文件,但這本身並不完全理想。
當然還有其他的解決方案,但我希望這是有幫助的。
所有優秀的答案,但這一個提供了所需的安全性,同時仍然允許我從我的瀏覽器訪問該文件進行測試。 謝謝! – robr 2010-04-17 18:09:44
歡迎您。你幫我得到了1024個聲望點:) Thx。 – selfawaresoup 2010-04-17 18:55:17