【问题标题】:How to restrict users to access a file on a web server? [closed]如何限制用户访问 Web 服务器上的文件? [关闭]
【发布时间】:2012-01-27 10:48:37
【问题描述】:

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

而且我担心用户可以访问它并弄乱数据库。有没有办法对用户隐藏它,但保留它以便我可以编辑它并且 cron 作业可以执行它?

【问题讨论】:

    标签: php mysql security permissions file-permissions


    【解决方案1】:

    您应该将其保存在无法通过网络访问的目录中。如果您想将其保留在当前位置,则可以在代码中添加检查以查看它是从浏览器还是由爬虫(使用用户代理、引荐来源网址等)调用的,以及它是从浏览器调用还是由爬虫显示错误消息,否则让它执行。

    【讨论】:

    • 所以说我所有的网站文件都位于 /root/ 目录中,所以我应该把这个文件放在外面吧?
    • 是的。如果您的 Web 可访问目录是 /root/,则在同一级别创建一个目录(例如 /cron/)并将您的 cron 文件放入其中。这样就不能通过网络访问了。
    • @SergeiTulentsev 不,我的意思是如果它被浏览器或爬虫调用,则显示错误消息。更新了解决方案以反映这一点。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      有几个技巧可以帮助你。

      1. 您可以检查 REMOTE_IP。如果不是本地主机,就死掉。

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

      3. 将此脚本放置在无法通过网络访问的文件夹中(即在您的 www-root 之外)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-09-26
        • 1970-01-01
        • 1970-01-01
        • 2019-05-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-26
        相关资源
        最近更新 更多