V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
drymonfidelia
V2EX  ›  程序员

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

  •  
  •   drymonfidelia · 90 天前 · 4035 次点击
    这是一个创建于 90 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    20 条回复    2024-09-01 13:55:13 +08:00
    justdoit123
        1
    justdoit123  
       90 天前   ❤️ 4
    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
        2
    justdoit123  
       90 天前
    我感觉 Google 这种企业的做法合理一点,stack overflow 三天两头弹同意 cookie 的弹窗真的很烦。
    xmumiffy
        3
    xmumiffy  
       90 天前 via Android
    是法律和合规要求,不询问直接用会被欧盟定额或以全球收入为基准罚款
    doublleft
        4
    doublleft  
       90 天前
    localStorage 要 js 执行的,用于跨站跟踪的三方 cookie 一般就是一个 204 GET
    zoharSoul
        5
    zoharSoul  
       90 天前
    localStorage 别的网站访问不了啊
    cookie 有 xss 问题
    Huelse
        6
    Huelse  
       90 天前
    MossFox
        7
    MossFox  
       90 天前
    需要用户同意那个,具体政策相关没具体看过。不过对于后面的问题……

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

    此外就是,Cookies 承担的可以不止是单纯一个域名下使用的凭据。多个域名之间的跳转保留登录状态自动完成登录、或是 OAuth 等,其中的重定向步骤可以没有 JavaScript 的参与,直接靠服务端取 Cookie 和跳转设置新 Cookie 来完成验证。全靠客户端借助 LocalStorage 的话,这种场景用户那边体验会下滑,因为网络请求就不是几个重定向就完成的了,必须加载含 JavaScript 的页面来承担中间的一些步骤。
    maizero
        8
    maizero  
       90 天前
    各国的隐私法的要求。
    GDPR 特别严。
    美国有的州也比较严,例如加州。
    binaryify
        9
    binaryify  
       90 天前
    法律问题, 你这么干了,会被欧盟起诉
    drymonfidelia
        10
    drymonfidelia  
    OP
       90 天前
    @binaryify 这么干我确实没使用 cookies 啊
    drymonfidelia
        11
    drymonfidelia  
    OP
       90 天前
    @binaryify
    @maizero 能追踪用户的方法那么多,弹个 cookies 同意窗口我开发麻烦用户点一下也麻烦。我知道有个 saas 平台,引入它的 js 就能自动处理在需要的时候进行 cookies 弹窗,但是引入一个第三方 js 风险巨大,鬼知道他哪天会有意、无意(被黑了之类的情况)收集点什么
    cheng6563
        12
    cheng6563  
       90 天前
    jsp 老办法不就是在 url 上自动带上 jsessionid
    drymonfidelia
        13
    drymonfidelia  
    OP
       90 天前
    @cheng6563 加在 url 上的风险太大了吧,用户截图或者会议直播分享屏幕的时候就相当于直接把密码分享给所有人了
    Puteulanus
        14
    Puteulanus  
       90 天前
    技术上其实你说的对,不让用 cookie 还有很多追踪用户的替代方法
    但问题是欧盟给你开罚款的时候不一定听你这么解释
    lixuda
        15
    lixuda  
       90 天前
    法规问题,非技术问题
    codehz
        16
    codehz  
       89 天前   ❤️ 1
    欧盟那个 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
        17
    cheng6563  
       89 天前
    @drymonfidelia #13 把 id 搞得很长,一张图截不完
    bsfmig
        18
    bsfmig  
       89 天前
    如果你在欧盟没有经营实体,确实可以直接无视,甚至直接在页面上开嘲讽都没人管你。
    如果在欧盟有业务,那么你也不敢不遵守。
    billccn
        19
    billccn  
       88 天前
    @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
        20
    maizero  
       88 天前
    @billccn 是懂合规的:)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5394 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 07:52 · PVG 15:52 · LAX 23:52 · JFK 02:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.