如何限制用户访问web服务器上的文件


How to restrict users to access a file on a web server?

嗨,我有一个更新数据库的文件。我将它用于cron作业,但如果有人像这样访问它也可以工作:http://myweb.com/files/file.php

我担心用户可以访问它并扰乱数据库。是否有一种方法可以对用户隐藏它,但保留它,以便我可以编辑它并且cron作业可以执行它?

你应该把它保存在一个网页无法访问的目录中。如果你想让它保持在它的当前位置,那么在代码中你可以添加一个检查,看看它是从浏览器或爬虫调用(使用user-agent, referrer等),如果它是从浏览器或爬虫调用显示一个错误消息,否则让它执行。

如何解决它取决于您的托管环境,但如果您需要http访问并且使用Apache webserver,您可以在.htaccess文件中配置访问权限。如果使用IIS,请在IIS管理器中配置文件权限和访问权限。顺便说一下,最好的解决方案和最安全的方法是使文件远离公共区域,并直接从cron作业调用文件。

有几个技巧可以帮到你。

  1. 您可以查看REMOTE_IP。

  2. 您可以验证是否传递了一个特殊的'secret'参数。比如http://myweb.com/files/file.php?access_key=6rNPY6PhXPDf。如果不存在或无效,则死亡

  3. 把这个脚本放在一个不能通过web访问的文件夹中(也就是说,在你的www-root之外)