【问题标题】:Is it insecure to use 'localhost' as a callback URL in Auth0?在 Auth0 中使用“localhost”作为回调 URL 是否不安全?
【发布时间】:2018-08-17 09:54:57
【问题描述】:

我是否应该避免在 Auth0 中使用 http://localhost:3000 作为回调 url(尤其是在 devstage 环境中)?

我了解使用 localhost url 的 POST http 请求可能会受到攻击。但是,对于开发或舞台环境,这是我需要考虑的因素吗?

【问题讨论】:

  • 为什么认为你应该避免它?
  • 我了解使用 localhost url 的 POST http 请求可能会受到攻击。但是,对于开发或舞台环境,这是我需要考虑的因素吗?

标签: auth0


【解决方案1】:

实际上是一个非常好的问题,尽管实际上最好的答案是(常识)显而易见的答案。是的,使用http://localhost 是个坏主意,尽管便利性和实用性的权衡仍然使它成为经常使用的反模式。是的,在解释示例时甚至包括 Auth0 官方文档以使事情简单易懂...

不幸的是,localhost 受到了许多方(包括网络浏览器)的特殊对待,因此通常最好避免它。以下是考虑避免使用localhost 的一些原因:

1)。您的所有流量都是未加密的 (http),因此嗅探您的凭据是微不足道的(不是特定于 localhost,而是定义。如果您有机会引入 https,则值得一提)。

2)。回调本地主机是一个简单的冲突点,尤其是在身份验证的启动和回调分开的地方。

3)。由于糟糕的部署实践或(无意的)无知,通常如果在 DEV 环境中设置 localhost 回调,它们最终会被粘贴到 PRD 环境中。也是。

4)。如果您的两个应用程序都在本地主机上运行,​​即使端口不同,在本地测试 SSO 也会失败。

5)。依赖于新的co/authenticate 端点(跨源流)的嵌入式登录不能在允许的 Web 源字段(通过管理 API 或仪表板设置)中包含 localhost。请参阅here for more info - 您可以设置本地主机别名,在这种情况下,还可以将回调 url 更新为相同。

6)。 localhost 会受到用户代理(包括网络浏览器)的“特别”关注,这可能会导致不必要的干扰(宽泛的说法,但确实如此)。

7)。 Auth0 现在支持Custom Domains。如果你设置了一个自定义域,比如id.mysite.com,那么要在本地进行测试,你可以在你的主机文件中创建一个别名,例如。 app1.mysite.com - 在这种情况下,在所有引用相关域的设置(包括回调值)中使用 mysite.com 域是有意义的。

总而言之,现实是您只在开发开发,您必须完成您的工作。一个建议是不要使用localhost,只需在本地主机文件中为 127.0.0.1 设置一个别名,例如。 127.0.0.1 app1.mysite.com。它不会避免上面列出的所有风险,包括使用http,但它会避免一些陷阱。不会试图捍卫它的安全优势,只是说它会让你更难猜测白名单允许回调 url 列表中可能包含的内容。

【讨论】:

  • 感谢您的详细回复。非常感激。我已经开始研究其他可能的解决方案,并发现了一个名为 ngrok 的服务,它提供了一个到 localhost 的安全隧道。您有过此类服务的经验吗?
  • 嗨@TalisLazdins - 有趣。是的,当我需要回电到我的本地机器时,我已经使用 ngrok 进行了很多个人测试 - 请在此处查看我的 SOF 答案 - stackoverflow.com/a/34659560/1882064
  • 出于安全原因,我工作地点的公司政策 (auth0) 不允许使用 ngrok :( 所以,虽然我同意它是一个非常有用的开发辅助工具 - 例如,您可以编写一个自定义数据库连接调用 API - 并使用 ngrok URL 指向运行 API 并与数据库等对话的本地机器 - 请记住,它也存在潜在的安全隐患。它会(默认情况下)同时打开 http 和 https端点,您可以将其配置为使用严格的 https。当您通过 NGROK 服务器代理(甚至是 ssl)流量时 - 他们可以看到所有内容(凭据)
  • @TalisLazdins - 如果您发现它有帮助,请将答案标记为正确,不胜感激 - 表明其他人相信答案。当然,任何其他问题都可以随时问。
猜你喜欢
  • 2020-08-27
  • 2019-10-20
  • 2020-04-02
  • 2013-07-09
  • 2017-04-11
  • 1970-01-01
  • 2019-01-06
  • 2016-11-27
  • 1970-01-01
相关资源
最近更新 更多