• 跨域Cookie的读取


    cookie的几个属性

    1 httpOnly:true 表示禁止客户端读cookie,即只能在服务端读取它
    2 SameSite:用来限制第三方 Cookie,从而减少安全风险。

    • Strict最为严格,完全禁止第三方 Cookie,跨站点时,任何情况下都不会发送 Cookie。换言之,只有当前网页的 URL 与请求目标一致,才会带上 Cookie。
    Set-Cookie: CookieName=CookieValue; SameSite=Strict;
    
    • Lax规则稍稍放宽,大多数情况也是不发送第三方 Cookie,但是导航到目标网址的 Get 请求除外。
      导航到目标网址的 GET 请求,只包括三种情况:链接,预加载请求,GET 表单。详见下表。
    Set-Cookie: CookieName=CookieValue; SameSite=Lax;
    
    • Chrome 计划将Lax变为默认设置。这时,网站可以选择显式关闭SameSite属性,将其设为None。不过,前提是必须同时设置Secure属性(Cookie 只能通过 HTTPS 协议发送),否则无效。
    Set-Cookie: widget_session=abc123; SameSite=None; Secure
    

    需要明确的

    • 跨域之后,不能读写cookie,例如a网站的cookie,b网站不能读到
    • samesite:none可以让c网站的cookie,由不能的调用方共享修改,例如a网站操作c网站,c网站写自己的cookie,而b网站也操作c网站,这时c网站的cookie里是可以包含a网站的操作内容的

    在keycloak中的应用

    keycloak中的cookie,它的会话状态使用了SameSite,从而在由一个网站到别一个网站时,如果你已经登录,那这些登录信息会带到另一个网站去,这是由SameSite特性决定的,和开发的程序无关,我们之间使用kc的session通讯

    Secure属性说明

    Secure属性是说如果一个cookie被设置了Secure=true,那么这个cookie只能用https协议发送给服务器,用http协议是不发送的。换句话说,cookie是在https的情况下创建的,
    而且他的Secure=true,那么之后你一直用https访问其他的页面(比如登录之后点击其他子页面),cookie会被发送到服务器,你无需重新登录就可以跳转到其他页面。但是如果这
    是你把url改成http协议访问其他页面,你就需要重新登录了,因为这个cookie不能在http协议中发送,事实上,对于samesite属性为None时,因为只有secure为true它才合法,
    所以这samesite=None也只能应用在https环境里。

    https已经很安全,所以在它里面可以用 Samesite=None;Secure=true

    浏览器对samesite和secure的默认值设置不同

    • 谷歌
    • 火狐

      火狐这块更加宽松,跨站的cookie,http协议方式也是可以读到的,谷歌是不可以的。

  • 相关阅读:
    SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
    Oracle中如何插入特殊字符: & 和 ' (多种解决方案)
    oracle学习链接
    ORACLE中的游标Cursor总结
    SVN使用教程总结
    SVN使用教程之-分支/标记 合并 subeclipse
    weblogic启动 web应用ssh关闭 nohup命令
    Oracle 学习之:ASCII,CHR函数的作用和用法
    Oracle数据库单表循环提取输出
    设计模式-七大原则
  • 原文地址:https://www.cnblogs.com/lori/p/15038230.html
Copyright © 2020-2023  润新知