是否有任何最佳实践来实现会话登录以防止第三方插件/扩展向服务器发送请求?
我看到带有
httpOnly
标志的 cookie 可以阻止 javascript 交互,而 sameSite
标志可以减轻跨站点攻击,但是浏览器插件/扩展呢?
某些插件/扩展可以在其代码中调用
fetch
,如果凭据设置为 httpOnly
,则 include
cookie 会通过 fetch 自动发送,因此任何创建包含凭据的 fetch 的插件/扩展都可以请求服务器操纵用户数据?
# some_bad_plugin.js
fetch(YOUR_SERVER_URL, {
method: 'GET',
credentials: 'include',
})
我认为这个问题可以通过存储在
cookie
或localStorage
中的额外登录信息来缓解,并且对服务器的请求需要这些字段。但这似乎回到了没有httpOnly
饼干的开始......
有什么我错过的吗?
除了将 cookie 设置为包含 HttpOnly 和 Secure 属性之外,如果服务器为 cookie 设置了 sameSite=Lax 属性,则 cookie 将仅包含在顶级导航中,而不会包含在任何跨站点获取中
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#lax