2012-10-29 44 views
3

我目前正在研究一个涉及使用CRON作业的新项目。我可以保护我的远程用户的CRON脚本吗?

CRON脚本基本上运行SQL查询,将数据生成到文件中,并通过FTP将该文件发送到另一台服务器。

的脚本是一个活的网站(www.website.com/sendOrders.php)

我看不出有任何安全问题或威胁,我认为这是极不可能的,任何人都可以找到PHP脚本在服务器上。不过,我不希望脚本被任何外人执行。

有没有一种方法可以保护这个脚本?

感谢 彼得

+0

最简单的方法是定义一个秘密令牌,并通过从cron作业。 PHP文件可以被猜测或抓取,但令牌不能。 –

+0

有没有令牌可以被泄漏的可能性,我将如何传递令牌? POST或GET。我从来没有使用CRON,所以我不确定他们是否使用POST/GET? –

+0

如果它是一个实际的cron脚本,将它放在webroot之外。如果它是一个webcron,放入一个目录并让Apache处理HTTP授权。 – mario

回答

7

您可以将您的“秘密文件”移动到子文件夹中,然后在那里创建一个.htaccess file,以防止除了运行Cronjob的服务器之外的所有人访问该文件。

例子:

DENY FROM ALL 
ALLOW FROM 123.123.123.123 

如果你有shell访问你可能也把脚本的访问的文件夹外,并直接通过命令行运行或的cronjob是这样的:php script.php

3

为什么不只是移动该脚本的服务器的Web根之外,从CLI执行呢?这是没有任何人执行它的机会。

如果您必须在webroot中拥有它(并且应该没有理由),请确保请求的客户端是您正在运行它的服务器,并且应该足够了。

1

这似乎相当愚蠢。为什么machine A上的cron通过machine B上的HTTP调用脚本,当你可以简单地使用机器B的本地调度系统(无论它碰巧是什么操作系统)自己做这个工作?

然后,您可以将脚本隐藏在某个无法通过HTTP访问的位置,并使您的安全问题无法实现。

+0

该脚本运行的网站的其余部分使用相同的框架。如果我将它移动到其他地方,它将无法正常工作,但我知道你来自哪里。 –

+0

大多数体面的框架将允许你在web根目录之外运行它的一部分。 – McKracken

0

如果文件是不应该被完全锁定的文件夹中,这些包装线<Files whatever.php>...</Files>

<Files "cron.php"> 
    Order deny,allow 
    Allow from name.of.this.machine 
    Allow from another.authorized.name.net 
    Allow from 127.0.0.1 
    Deny from all 
</Files> 
相关问题