<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                Chrome 51 開始,瀏覽器的 Cookie 新增加了一個`SameSite`屬性,用來防止 CSRF 攻擊和用戶追蹤。 ![](https://www.wangbase.com/blogimg/asset/201909/bg2019090918.jpg) ## 一、CSRF 攻擊是什么? Cookie 往往用來存儲用戶的身份信息,惡意網站可以設法偽造帶有正確 Cookie 的 HTTP 請求,這就是 CSRF 攻擊。 舉例來說,用戶登陸了銀行網站`your-bank.com`,銀行服務器發來了一個 Cookie。 > ~~~bash > > Set-Cookie:id=a3fWa; > > ~~~ 用戶后來又訪問了惡意網站`malicious.com`,上面有一個表單。 > ~~~markup > > <form action="your-bank.com/transfer" method="POST"> > ... > </form> > > ~~~ 用戶一旦被誘騙發送這個表單,銀行網站就會收到帶有正確 Cookie 的請求。為了防止這種攻擊,表單一般都帶有一個隨機 token,告訴服務器這是真實請求。 > ~~~markup > > <form action="your-bank.com/transfer" method="POST"> > <input type="hidden" name="token" value="dad3weg34"> > ... > </form> > > ~~~ 這種第三方網站引導發出的 Cookie,就稱為第三方 Cookie。它除了用于 CSRF 攻擊,還可以用于用戶追蹤。 比如,Facebook 在第三方網站插入一張看不見的圖片。 > ~~~markup > > <img src="facebook.com" style="visibility:hidden;"> > > ~~~ 瀏覽器加載上面代碼時,就會向 Facebook 發出帶有 Cookie 的請求,從而 Facebook 就會知道你是誰,訪問了什么網站。 ## 二、SameSite 屬性 Cookie 的`SameSite`屬性用來限制第三方 Cookie,從而減少安全風險。 它可以設置三個值。 > * Strict > * Lax > * None ### 2.1 Strict `Strict`最為嚴格,完全禁止第三方 Cookie,跨站點時,任何情況下都不會發送 Cookie。換言之,只有當前網頁的 URL 與請求目標一致,才會帶上 Cookie。 > ~~~bash > > Set-Cookie: CookieName=CookieValue; SameSite=Strict; > > ~~~ 這個規則過于嚴格,可能造成非常不好的用戶體驗。比如,當前網頁有一個 GitHub 鏈接,用戶點擊跳轉就不會帶有 GitHub 的 Cookie,跳轉過去總是未登陸狀態。 ### 2.2 Lax `Lax`規則稍稍放寬,大多數情況也是不發送第三方 Cookie,但是導航到目標網址的 Get 請求除外。 > ~~~markup > > Set-Cookie: CookieName=CookieValue; SameSite=Lax; > > ~~~ 導航到目標網址的 GET 請求,只包括三種情況:鏈接,預加載請求,GET 表單。詳見下表。 | 請求類型 | 示例 | 正常情況 | Lax | | --- | --- | --- | --- | | 鏈接 | `<a href="..."></a>` | 發送 Cookie | 發送 Cookie | | 預加載 | `<link rel="prerender" href="..."/>` | 發送 Cookie | 發送 Cookie | | GET 表單 | `<form method="GET" action="...">` | 發送 Cookie | 發送 Cookie | | POST 表單 | `<form method="POST" action="...">` | 發送 Cookie | 不發送 | | iframe | `<iframe src="..."></iframe>` | 發送 Cookie | 不發送 | | AJAX | `$.get("...")` | 發送 Cookie | 不發送 | | Image | `<img src="...">` | 發送 Cookie | 不發送 | 設置了`Strict`或`Lax`以后,基本就杜絕了 CSRF 攻擊。當然,前提是用戶瀏覽器支持 SameSite 屬性。 ### 2.3 None Chrome 計劃將`Lax`變為默認設置。這時,網站可以選擇顯式關閉`SameSite`屬性,將其設為`None`。不過,前提是必須同時設置`Secure`屬性(Cookie 只能通過 HTTPS 協議發送),否則無效。 下面的設置無效。 > ~~~bash > > Set-Cookie: widget_session=abc123; SameSite=None > > ~~~ 下面的設置有效。 > ~~~bash > > Set-Cookie: widget_session=abc123; SameSite=None; Secure > > ~~~ ## 三、參考鏈接 * [Using the Same-Site Cookie Attribute to Prevent CSRF Attacks](https://www.netsparker.com/blog/web-security/same-site-cookie-attribute-prevent-cross-site-request-forgery/) * [SameSite cookies explained](https://web.dev/samesite-cookies-explained) * [Tough Cookies](https://scotthelme.co.uk/tough-cookies/), Scott Helme * [Cross-Site Request Forgery is dead!](https://scotthelme.co.uk/csrf-is-dead/), Scott Helme
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看