【问题标题】:deny access php page but still make it possible to be included拒绝访问php页面,但仍然可以被包含
【发布时间】:2016-10-27 06:48:44
【问题描述】:

我目前正在运行一个 PHP 网站,我想知道是否有任何方法可以拒绝访问图像,如果在浏览器栏中输入了目录,但仍然能够在我的页面中使用该图像<img src=""> 标签。 我将所述图像存储在一个名为“images”的目录中,该目录与我的主页“home.php”处于同一级别。我熟悉 .htaccess 文件和其中的 deny from all 命令,但是,正如我所说,它不会在其他页面中显示“禁止”文件。我希望有人能帮助我。谢谢!

【问题讨论】:

标签: php html .htaccess


【解决方案1】:

也许你可以试试这个:

<Files "./your_directory/yourfile.png">
Order Allow,Deny
Deny from all
</Files>

【讨论】:

    【解决方案2】:

    基本上,我相信答案会是“否”,,因为在这两种情况下用户的浏览器都是发出请求的一方。 Apache 可能不知道或无法区分浏览器发出此类请求的两个“原因”。

    另一方面,您的主机端应用程序中的编程代码可能可以。 直接或使用 mod_rewrite 技巧,您可以将传入请求定向到服务器端脚本,该脚本可以检查整个 HTTP 请求并确定它应该产生什么样的响应:图像内容或 404。在这种情况下,Apache 接受请求......不Deny它......而是提供图像直接它自己,它交给一个脚本来做出决定。 (脚本仍然可以从文件中获取数据,可能来自 Apache 根本不会直接提供服务的目录,因此它可以“相当快”。)

    顺便说一句:您可以在&lt;Directory&gt;&lt;Location&gt; 级别使用指令来强制“将此请求交给某某脚本” 行为,这样,当用户的浏览器“请求某某图像”时,Apache 会运行该处理程序脚本,并传递一个包含所请求文件名称的 URL。用户将无法知道实际发生了什么。)

    【讨论】:

      【解决方案3】:

      您可以通过多种方式完成此操作,但互联网术语称为“盗链”。您可以使用此工具http://www.htaccesstools.com/hotlink-protection/ 来创建您自己的 .htaccess 文件。

      RewriteEngine on
      RewriteCond %{HTTP_REFERER} !^$
      RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain.com [NC]
      RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]
      

      【讨论】:

        猜你喜欢
        • 2018-07-19
        • 2019-01-08
        • 2021-10-17
        • 2016-01-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-02
        • 2016-03-14
        相关资源
        最近更新 更多