[请益] 关于使用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