[請益] 關於使用crontab 安全性問題

作者: tas72732002 (蔥頭)   2014-05-02 16:08:52
請問一下, 假設要避免crontab被別人透過http執行,
我目前想到
1. web service(nginx) 阻擋存取權限
2. os 設定檔案執行權限
但以上兩個都覺得有點麻煩,
想請問可否用程式方式來阻擋,例如ip??
以下是我用來抓取ip的function
if(!empty($_SERVER['HTTP_CLIENT_IP'])) $myip=$_SERVER['HTTP_CLIENT_IP'];
else if(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) $myip=$_SERVER['HTTP_X_FORWARDED_FOR'];
else $myip=$_SERVER['REMOTE_ADDR'];
return $myip;
但實際透過crontab run之後, 發現ip是null的??
有人知道為什麼嗎??
作者: MOONRAKER (㊣牛鶴鰻毛人)   2014-05-02 16:18:00
crontab在你的server上執行 怎麼會由外部來執行
作者: danny8376 (釣到一隻猴子@_@)   2014-05-02 16:22:00
如果你的PHP是直接跑的 直接放在網頁目錄外最簡單
作者: tas72732002 (蔥頭)   2014-05-02 16:23:00
假設程式放在web service下~ 就有可能~看來用command line應該用抓不到ip了
作者: MOONRAKER (㊣牛鶴鰻毛人)   2014-05-02 17:06:00
是阿放到網頁以外不就結了 如果抓到IP就趕快停止執行
作者: tas72732002 (蔥頭)   2014-05-02 22:51:00
後來想了一下~ 只要判斷取得的ip是不是空的就可以了~用HTTP取得的ip一定會有值,command line則不會
作者: danny8376 (釣到一隻猴子@_@)   2014-05-03 01:59:00
不過說真的 設deny也沒很難
作者: tas72732002 (蔥頭)   2014-05-03 08:14:00
也是啦
作者: iceblue7x (滿城盡帶路人甲)   2014-05-03 09:33:00
if (php_sapi_name() != 'cli') { exit; }
作者: alog (A肉哥)   2014-05-03 13:44:00
不用這麼麻煩..你用在 Send Http Request 的時候 User Agent 用特別的字串而程式那端只接受特定 User Agent 來往就可以了驗證的話:'WORKER/2.0' == $_SERVER['HTTP_USER_AGENT']基本上安全很多了,因為 User Agent 要被撞到是很困難的事如果不是內部人自己知道的話,沒人知道你的腳本只接受哪個 UA如果 UA 不是正確的,則就輸出 404 或 忽略所有動作
作者: danny8376 (釣到一隻猴子@_@)   2014-05-03 16:41:00
回樓上 他應該是用 php this_is_cron_job.php這種方式跑的

Links booklink

Contact Us: admin [ a t ] ucptt.com