【问题标题】:Restrict access/media resources request from a specific domain solution, instead of direct access by .htaccess限制来自特定域解决方案的访问/媒体资源请求,而不是通过 .htaccess 直接访问
【发布时间】:2020-05-22 19:07:11
【问题描述】:

我想创建一个域,例如media.mywebpage.com 来存储媒体访问权限。

然后,我希望限制直接访问和其他域没有白名单。这意味着人们不能直接在浏览器中输入media.mywebpage.com/img/foo.png,然后它会返回 403。

但将域列入白名单,例如blog.mywebpage.com。允许来自该域的所有请求,然后返回对网页的正确媒体访问权限(状态 200)。

请注意media.mywebpage.com是一个媒体库,我希望从这个域的根目录修改.htaccess。

【问题讨论】:

    标签: apache .htaccess


    【解决方案1】:

    通常使用路由脚本来访问这些资源。通过直接链接或通过将传入请求重写到该路由脚本。该脚本显然允许您执行您想要的任何授权检查。是的,这意味着实际的媒体资源应该是 http 服务器发布的文件系统部分的一部分:

    RewriteEngine on
    RewriteRule ^/?img/ /path/to/script.php [END]
    

    然后script.php(显然不一定是 php 脚本)可以执行授权检查,例如通过测试引荐来源域(请记住,尽管这样的检查很容易被欺骗,因为引荐来源标头很容易欺骗)。例如,您可以在 php.ini 中评估 $_SERVER['HTTP_REFERER'] 超全局变量。或者任何你想要的。如果授权被授予,则脚本读取并分发媒体资源作为对请求的响应,否则返回 401 标头。这种方法的优点是您可以灵活地执行脚本实际应该执行的操作,特别是对于以后的扩展,例如基于用户的会话或其他任何内容。

    另一种方法是直接在http服务器的级别上实现这个,但如上所述是有限的:

    RewriteEngine on
    RewriteCond %{HTTP_REFERER} ^blog\.mywebpage\.com$ [NC]
    RewriteRule ^ - [E=401]
    

    这两种方法都不是完全稳健,也不是不可靠。试图以这种方式防止热链接有时有效,有时无效。问题是你为什么要拒​​绝访问资源,考虑到你明确发布了它......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-17
      • 1970-01-01
      • 2015-10-07
      • 1970-01-01
      • 2021-11-12
      • 2021-06-25
      相关资源
      最近更新 更多