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

看板PHP作者 (蔥頭)時間11年前 (2014/05/02 16:08), 編輯推噓0(0019)
留言19則, 5人參與, 最新討論串1/1
請問一下, 假設要避免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的?? 有人知道為什麼嗎?? -- 感謝大家的推文 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 203.69.59.91 ※ 文章網址: http://www.ptt.cc/bbs/PHP/M.1399018134.A.F2D.html

05/02 16:18, , 1F
crontab在你的server上執行 怎麼會由外部來執行
05/02 16:18, 1F

05/02 16:22, , 2F
如果你的PHP是直接跑的 直接放在網頁目錄外最簡單
05/02 16:22, 2F

05/02 16:23, , 3F
假設程式放在web service下~ 就有可能~
05/02 16:23, 3F

05/02 16:32, , 4F
看來用command line應該用抓不到ip了
05/02 16:32, 4F

05/02 17:06, , 5F
是阿放到網頁以外不就結了 如果抓到IP就趕快停止執行
05/02 17:06, 5F

05/02 22:51, , 6F
後來想了一下~ 只要判斷取得的ip是不是空的就可以了~
05/02 22:51, 6F

05/02 22:51, , 7F
用HTTP取得的ip一定會有值,command line則不會
05/02 22:51, 7F

05/03 01:59, , 8F
不過說真的 設deny也沒很難
05/03 01:59, 8F

05/03 08:14, , 9F
也是啦
05/03 08:14, 9F

05/03 09:33, , 10F
if (php_sapi_name() != 'cli') { exit; }
05/03 09:33, 10F

05/03 13:44, , 11F
不用這麼麻煩..
05/03 13:44, 11F

05/03 13:44, , 12F
你用在 Send Http Request 的時候 User Agent 用特別的字串
05/03 13:44, 12F

05/03 13:45, , 13F
而程式那端只接受特定 User Agent 來往就可以了
05/03 13:45, 13F

05/03 13:47, , 14F
驗證的話:'WORKER/2.0' == $_SERVER['HTTP_USER_AGENT']
05/03 13:47, 14F

05/03 13:48, , 15F
基本上安全很多了,因為 User Agent 要被撞到是很困難的事
05/03 13:48, 15F

05/03 13:48, , 16F
如果不是內部人自己知道的話,沒人知道你的腳本只接受哪個 UA
05/03 13:48, 16F

05/03 13:51, , 17F
如果 UA 不是正確的,則就輸出 404 或 忽略所有動作
05/03 13:51, 17F

05/03 16:41, , 18F
回樓上 他應該是用 php this_is_cron_job.php
05/03 16:41, 18F

05/03 16:42, , 19F
這種方式跑的
05/03 16:42, 19F
文章代碼(AID): #1JOrAMyj (PHP)
文章代碼(AID): #1JOrAMyj (PHP)