繁体   English   中英

跨域API访问安全性

[英]Cross-Domain API Access Security

这是关于跨域API安全性的问题。 提出此问题以便对他人有用的最佳方法是通过一个假设的示例。

  • 域APIHOST.COM希望允许访问其资源到FRIENDLYSITE1.COM和FRIENDLYSITE2.COM(但没有其他域)
  • FRIENDLYSITE由其他人拥有,APIHOST无法直接访问它们。 他们可能正在运行任何服务器技术。 他们愿意托管其他内容,但没有什么太复杂的。

当鲍勃使用Web浏览器访问FRIENDLYSITE1.COM时,他对FRIENDLYSITE1.COM(或APIHOST.COM)的凭据就无关紧要。 应在APIHOST.COM和FRIENDLYSITE1.COM之间处理安全性。

我研究了所有跨域请求技术(CORS,iFrames和JSONP),但是所有这些都假定安全性应该来自浏览器的Bob,而不是来自Bob访问的FRIENDLYSITE1.COM域。

有没有一种方法可以在不涉及Bob和他的浏览器的情况下,在两台服务器之间处理安全性的情况下进行跨域API访问?

如果要保护两台服务器之间的通信安全,则需要使用安全的传输方式(例如https),并使用一些仅提供给希望允许访问的站点的凭据。

如果需要,这些凭据可以像用户名和密码一样简单。 在这种情况下,您将向FRIENDLYSITE1.COM提供一些凭据,并且每当要与APIHOST.COM建立连接时,它将在每个API请求中包含这些凭据(或者您的API支持创建cookie的登录名,用于后续的API调用)。


另一方面,如果您真正要问的是,由FRIENDLYSITE1.COM托管的网页中包含Javascript,而这些网页中的Javascript要访问APIHOST.COM,那么情况就不同了。 。 由于这种情况实际上是通过用户计算机(不安全的环境)上的浏览器连接的,因此您像上一示例中那样使用凭据会将这些凭据公开给任何人,因此它们不再是秘密。

在这种情况下,您能做的最好的就是为API启用APIHOST.COM,并且仅允许站点FRIENDLYSITE1.COM和FRIENDLYSITE2.COM进行CORs访问。 这将阻止来自任何其他站点的任何网页从浏览器访问APIHOST.COM,但不会阻止任何服务器或任何服务器代理访问APIHOST.COM。 基本上不可能允许从特定网页进行访问,但不允许从其他任何地方进行访问。 这是因为网页是完全不安全的,因此您不能使用网页中的凭据,但要对其保密。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM