我们目前正在开发API,以允许客户和经销商购买和管理我们的产品。
目前我们尚未在服务器上启用CORS。这可以防止js(例如Angularjs)访问API。
我想启用这些标头,以便客户可以通过浏览器中的js访问我们的API。
在通配符上实现CORS的风险是什么,允许基本上是一个公共API?这是否会使我们的API本身更容易受到滥用或其他任何行为?
Access-Control-Allow-Origin: *
在向老派后端开发人员的开发人员提出论点时,还有什么我应该考虑的吗?感谢。
答案 0 :(得分:1)
假设:
如果您使用CORS从浏览器启用对API的全局访问,则:
如果可以欺骗Bob访问Mallory的网站,那么Mallory的网站可以指示Bob的浏览器从Alice的网站获取数据并将其提供给Mallory的网站。
如果Bob登录Alice的网站,那么浏览器将发送认证为Bob的所有cookie。
然后,Mallory可以访问Alice网站上任何应该是Alice和Bob私有的数据(例如Bob的订单历史记录,医疗记录或Alice的网站正在存储的任何其他内容)。如果通过API提供的数据仅包含公共信息,那么将其全局访问就没有问题。如果它包含个人数据,那么您需要考虑使用一些辅助身份验证方法。
答案 1 :(得分:0)
如果您的API是公开的,我看不到任何风险..(即使它是带身份验证的私有API) 简单地说,人们就可以从他们自己的域名中调用它。
但您可以将其限制为域,您不必使用通配符。