我有一个应用程序使用帐户slug用于格式myapplication.com/{SLUG}
的各种帐户,类似于Github的工作方式。这个域名有SSL证书,一切都很好。
但是,我有一些客户购买了他们提供给客户的域名,并将其转发到我的应用程序的帐户页面。
例如,假设“John Smith”购买了域johnsmithisawesome.com
,并将该域设置为转发到myapplication.com/johnsmithisawesome
。它主要用于品牌推广,因此John可以向客户提供一个很酷/吸引人的域名,最终将它们发送到我的应用程序。
请注意,此重定向仅发生一次。我没有使用它作为代理,它只是一种方便的方法,人们使用一个吸引人的域,将它们完全重定向到应用程序域。在初始重定向之后,客户端将在应用程序域上,并且所有请求都直接进入受保护的应用程序,并且它们不应再引用不安全的域。
另请注意,没有安全凭据来回传递给不安全的域。如果客户端必须登录,则他们直接在应用程序域上执行此操作,并且根本不与不安全的域进行交互。
流程基本上是这样的:
johnsmithisawesome.com
johnsmithisawesome.com
的DNS使用指向myapplication.com/johnsmithisawesome
myapplication.com/johnsmithisawesome
myapplication.com/johnsmithisawesome
,没有进一步的请求通过johnsmithisawesome.com
我希望在我想要完成的事情中明确说明这一点,我知道我对术语并不熟悉。
在域名上没有SSL证书的情况下是否存在安全风险,只是将其转发给我的应用程序?
我的假设是无所谓,因为实际的应用程序本身受SSL(或TLS作为新标准)的保护,我想不出使用域只是转发的任何安全风险,但是想要和一些比我更了解这个的人检查:)
答案 0 :(得分:1)
不幸的是,简短的回答是肯定的,如果您想保护它,您也需要为其他域提供单独的SSL证书。
请考虑以下事项。 Alice(最终用户)在她的浏览器中输入johnsmithisawesome.com,浏览器发出请求。中间人攻击者Mallory捕获请求,向https://yourapplication.com/johnsmithisawesome
发出请求,该请求在Mallory和您的应用程序之间创建SSL会话。当Mallory收到响应时,将对您的应用程序的所有引用转换为http://johnsmithisawesome.com
并返回结果(已修改)页面
爱丽丝。
您的应用程序可以看到的是这是https服务的请求,一切都很好。爱丽丝可以看到的是她进入一个域并获得了结果,甚至URL栏中的域名也与她想要看到的内容相符。 Mallory可以看到的是Alice和您的应用程序之间的所有(可能是保密的)流量。 Alice的唯一提示是浏览器中没有SSL的迹象,但是大多数用户都没有发现它。
这称为SSL Stripping,有一些现成的工具可以通过几次点击将其关闭。与原始想法相比,您的场景有点特殊,但它只是帮助攻击者。
事实上,马洛里甚至不需要这样做。如果没有johnsmithisawesome.com的证书,Mallory可以直接替换响应,而且他并不需要严格地删除SSL,因为没有任何SSL。 :)
这就是HSTS response header的发明,应该由您的应用程序和johnsmithisawesome.com在重定向期间发送。
答案 1 :(得分:0)
只要您不使用HTTP访问转发域,您就技术上不需要拥有证书,即重定向将起作用。只有当您想使用HTTPS访问转发域时,您在技术上需要此域的证书,即使在此域上执行的所有操作都要转发到其他位置。否则,最终用户将在浏览器中收到警告,并且不会进行转发。
但是,即使技术上不需要,出于安全原因,在转发域上使用HTTPS仍然是有意义的。
所有进一步的请求都通过myapplication.com/johnsmithisawesome,没有进一步的请求通过johnsmithisawesome.com
请注意,这只是技术观点,哪些有效,哪些无效。
我将此解释为对客户端域只有一个请求导致重定向到最终域。并且没有敏感数据将与客户端域共享,但仅与最终(安全)域共享。
在这种情况下,主攻击向量是中间攻击的人,它会更改重定向的目标,例如从myapplication.com/johnsmithisawesome
到攻击者控制的域和像myapplication-secure.com/johnsmithisawesome
这样的URL。通过正确命名的域,攻击者肯定会诱使用户相信他到达了正确的站点。
通过使用HTTPS保护重定向可以减轻此类攻击,并且在安全方面,这是最佳选择。但这意味着客户端应该首先使用HTTPS访问客户端域,否则攻击者可能会劫持初始请求并更改重定向。如果接受此风险并希望在第一个请求期间攻击者不在场,则可能会重定向到HTTPS并添加HSTS标头以强制将来在客户端域上使用HTTPS,或者可以将301重定向到最终域而不是302重定向。使用301,浏览器将缓存重定向,并且不会再次询问客户端服务器,而是在下次访问时直接进入最终域,从而绕过设法拦截对客户端域的请求的攻击者。
johnsmithisawesome.com的DNS使用HTTP REDIRECT指向myapplication.com/johnsmithisawesome
这不是它的工作方式。
从技术上讲,DNS无法发出HTTP重定向。 DNS仅用于将主机名解析为IP地址。然后,此地址的HTTP服务器可以在HTTP级别执行重定向。
某些DNS提供商仍提供此类HTTP重定向。但这可以通过将主机名解析为DNS提供商拥有的IP地址并在此IP地址上运行特殊的HTTP服务器来实现配置的HTTP重定向。有时他们会让客户配置,如果这将是301或302重定向,有时不是。通常,无论如何都无法在这种设置中配置证书。