<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # Spring CSRF 保護 > 原文: [https://javatutorial.net/csrf-protection-in-spring](https://javatutorial.net/csrf-protection-in-spring) 在本教程中,您將學習如何保護應用程序免受 CSRF 的侵害。 ![java-featured-image](https://img.kancloud.cn/05/3e/053ee0bb59842d92359246c98f815e0c_780x330.jpg) ## 什么是 CSRF? 如果您已經知道什么 CSRF,請隨時繼續閱讀本分點。 但是,如果您不這樣做,CSRF 代表**跨站點請求偽造**,簡單地說,就是攻擊者使經過身份驗證的用戶在網站上執行操作。 結果 – **未經授權的用戶執行 Web 應用程序信任的操作**。 一個典型的例子是,當用戶登錄時,網站發送分配給 cookie 的令牌信息作為響應的一部分。 現在用戶已經登錄,攻擊者將嘗試使用戶從 CSRF 攻擊開始的地方訪問攻擊者的網站。 為了使用戶訪問其網站,攻擊者通常通過電子郵件發送電子郵件。 如果用戶單擊該鏈接,則網站上有 1 個或什至更多的 API。 與用戶訪問過的 Cookie 信息一起發送了請求。 現在,攻擊者可以對用戶的數據/帳戶進行未經授權的更改,例如轉移資金。 ## 如何預防 CSRF? 有兩種方法可以防止 CSRF。 其中之一是通過實現相同的來源策略。 根據此策略,Web 瀏覽器允許一個網頁中包含的腳本訪問**另一個網頁**中的數據,但前提是兩個網頁具有相同的來源。 此方法取決于 [HTTP Cookies](https://en.wikipedia.org/wiki/HTTP_cookie) 。 另一個是通過應用每個會話/每個請求令牌來過濾作為 CSRF 攻擊而來的請求。 ## Spring 實現中如何防止 CSRF ```java public class TokenFilter extends OncePerRequestFilter { @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { CsrfToken csrfToken = (CsrfToken).request.getAttribute(CsrfToken.class.getName()); if (csrfToken != null) { Cookie cookie = WebUtils.getCoookie(request, "XSRF-TOKEN"); String token = csrf.getToken(); if (cookie == null || !(token.equals(cookie.getValue())) && token != null) { cookie = new Cookie("XSRF-TOKEN", token); cookie.setPath("/"); response.addCookie(cookie); } } filterChain.doFilter(request, response); } } ``` **細分** 我們創建了一個名為`TokenFilter`的類來查找特定的 cookie,在這種情況下,它稱為`XSRF-TOKEN`。 ```java Cookie cookie = WebUtils.getCoookie(request, "XSRF-TOKEN"); ``` 如果沒有,則創建一個并分配令牌值,然后將 cookie 添加到服務器響應中。 ```java if (cookie == null || !(token.equals(cookie.getValue())) && token != null) { cookie = new Cookie("XSRF-TOKEN", token); cookie.setPath("/"); response.addCookie(cookie); } ``` 因此,我們設法編寫了自己的`Filter`類來查找特定的 cookie,以防止 CSRF;如果該 cookie 存在,則將其添加到服務器響應中;如果不存在,則使用給定名稱創建一個新的 cookie。
                  <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>

                              哎呀哎呀视频在线观看