【问题标题】:Prevent a server side script from a direct URL access防止服务器端脚本直接访问 URL
【发布时间】:2014-06-13 03:35:51
【问题描述】:

有一个用php(比如backend_file.php)或coldfusion(比如backend_file.cfm)编写的服务器端脚本。

可以说,我正在使用 Apache,并且我有一个示例 Web 文件夹(在我的本地主机上),例如:

  • backend_file.php
  • index.php

浏览器直接点击是否可以限制backend_file.php的访问?

不过index.php应该可以访问backend_file.php吧?

注意:index.php 可以通过直接 URL 访问来访问。

我提到 index.php 应该能够访问 backend_file.php,因为它可以让 ajax post 或 get 请求从 backend_file.php 获取信息?

【问题讨论】:

    标签: apache .htaccess hotlinking


    【解决方案1】:

    当请求某个文件时,您可以使用 mod_rewrite 发送禁止代码。将其放入文档根目录中的 .htaccess 文件中:

    RewriteRule ^backend_file\.php$ - [F,L]
    

    或者,您可以使用拒绝指令。在包含这个文件的目录下放一个.htaccess文件并添加:

    <Files "backend_file.php">
      Deny from all
    </Files>
    

    【讨论】:

      【解决方案2】:

      您需要依赖HTTP_REFERER,因为您正在从index.php 向后端文件发出HTTP 请求。您可以使用这样的规则:

      RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain\.com/index\.php [NC] 
      RewriteRule ^backend_file\.php$ - [F,NC]
      

      domain.com 替换为您的实际域名。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-22
        • 1970-01-01
        • 2016-03-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多