繁体   English   中英

CLI cron作业将获取请求发送到URL,但其他人则返回404

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM