基于Cookie认证但无表单的API是否可能遭遇CSRF攻击?
原因在于浏览器对Cookie的存储和发送逻辑,和你理解的“上下文绑定”完全无关:
- Cookie是按目标域名归类存储的,不是按设置它的网站(源)绑定的。只要API设置的Cookie的
Domain属性是,这个Cookie就属于域,不管是SPA还是其他网站设置的,都会存在浏览器对应域的Cookie池里。 - 当任何网站(包括恶意站
)发起对 的请求时,只要满足Cookie的发送规则(比如路径匹配、SameSite属性允许跨域发送),浏览器都会自动把域下的有效Cookie塞进请求头里,根本不关心这个请求是从哪个网站发出来的。
- SPA
登录后,API给浏览器设置了归属域的认证Cookie——这个Cookie现在属于,和没有绑定关系。 - 当用户打开恶意站
,M的JS发起对 的请求时,浏览器会直接去的Cookie池里找有效Cookie,找到就自动带上,完全不管这个Cookie是触发设置的。 - 加上你假设的CORS完全开放(允许任意源、方法、请求头,支持凭据),恶意请求不仅能成功发送,还能拿到API的响应,风险拉满。
这就是Cookie认证下CSRF能搞事的核心:浏览器会自动带上目标域的Cookie,不管请求是不是你主动从合法网站发起的——攻击者只要诱导你在登录状态下访问恶意站,就能冒用你的身份操作API。
内容的提问来源于stack exchange,提问作者Pavel Voronin
相关产品推荐
相关产品推荐

