【发布时间】:2012-01-27 10:48:37
【问题描述】:
您好,我有一个更新数据库的文件。我将它用于 cron 作业,但如果有人像这样访问它,它也可以工作:http://myweb.com/files/file.php
而且我担心用户可以访问它并弄乱数据库。有没有办法对用户隐藏它,但保留它以便我可以编辑它并且 cron 作业可以执行它?
【问题讨论】:
标签: php mysql security permissions file-permissions
您好,我有一个更新数据库的文件。我将它用于 cron 作业,但如果有人像这样访问它,它也可以工作:http://myweb.com/files/file.php
而且我担心用户可以访问它并弄乱数据库。有没有办法对用户隐藏它,但保留它以便我可以编辑它并且 cron 作业可以执行它?
【问题讨论】:
标签: php mysql security permissions file-permissions
您应该将其保存在无法通过网络访问的目录中。如果您想将其保留在当前位置,则可以在代码中添加检查以查看它是从浏览器还是由爬虫(使用用户代理、引荐来源网址等)调用的,以及它是从浏览器调用还是由爬虫显示错误消息,否则让它执行。
【讨论】:
如何解决它取决于您的托管环境,但如果您需要 http 访问并使用 Apache 网络服务器,您可以在 .htaccess 文件中配置访问权限。如果您使用 IIS,请在 IIS 管理器中配置文件权限和访问权限。顺便说一句,最好的解决方案和最安全的做法是让文件远离公共区域,并直接从 cron 作业中调用文件。
【讨论】:
有几个技巧可以帮助你。
您可以检查 REMOTE_IP。如果不是本地主机,就死掉。
您可以验证是否传递了一个特殊的“秘密”参数。喜欢http://myweb.com/files/file.php?access_key=6rNPY6PhXPDf。如果它不存在或无效,则死亡。
将此脚本放置在无法通过网络访问的文件夹中(即在您的 www-root 之外)
【讨论】: