预定的PHP代码执行

时间:2011-05-18 15:24:12

标签: php codeigniter scheduled-tasks

嘿伙计们,我理解的方式是cron可以用来执行php代码,方法是启动php解释器并将其传递给要执行的脚本。

我想安排的代码是在codeigniter控制器/模型中。所以基本上控制器包含3个执行某些db统计数据的函数。每个功能都有自己的时间表。

如何保护该控制器,以免恶意执行代码?作为cron工作的一部分,我是否将一些信誉传递给控制器​​?或者我将该代码设置为单独的ci应用程序?

对此事的任何想法都将不胜感激。

感谢

3 个答案:

答案 0 :(得分:1)

您不应该为执行脚本创建控制器。您应该只创建一个普通PHP脚本,然后通过命令行/ cron启动它。

该脚本不应该在您的公共Web目录中,它应该位于其他位置(例如,在script文件夹中),不可由公众访问(脚本不应该是网页)。

因为如果你有一个脚本作为控制器,这意味着你通过HTTP服务器(不安全)来填充脚本,并且在你的cron任务中你必须使用像wget "localhost/mycontroller/myaction"(不太干净)。

答案 1 :(得分:0)

您始终可以将文件移到Web目录之外,因此您只能从服务器端访问它。另一种方法是更改​​文件的权限,因此您的服务器无法读取该文件,并在root下执行cron(不推荐)。

至于credis,只有传递正确的get变量才能使脚本运行。例如,脚本仅在您调用时运行:

http://localhost/script.php?chjfbbhjscu4iu793673vhjdvhjdbjvbdh=bugy34gruhw3d78gyfhjbryufgbcgherbciube

答案 2 :(得分:0)

我认为查询字符串的想法实际上并不是很糟糕,特别是如果这个URL是在防火墙后面的自己的网络上传递的,那么就没有真正令人担忧的问题了。

您可以实现的另一个安全功能是确保“客户端”请求IP地址等于服务器的IP地址,因此只有从执行控制器操作的服务器调用脚本时,脚本才能继续执行。