我目前正在研究一个涉及使用CRON作业的新项目。我可以保护我的远程用户的CRON脚本吗?
CRON脚本基本上运行SQL查询,将数据生成到文件中,并通过FTP将该文件发送到另一台服务器。
的脚本是一个活的网站(www.website.com/sendOrders.php)
我看不出有任何安全问题或威胁,我认为这是极不可能的,任何人都可以找到PHP脚本在服务器上。不过,我不希望脚本被任何外人执行。
有没有一种方法可以保护这个脚本?
感谢 彼得
我目前正在研究一个涉及使用CRON作业的新项目。我可以保护我的远程用户的CRON脚本吗?
CRON脚本基本上运行SQL查询,将数据生成到文件中,并通过FTP将该文件发送到另一台服务器。
的脚本是一个活的网站(www.website.com/sendOrders.php)
我看不出有任何安全问题或威胁,我认为这是极不可能的,任何人都可以找到PHP脚本在服务器上。不过,我不希望脚本被任何外人执行。
有没有一种方法可以保护这个脚本?
感谢 彼得
您可以将您的“秘密文件”移动到子文件夹中,然后在那里创建一个.htaccess file,以防止除了运行Cronjob的服务器之外的所有人访问该文件。
例子:
DENY FROM ALL
ALLOW FROM 123.123.123.123
如果你有shell访问你可能也把脚本的访问的文件夹外,并直接通过命令行运行或的cronjob是这样的:php script.php
。
为什么不只是移动该脚本的服务器的Web根之外,从CLI执行呢?这是没有任何人执行它的机会。
如果您必须在webroot中拥有它(并且应该没有理由),请确保请求的客户端是您正在运行它的服务器,并且应该足够了。
这似乎相当愚蠢。为什么machine A
上的cron通过machine B
上的HTTP调用脚本,当你可以简单地使用机器B的本地调度系统(无论它碰巧是什么操作系统)自己做这个工作?
然后,您可以将脚本隐藏在某个无法通过HTTP访问的位置,并使您的安全问题无法实现。
该脚本运行的网站的其余部分使用相同的框架。如果我将它移动到其他地方,它将无法正常工作,但我知道你来自哪里。 –
大多数体面的框架将允许你在web根目录之外运行它的一部分。 – McKracken
如果文件是不应该被完全锁定的文件夹中,这些包装线<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>
最简单的方法是定义一个秘密令牌,并通过从cron作业。 PHP文件可以被猜测或抓取,但令牌不能。 –
有没有令牌可以被泄漏的可能性,我将如何传递令牌? POST或GET。我从来没有使用CRON,所以我不确定他们是否使用POST/GET? –
如果它是一个实际的cron脚本,将它放在webroot之外。如果它是一个webcron,放入一个目录并让Apache处理HTTP授权。 – mario