首先要道歉的是:对我来说,这似乎是一个“愚蠢”的问题,我相信不久之后我会后悔甚至问这个问题……但是我现在无法理解,因为我的思维似乎被卡在错误的路上。所以请耐心地和我一起解决:
我理解“同源策略”对于Web服务来说很麻烦,而CORS松开了限制,使Web服务能够合理地工作,同时仍然为用户提供良好的安全性。我的问题是:CORS究竟是如何做到这一点的?
假设用户访问网站A,该网站提供的代码会向网站Z发出Web服务请求。但是我已经侵入并破坏了网站Z,并将其变成攻击站点。我迅速让它对所有CORS请求做出积极回应(header add Access-Control-Allow-Origin:“*”)。不久之后,用户的计算机就会被我的攻击从Z中攻陷。
在我看来,用户从未直接访问过Z,也不知道Z的存在,也从未“批准”过Z。而且,在入侵事件被发现之后,网站A似乎无法阻止它发生(除非自己下线:-))。难道不应该是安全问题要求A认证Z,而不是Z认证A吗?我错过了什么?