<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、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                [TOC] ## SESSION > 1. `SESSION` 數據存儲在服務器,當認證用戶增多,會增加服務器開銷 > 2. 可擴展`REDIS`存儲,當認證用戶增多,還是會產生很大的開銷,當然也可使用`REDIS`集群 > 3. `SESSION` 依賴于名為`JSESSIONID`的`Cookie`, 當Cookie禁用時,需要手動傳遞`JSESSIONID`, > > PHP輸出`session_id()` > 4. `session.gc_divisor` 與 `session.gc_probability` 合起來定義了在每個會話初始化時啟動 gc(garbage collection 垃圾回收)進程的概率。 > > 此概率用 `gc_probability/gc_divisor` 計算得來。 > > 例如 1/100 意味著在每個請求中有 1% 的概率啟動 gc 進程。`session.gc_divisor` 默認為 100。 > > `session.gc_maxlifetime=30`,`session.gc_divisor=1000`,`session.gc_probability=1`,就表示每一千個用戶調用`session_start()`的時候,就百分百的會執行一次垃圾回收機制,將磁盤上沒用的session文件刪除。 ## COOKIE > 1. `COOKIE`數據存儲在客戶端, > 2. 單個cookie保存的數據不能超過4K,很多瀏覽器都限制一個站點最多保存20個cookie。 > 3. 容易被劫持,CSRF問題 ## JWT (json web token) >[warning] JWT 的核心是無狀態、自驗證、無中央服務器,有超時時間等機制,我們所實現的登錄功能,本質上是一個狀態保持的機制,要保持,就會有斷開的需求,JWT 不能實現斷開。 > JWT 的核心應用場景根本不是狀態保持! > * 當需要令牌加入黑名單時 - 同樣需要保存黑名單令牌 - 也會涉及到并發場景 - 以及續簽等問題 - 維護黑名單的開銷 要比`session`低很多 * Header(頭部) > ```{"alg": "HS256","typ": "JWT"}``` * Payload(負載) >``` > iss: jwt簽發者 > sub: jwt所面向的用戶 > aud: 接收jwt的一方 > exp: jwt的過期時間,這個過期時間必須要大于簽發時間 > nbf: 定義在什么時間之前,該jwt都是不可用的. > iat: jwt的簽發時間 > jti: jwt的唯一身份標識,主要用來作為一次性token,從而回避重放攻擊。 > ``` * Signature(簽名) >``` >HMACSHA256( > base64UrlEncode(header) + "." + > base64UrlEncode(payload), > secret) >``` ### 存在問題 > 1. 無狀態JWT令牌不能無效或更新,并且會根據您存儲它們的位置引入大小問題或安全問題。 > 2. 不應該在JWT的`payload`部分存放敏感信息,因為該部分是客戶端可解密的部分。 > 3. 保護好`secret`私鑰,該私鑰非常重要。 > 4. 如果可以,請使用`https`協議 > 如果您擔心有人攔截您的會話cookie,您應該只使用`TLS` 如果您不使用`TLS`,任何類型的會話實現都是可以截取的,包括JWT。 除非您使用Reddit規模的應用程序,否則沒有理由將JWT令牌用作會話機制,只需使用Session即可。 ### 使用JWT時注意事項 > 1. 令牌是短暫的,它們只需要有效幾分鐘,以允許客戶端啟動下載。 > 2. 該令牌只能使用一次,應用程序服務器會為每次下載發出一個新令牌,因此任何一個令牌只用于請求一次文件,然后被丟棄,沒有持久化狀態。 > 3. 應用程序服務器仍使用會話,只是下載服務器使用令牌來授權單個下載,因為它不需要持久狀態。 >> 結合Session和JWT Token是完全合理的。它們各有各的目的,有時你需要兩者。不要給需要持久化、長期保存的數據使用JWT。
                  <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>

                              哎呀哎呀视频在线观看