在API上启用CORS

时间:2014-10-09 13:28:53

标签: javascript angularjs apache api cors

我们目前正在开发API,以允许客户和经销商购买和管理我们的产品。

目前我们尚未在服务器上启用CORS。这可以防止js(例如Angularjs)访问API。

我想启用这些标头,以便客户可以通过浏览器中的js访问我们的API。

在通配符上实现CORS的风险是什么,允许基本上是一个公共API?这是否会使我们的API本身更容易受到滥用或其他任何行为?

Access-Control-Allow-Origin: *

在向老派后端开发人员的开发人员提出论点时,还有什么我应该考虑的吗?感谢。

2 个答案:

答案 0 :(得分:1)

假设:

  • Alice,一个运营网站的人
  • Bob,使用Alice网站的人
  • Mallory,一个运行恶意网站的人

如果您使用CORS从浏览器启用对API的全局访问,则:

如果可以欺骗Bob访问Mallory的网站,那么Mallory的网站可以指示Bob的浏览器从Alice的网站获取数据并将其提供给Mallory的网站。

如果Bob登录Alice的网站,那么浏览器将发送认证为Bob的所有cookie。

然后,Mallory可以访问Alice网站上任何应该是Alice和Bob私有的数据(例如Bob的订单历史记录,医疗记录或Alice的网站正在存储的任何其他内容)。

如果通过API提供的数据仅包含公共信息,那么将其全局访问就没有问题。如果它包含个人数据,那么您需要考虑使用一些辅助身份验证方法。

答案 1 :(得分:0)

如果您的API是公开的,我看不到任何风险..(即使它是带身份验证的私有API) 简单地说,人们就可以从他们自己的域名中调用它。

但您可以将其限制为域,您不必使用通配符。