在Auth0中使用'localhost'作为回调URL不安全吗?
Is it insecure to use 'localhost' as a callback URL in Auth0?
我是否应该避免在 Auth0 中使用 http://localhost:3000
作为回调 url(特别是在 dev
或 stage
环境中)?
我了解使用 POST http 请求利用本地主机 url 进行攻击的可能性。但是,这是我需要考虑的开发或舞台环境吗?
实际上是一个很好的问题,尽管实际上最好的答案是(常识)显而易见的答案。是的,使用 http://localhost
是个坏主意,尽管便利性和实用性的权衡仍然使它成为经常使用的 anti-pattern。是的,在解释示例时甚至包括 Auth0 官方文档以使事情简单易懂...
不幸的是,localhost 受到许多方面(包括网络浏览器)的特殊对待,通常最好避免使用它。以下是一些考虑避免 localhost
:
的原因
1).您所有的流量都是未加密的 (http),因此嗅探您的凭据是微不足道的(不是特定于 localhost,而是 def。值得一提的是,如果您有机会引入 https)。
2).回调localhost是一个容易冲突的地方,尤其是在发起认证和回调分离的地方。
3).由于部署实践不佳或(无意的)无知,通常如果 localhost
回调是在 DEV 环境中设置的,它们最终会被粘贴到 PRD 环境中。也是。
4).如果您的两个应用程序都在本地主机上 运行,即使端口不同,在本地测试 SSO 也会失败。
5).依赖于新 co/authenticate
端点(跨源流程)的嵌入式登录不能在允许的 Web 源字段中包含本地主机(通过管理 API 或仪表板设置)。请参阅 here for more info - 您可以设置本地主机别名,在这种情况下,将回调 url 更新为相同也是有意义的。
6). localhost "special" 受到用户代理(包括网络浏览器)的关注,这可能会造成不必要的干扰(笼统的说法,但确实如此)。
7). Auth0 现在支持 Custom Domains。如果您设置了一个自定义域,例如 id.mysite.com
然后要在本地进行测试,您可以在您的主机文件中创建一个别名,例如。 app1.mysite.com
- 在这种情况下,在引用所涉及域的所有设置中使用 mysite.com
域是有意义的,包括您的回调值。
总而言之,现实情况是您只是在开发 Dev,您必须完成您的工作。一个建议是不要使用 localhost
,只需在本地主机文件中为 127.0.0.1 设置一个别名,例如。 127.0.0.1 app1.mysite.com
。它不会避免上面列出的所有风险,包括使用 http
,但它会避免一些陷阱。不会试图捍卫它的安全优势,只是说它会让你更难猜测你的 white-listed 允许的回调 url 列表中可能有什么。
我是否应该避免在 Auth0 中使用 http://localhost:3000
作为回调 url(特别是在 dev
或 stage
环境中)?
我了解使用 POST http 请求利用本地主机 url 进行攻击的可能性。但是,这是我需要考虑的开发或舞台环境吗?
实际上是一个很好的问题,尽管实际上最好的答案是(常识)显而易见的答案。是的,使用 http://localhost
是个坏主意,尽管便利性和实用性的权衡仍然使它成为经常使用的 anti-pattern。是的,在解释示例时甚至包括 Auth0 官方文档以使事情简单易懂...
不幸的是,localhost 受到许多方面(包括网络浏览器)的特殊对待,通常最好避免使用它。以下是一些考虑避免 localhost
:
1).您所有的流量都是未加密的 (http),因此嗅探您的凭据是微不足道的(不是特定于 localhost,而是 def。值得一提的是,如果您有机会引入 https)。
2).回调localhost是一个容易冲突的地方,尤其是在发起认证和回调分离的地方。
3).由于部署实践不佳或(无意的)无知,通常如果 localhost
回调是在 DEV 环境中设置的,它们最终会被粘贴到 PRD 环境中。也是。
4).如果您的两个应用程序都在本地主机上 运行,即使端口不同,在本地测试 SSO 也会失败。
5).依赖于新 co/authenticate
端点(跨源流程)的嵌入式登录不能在允许的 Web 源字段中包含本地主机(通过管理 API 或仪表板设置)。请参阅 here for more info - 您可以设置本地主机别名,在这种情况下,将回调 url 更新为相同也是有意义的。
6). localhost "special" 受到用户代理(包括网络浏览器)的关注,这可能会造成不必要的干扰(笼统的说法,但确实如此)。
7). Auth0 现在支持 Custom Domains。如果您设置了一个自定义域,例如 id.mysite.com
然后要在本地进行测试,您可以在您的主机文件中创建一个别名,例如。 app1.mysite.com
- 在这种情况下,在引用所涉及域的所有设置中使用 mysite.com
域是有意义的,包括您的回调值。
总而言之,现实情况是您只是在开发 Dev,您必须完成您的工作。一个建议是不要使用 localhost
,只需在本地主机文件中为 127.0.0.1 设置一个别名,例如。 127.0.0.1 app1.mysite.com
。它不会避免上面列出的所有风险,包括使用 http
,但它会避免一些陷阱。不会试图捍卫它的安全优势,只是说它会让你更难猜测你的 white-listed 允许的回调 url 列表中可能有什么。