[英]CLI cron job sending get request to URL but 404 for everyone else
我想为CakePHP设置一个cron作业,该作业在我的Cake Application中发送GET请求的URL(或在我的控制器中运行一个函数)。 但是,如果用户访问此URL,他们只会得到一个404以防止滥用。
我该怎么做? 请问像这样的工作呢?
注意:我正在使用CakePHP 2.3.0
进行此操作的最简单(且相当安全)的方法是检查用户代理 。 这样的事情(示例假设您正在使用cron的“ wget”)。 在crontab中,您可以使用它使它每小时运行7分钟:
7 * * * * cd /tmp; /usr/bin/wget http://domain/controller/cron; rm cron
如果cron作业与网站在同一服务器上运行,则可以使用“ localhost”代替“ domain”; 否则,请使用您的域名(例如:“ www.example.com”)。 将您的cron方法所要使用的控制器名称替换为“ controller”一词。 接下来,在控制器的PHP中:
public function cron() {
if (substr($_SERVER['HTTP_USER_AGENT'], 0, 4) != 'wget')
$this->redirect('/');
...
这只是“合理地”安全,因为欺骗用户代理并不难。 我无法给您一个生成404的好方法,而又不会进一步了解您的应用程序(不过其他人可能可以); 这会将它们发送到您的主页,这也许足够好。
如果要使用其他名称(“ cron”以外的名称),请记住更改crontab和PHP。
如果您没有使用cron调用wget来调用您的方法,则可以使它适应您使用的方法所生成的任何用户代理字符串。
如果是我,我可能还会检查它是否是cron打电话的正确时间 (例如:每小时7分钟的前10秒内)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.