为什么国外使用 cookies 就需要用户明确同意?我把 cookies 序列化后丢进 localStorage,写个 interceptor 给所有 api 请求都加个请求头 cakes 把这个值发出去不是也能一样的效果

19 天前
 drymonfidelia

我知道第三方 cookies ,但已经被主流浏览器默认拦截了吧

3763 次点击
所在节点    程序员
20 条回复
justdoit123
19 天前
1. 技术上并不是需要用户同意。实际上你爱怎么用,就怎么用。但是欧盟有法律限制,具体不是很清楚,貌似是第三方 cookies 的使用需要用户同意。因为这些第三方 cookie 基本是 google ads 之流,轻松可以追踪到用户的浏览行为。你自己网站需要用的必要 cookies 不受此限制。虽然只是欧盟有这些限制,但是不知道为什么很多网站都把这种要“用户同意使用 cookie” 的弹框对所有地区的访客开启。我曾经试过访问一些国际大企业的网站,比如 Google 搜索,当你把代理设置在欧盟国家的时候,会弹出一个条款要你同意,但是代理设置成欧盟外的地区,这个弹框又不会出现。

2. 回到技术层面,你这种方案有一定风险。cookies 只是存储介质,如果只是存储一些 session 统计等无关紧要的信息,那你这样做也所谓。但是当 cookie 存储的信息是身份验证信息的时候,你的这种处理方式会带来一定风险。js 能把 cookie 丢到 localStorage ,意味着你的这种 cookie 可以被 JS 读取,意味着如果网站有 XSS 漏洞,用户的 身份验证信息会被攻击者偷走。一般而言,用来存储身份验证信息的 cookie 不需要用户同意。一般要设置成 Http-Only ( JS 无法读取,也就不会被 XSS 攻击者窃取)、Secure (只能在 https 这类安全通讯协议上传输)、SameSite 至少设置为 Lax (老版本的浏览器并没把 Lax 设为 SameSite 的默认值)。
justdoit123
19 天前
我感觉 Google 这种企业的做法合理一点,stack overflow 三天两头弹同意 cookie 的弹窗真的很烦。
xmumiffy
19 天前
是法律和合规要求,不询问直接用会被欧盟定额或以全球收入为基准罚款
doublleft
19 天前
localStorage 要 js 执行的,用于跨站跟踪的三方 cookie 一般就是一个 204 GET
zoharSoul
19 天前
localStorage 别的网站访问不了啊
cookie 有 xss 问题
Huelse
19 天前
MossFox
19 天前
需要用户同意那个,具体政策相关没具体看过。不过对于后面的问题……

当用户浏览器设置里面 禁用了 Cookies ,所有本地存储 (含 LocalStorage) 将也会完全不可用。尝试调用会报错。

此外就是,Cookies 承担的可以不止是单纯一个域名下使用的凭据。多个域名之间的跳转保留登录状态自动完成登录、或是 OAuth 等,其中的重定向步骤可以没有 JavaScript 的参与,直接靠服务端取 Cookie 和跳转设置新 Cookie 来完成验证。全靠客户端借助 LocalStorage 的话,这种场景用户那边体验会下滑,因为网络请求就不是几个重定向就完成的了,必须加载含 JavaScript 的页面来承担中间的一些步骤。
maizero
19 天前
各国的隐私法的要求。
GDPR 特别严。
美国有的州也比较严,例如加州。
binaryify
19 天前
法律问题, 你这么干了,会被欧盟起诉
drymonfidelia
19 天前
@binaryify 这么干我确实没使用 cookies 啊
drymonfidelia
19 天前
@binaryify
@maizero 能追踪用户的方法那么多,弹个 cookies 同意窗口我开发麻烦用户点一下也麻烦。我知道有个 saas 平台,引入它的 js 就能自动处理在需要的时候进行 cookies 弹窗,但是引入一个第三方 js 风险巨大,鬼知道他哪天会有意、无意(被黑了之类的情况)收集点什么
cheng6563
19 天前
jsp 老办法不就是在 url 上自动带上 jsessionid
drymonfidelia
19 天前
@cheng6563 加在 url 上的风险太大了吧,用户截图或者会议直播分享屏幕的时候就相当于直接把密码分享给所有人了
Puteulanus
19 天前
技术上其实你说的对,不让用 cookie 还有很多追踪用户的替代方法
但问题是欧盟给你开罚款的时候不一定听你这么解释
lixuda
19 天前
法规问题,非技术问题
codehz
19 天前
欧盟那个 cookie 其实也是包含 localStorage 等一切能在本地持久化的数据存储的(甚至包括 fingerprint 和 IP 这种不需要在浏览器存储的东西),别看人家写着 cookie 提示,那其实只是给用户的解释,毕竟 cookie 这个概念比较容易理解
原文摘抄如下
Personal data is any information that relates to an individual who can be directly or indirectly identified. Names and email addresses are obviously personal data. Location information, ethnicity, gender, biometric data, religious beliefs, web cookies, and political opinions can also be personal data. Pseudonymous data can also fall under the definition if it’s relatively easy to ID someone from it.
cheng6563
19 天前
@drymonfidelia #13 把 id 搞得很长,一张图截不完
bsfmig
18 天前
如果你在欧盟没有经营实体,确实可以直接无视,甚至直接在页面上开嘲讽都没人管你。
如果在欧盟有业务,那么你也不敢不遵守。
billccn
17 天前
@justdoit123 回答法律上的东西,最好不要“貌似”哦。你这个“貌似”就是错误的,GDPR 规定的是一切 cookie ,包括第一方的。同时 GDPR 要求网站让用户选择 cookie 的用途,比如说登录等必要的 cookie 可以接受,但广告、追踪等可以拒绝。

另外这个法律是只要服务欧盟用户就生效,并不管服务提供者在哪里,详见 https://gdpr.eu/article-3-requirements-of-handling-personal-data-of-subjects-in-the-union/ 第 2 款。不然的话服务商在欧盟以外注册个皮包公司就能规避,那这个法不就成了笑话。当然现实中小鱼小虾人家也不会管,但是美国很多中型网站因为不能合规会屏蔽整个欧洲。

@codehz 你的理解是对的,但是引用的是一个解释,不是法律条文。真正的原文: https://gdpr.eu/recital-30-online-identifiers-for-profiling-and-identification/
maizero
17 天前
@billccn 是懂合规的:)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1068994

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX