【问题标题】:Is it possible to include a file forbidden by a .HTACCESS FILE, If true then how can it be done?是否可以包含一个被 .HTACCESS 文件禁止的文件,如果为真,那么怎么做?
【发布时间】:2017-09-18 11:45:48
【问题描述】:

我在stackoverflow 上找到了一个答案,该答案建议拒绝对文件夹的所有访问,以防止直接访问它及其内容。然而,他们还建议 php 访问任何被 .HTACCESS 文件禁止的文件都没有问题。

现在从某种意义上说,这不是直截了当的,因为我花了更长的时间才开始工作,但仍然没有。

<?php

/*
 * the folder channel is in html folder#
 * the folder channel has its own .htaccess file with code like
 * deny from all
*/

include("channel/150508084959b5b611e1dcf.mp4");
?>

现在我在这里尝试播放禁止文件夹中的视频,希望它能正常工作,因为 php 包含该文件 但我只是在控制台中收到服务器错误 在 apache.log 文件中我得到 PHP Parse error: syntax error, unexpected '\xdf' (T_STRING)

<video src="channel/150508084959b5b611e1dcf.mp4" controls autoplay></video>

可能是我误解了给出的答案或 apache.log 文件,但我真的需要帮助。 提前致谢,非常感谢任何帮助。

【问题讨论】:

  • 尝试readfile 而不是include。您可能需要设置正确的 http 标头。视频src 应该是您的 php 文件的 url。

标签: php html apache .htaccess include


【解决方案1】:

听起来您想使用.htaccess 限制来防止人们直接通过网络请求访问您的内容。这些请求由 Apache 处理,它读取您的 .htaccess 文件并执行其中的规则。 PHP 能够绕过这些规则,因为它作为不同的进程运行并且不通过 Apache。

通过使用 PHP,您可以执行以下操作:

&lt;video src="video.php?id=150508084959b5b611e1dcf" controls autoplay&gt;&lt;/video&gt;

然后您的video.php 文件采用id 值并使用readfile (http://php.net/readfile) 或stream_get_contents (http://php.net/stream_get_contents) 或简单的文件读取并传递内容。

但是,如果您这样做是为了阻止人们直接访问您的内容,那么这并不能真正解决问题。人们只需向video.php 文件发出请求即可获取实际内容。您只是将一种方法替换为另一种方法。如果你真的想阻止人们,它会变得非常复杂,因为它变成了猫捉老鼠的游戏。

如果您担心有人链接到您的内容,您可以尝试一个简单的实现来防止盗链 (https://simple.wikipedia.org/wiki/Hotlinking): https://mediatemple.net/community/products/dv/204644230/prevent-hotlinking-with-a-htaccess-file

这不会阻止那些真正投入获取您的内容的人,但它会使仅在某些 HTML 中添加链接更具挑战性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-14
    • 1970-01-01
    相关资源
    最近更新 更多