设置php文件权限,这样只有我的服务器的卷曲可以运行
我有一个PHP脚本,我不希望任何人都能够通过他们的浏览器运行。设置php文件权限,这样只有我的服务器的卷曲可以运行
它发送电子邮件,并通过我的服务器的cron卷曲调用,但需要在公共www目录。我需要什么权限或所有者才能将文件设置为仅允许我的服务器的curl执行(或者我的意思是读取)文件?
我在centos上。
谢谢!
你既可以限制访问的文件放置适当的访问限制.htaccess文件的目录或在你的PHP文件的开头是这样实现基本密码检查:
<?php
$password = $_GET['password'];
hash = '40bd001563085fc35165329ea1ff5c5ecbdbbeef'; //precalculated sha1 hash of your password
if (sha1($password) != $hash) {
die('Forget it!');
}
对于这可以进一步提高安全性,但你的想法...
为什么不使用php-cli从命令行运行而不是通过curl运行?
如果你真的必须承载它,你可以做这样的事情在你的.htaccess
<Directory /your/path/>
Order allow,deny
Allow from 192.168.1.0/24
Allow from 127
</Directory>
如果可以的话,我会建议做一个不同的方法:运行该脚本通过CLI(调用php -f
在cron作业中)并让PHP脚本检查它是如何运行的。您可以使用php_sapi_name()找出命令行界面是否调用该脚本,并在从Web调用该脚本时终止该脚本。据我所知,这将是最安全的解决方案。
如果你真的需要通过curl
得到它,使用Josh的解决方案或定义需要添加到脚本的GET参数密钥:
curl domain.com/script.php?password=123456
并不十分安全,因为该密钥将是可见的在crontab中,但是应该提供适当的防范来自外部的访问,特别是如果你将它与检查$_SERVER["REMOTE_ADDR"]
并确保它是127.0.0.1
。
这是不可能的,因为措辞。从我所知道的情况来看,我认为有很多选项可以用来解决您的问题:
您可以chown root或其他用户,然后chmod 700,然后使用PHP的命令从cronjob调用脚本来自所有者的crontab文件的在线功能。
如果您需要通过curl访问文件,那么您正在访问Web服务器,并且Web服务器需要能够执行/读取脚本,这将允许任何人执行脚本。
另一种选择是使用基于规则的访问控制,如下所述:http://library.linode.com/web-servers/apache/access-control/rule-based-access以确保只有源自服务器的连接能够访问相关文件,但这本身并不完全理想。
当然还有其他的解决方案,但我希望这是有帮助的。
所有优秀的答案,但这一个提供了所需的安全性,同时仍然允许我从我的浏览器访问该文件进行测试。 谢谢! – robr 2010-04-17 18:09:44
欢迎您。你帮我得到了1024个声望点:) Thx。 – selfawaresoup 2010-04-17 18:55:17