【问题标题】:Access to the site only to another site仅访问该站点到另一个站点
【发布时间】:2022-01-26 08:12:10
【问题描述】:

我有一个单独的服务器,带有用于在线广播的 icecast。还有另一个带有 wordpress 站点的服务器。一个 wordpress 站点使用 icecast 从服务器接收无线电流。问题是带有icecast的服务器是开放的,每个人都可以访问。我希望能够只访问 wordpress 网站。我尝试使用 nginx 来关闭访问并只为带有 wordpress 站点的 IP 服务器打开它,但它会阻止所有人。请告诉我如何做到这一点?

感谢您在这件事上的任何帮助。

【问题讨论】:

    标签: wordpress nginx icecast


    【解决方案1】:

    首先,我应该说,按照您的要求做技术上是不可能的。总有办法,即使通过代理您的流服务器端。但是,您可以通过在客户端连接时验证 Referer header 来做出合理的努力。

    当浏览器连接到 Icecast 以检索流时,它包含 Referer: 标头,指示用户访问流的 URL。例如:

    Referer: https://blog.example.com/
    

    据我所知,股票 Icecast 无法为您检查此标头。但是它确实有authentication hooks,这将允许您通过调用它们的 URL 并读取其响应来验证自己脚本中的标头。因此,在您的 Icecast 配置中,您将包括以下内容:

    <mount>
      <mount-name>/stream</mount-name>
      <authentication type="url">
        <option name="stream_auth" value="https://blog.example.com/icecast-auth-script.php" />
        <option name="headers" value="referer" />
        <option name="requestHeader." />
      </authentication>
    </mount>
    

    然后,在您的 PHP 脚本中,您可以查看类似 $_POST['requestHeader.referer'] 的内容。如果它符合您的要求,请告诉 Icecast 批准该流:

    header('icecast-auth-user: 1');
    

    【讨论】:

    • “这在技术上是不可能的”是一个大胆的声明。我的 icecast 服务器配置为仅接受来自单独的网络服务器的连接,并且所有连接都通过该网络服务器代理。任何人都无法直接连接到它。
    • @miknik 您的配置与此问题无关。 ?这是为了防止客户端访问其他网站,而不是其他主机。
    • 如果您通过 Nginx 反向代理 Icecast 服务器,以便从与您的网站相同的服务器向外部世界提供服务,那么您可以使用 Nginx 允许/拒绝使用提供的 cookie 访问 Icecast 流您的网站,通过动态更改流 url、附加查询参数、检查网页服务器日志中的 ip 地址、从您的页面启动 websocket 连接并检查它是否处于活动状态等
    • @miknik 对于一些无效的东西来说,这听起来像是很多工作。绕过所有这些混淆仍然很容易。顺便说一句,您意识到人们经常同时拥有多个公共 IP 地址,对吧?如果您将网络流量与流流量相关联作为身份验证措施,那么您就是在主动破坏您的网站以获取这些类型的用户。
    • 你可以说这很容易,但超过 99% 的互联网用户甚至都不知道从哪里开始。人们不会“经常”拥有多个公共 IP 地址,几乎所有互联网用户都有一个分配给他们的连接的 IP 地址,而那些拥有多个 IP 地址的人会使用多个 IP 地址中的一个以上来连接到同一 Web 服务器单机?这不是网络流量的路由方式。你可能会认为它的工作量很大,但这与“技术上不可能”不同
    猜你喜欢
    • 2014-12-16
    • 1970-01-01
    • 1970-01-01
    • 2020-05-05
    • 2019-02-28
    • 2014-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多