作者tas72732002 (葱头)
看板PHP
标题[请益] 关於使用crontab 安全性问题
时间Fri May 2 16:08:52 2014
请问一下, 假设要避免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://webptt.com/cn.aspx?n=bbs/PHP/M.1399018134.A.F2D.html
1F:→ MOONRAKER:crontab在你的server上执行 怎麽会由外部来执行 05/02 16:18
2F:→ danny8376:如果你的PHP是直接跑的 直接放在网页目录外最简单 05/02 16:22
3F:→ tas72732002:假设程式放在web service下~ 就有可能~ 05/02 16:23
4F:→ tas72732002:看来用command line应该用抓不到ip了 05/02 16:32
5F:→ MOONRAKER:是阿放到网页以外不就结了 如果抓到IP就赶快停止执行 05/02 17:06
6F:→ tas72732002:後来想了一下~ 只要判断取得的ip是不是空的就可以了~ 05/02 22:51
7F:→ tas72732002:用HTTP取得的ip一定会有值,command line则不会 05/02 22:51
8F:→ danny8376:不过说真的 设deny也没很难 05/03 01:59
9F:→ tas72732002:也是啦 05/03 08:14
10F:→ iceblue7x:if (php_sapi_name() != 'cli') { exit; } 05/03 09:33
11F:→ alog:不用这麽麻烦.. 05/03 13:44
12F:→ alog:你用在 Send Http Request 的时候 User Agent 用特别的字串 05/03 13:44
13F:→ alog:而程式那端只接受特定 User Agent 来往就可以了 05/03 13:45
14F:→ alog:验证的话:'WORKER/2.0' == $_SERVER['HTTP_USER_AGENT'] 05/03 13:47
15F:→ alog:基本上安全很多了,因为 User Agent 要被撞到是很困难的事 05/03 13:48
16F:→ alog:如果不是内部人自己知道的话,没人知道你的脚本只接受哪个 UA 05/03 13:48
17F:→ alog:如果 UA 不是正确的,则就输出 404 或 忽略所有动作 05/03 13:51
18F:→ danny8376:回楼上 他应该是用 php this_is_cron_job.php 05/03 16:41
19F:→ danny8376:这种方式跑的 05/03 16:42