国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

前端鑒權(quán)必須了解的5個兄弟:cookie、session、token、jwt、單點登錄

共 9657字,需瀏覽 20分鐘

 ·

2021-08-05 11:36



點擊上方 程序員成長指北,關(guān)注公眾號

回復1,加入高級Node交流群

原文:https://juejin.cn/post/6898630134530752520#heading-0

本文你將看到:

  • 基于 HTTP 的前端鑒權(quán)背景
  • cookie 為什么是最方便的存儲方案,有哪些操作 cookie 的方式
  • session 方案是如何實現(xiàn)的,存在哪些問題
  • token 方案是如何實現(xiàn)的,如何進行編碼和防篡改?jwt 是做什么的?refresh token 的實現(xiàn)和意義
  • session 和 token 有什么異同和優(yōu)缺點
  • 單點登錄是什么?實現(xiàn)思路和在瀏覽器下的處理

從狀態(tài)說起

「HTTP 無狀態(tài)」

我們知道,HTTP 是無狀態(tài)的。也就是說,HTTP 請求方和響應方間無法維護狀態(tài),都是一次性的,它不知道前后的請求都發(fā)生了什么。

但有的場景下,我們需要維護狀態(tài)。最典型的,一個用戶登陸微博,發(fā)布、關(guān)注、評論,都應是在登錄后的用戶狀態(tài)下的。

「標記」

那解決辦法是什么呢?::標記::。

在學?;蚬?,入學入職那一天起,會錄入你的身份、賬戶信息,然后給你發(fā)個卡,今后在園區(qū)內(nèi),你的門禁、打卡、消費都只需要刷這張卡。

「前端存儲」

這就涉及到一發(fā)、一存、一帶,發(fā)好辦,登陸接口直接返回給前端,存儲就需要前端想辦法了。

前提是,你要把卡帶在身上。

前端的存儲方式有很多。

  • 最矬的,掛到全局變量上,但這是個「體驗卡」,一次刷新頁面就沒了
  • 高端點的,存到 cookie、localStorage 等里,這屬于「會員卡」,無論怎么刷新,只要瀏覽器沒清掉或者過期,就一直拿著這個狀態(tài)。

前端存儲這里不展開了。

有地方存了,請求的時候就可以拼到參數(shù)里帶給接口了。


基石:cookie

可是前端好麻煩啊,又要自己存,又要想辦法帶出去,有沒有不用操心的?

有,cookie。

cookie 也是前端存儲的一種,但相比于 localStorage 等其他方式,借助 HTTP 頭、瀏覽器能力,cookie 可以做到前端無感知。

一般過程是這樣的:

  • 在提供標記的接口,通過 HTTP 返回頭的 Set-Cookie 字段,直接「種」到瀏覽器上
  • 瀏覽器發(fā)起請求時,會自動把 cookie 通過 HTTP 請求頭的 Cookie 字段,帶給接口

「配置:Domain / Path」

你不能拿清華的校園卡進北大。

cookie 是要限制::「空間范圍」::的,通過 Domain(域)/ Path(路徑)兩級。

Domain屬性指定瀏覽器發(fā)出 HTTP 請求時,哪些域名要附帶這個 Cookie。如果沒有指定該屬性,瀏覽器會默認將其設(shè)為當前 URL 的一級域名,比如 www.example.com 會設(shè)為 example.com,而且以后如果訪問example.com的任何子域名,HTTP 請求也會帶上這個 Cookie。如果服務器在Set-Cookie字段指定的域名,不屬于當前域名,瀏覽器會拒絕這個 Cookie。

Path屬性指定瀏覽器發(fā)出 HTTP 請求時,哪些路徑要附帶這個 Cookie。只要瀏覽器發(fā)現(xiàn),Path屬性是 HTTP 請求路徑的開頭一部分,就會在頭信息里面帶上這個 Cookie。比如,PATH屬性是/,那么請求/docs路徑也會包含該 Cookie。當然,前提是域名必須一致。

—— Cookie — JavaScript 標準參考教程(alpha)

「配置:Expires / Max-Age」

你畢業(yè)了卡就不好使了。

cookie 還可以限制::「時間范圍」::,通過 Expires、Max-Age 中的一種。

Expires屬性指定一個具體的到期時間,到了指定時間以后,瀏覽器就不再保留這個 Cookie。它的值是 UTC 格式。如果不設(shè)置該屬性,或者設(shè)為null,Cookie 只在當前會話(session)有效,瀏覽器窗口一旦關(guān)閉,當前 Session 結(jié)束,該 Cookie 就會被刪除。另外,瀏覽器根據(jù)本地時間,決定 Cookie 是否過期,由于本地時間是不精確的,所以沒有辦法保證 Cookie 一定會在服務器指定的時間過期。

Max-Age屬性指定從現(xiàn)在開始 Cookie 存在的秒數(shù),比如60 * 60 * 24 * 365(即一年)。過了這個時間以后,瀏覽器就不再保留這個 Cookie。

如果同時指定了Expires和Max-Age,那么Max-Age的值將優(yōu)先生效。

如果Set-Cookie字段沒有指定Expires或Max-Age屬性,那么這個 Cookie 就是 Session Cookie,即它只在本次對話存在,一旦用戶關(guān)閉瀏覽器,瀏覽器就不會再保留這個 Cookie。

—— Cookie — JavaScript 標準參考教程(alpha)

「配置:Secure / HttpOnly」

有的學校規(guī)定,不帶卡套不讓刷(什么奇葩學校,假設(shè));有的學校不讓自己給卡貼貼紙。

cookie 可以限制::「使用方式」::。

Secure屬性指定瀏覽器只有在加密協(xié)議 HTTPS 下,才能將這個 Cookie 發(fā)送到服務器。另一方面,如果當前協(xié)議是 HTTP,瀏覽器會自動忽略服務器發(fā)來的Secure屬性。該屬性只是一個開關(guān),不需要指定值。如果通信是 HTTPS 協(xié)議,該開關(guān)自動打開。

HttpOnly屬性指定該 Cookie 無法通過 JavaScript 腳本拿到,主要是Document.cookie屬性、XMLHttpRequest對象和 Request API 都拿不到該屬性。這樣就防止了該 Cookie 被腳本讀到,只有瀏覽器發(fā)出 HTTP 請求時,才會帶上該 Cookie。

—— Cookie — JavaScript 標準參考教程(alpha)

「HTTP 頭對 cookie 的讀寫」

回過頭來,HTTP 是如何寫入和傳遞 cookie 及其配置的呢?

HTTP 返回的一個 Set-Cookie 頭用于向瀏覽器寫入「一條(且只能是一條)」cookie,格式為 cookie 鍵值 + 配置鍵值。例如:

Set-Cookie: username=jimu; domain=jimu.com; path=/blog; Expires=Wed, 21 Oct 2015 07:28:00 GMT; Secure; HttpOnly 

那我想一次多 set 幾個 cookie 怎么辦?多給幾個 Set-Cookie 頭(一次 HTTP 請求中允許重復)

Set-Cookie: username=jimu; domain=jimu.com
Set-Cookie: height=180; domain=me.jimu.com
Set-Cookie: weight=80; domain=me.jimu.com 

HTTP 請求的 Cookie 頭用于瀏覽器把符合當前「空間、時間、使用方式」配置的所有 cookie 一并發(fā)給服務端。因為由瀏覽器做了篩選判斷,就不需要歸還配置內(nèi)容了,只要發(fā)送鍵值就可以。

Cookie: username=jimu; height=180; weight=80 

「前端對 cookie 的讀寫」

前端可以自己創(chuàng)建 cookie,如果服務端創(chuàng)建的 cookie 沒加HttpOnly,那恭喜你也可以修改他給的 cookie。

調(diào)用document.cookie可以創(chuàng)建、修改 cookie,和 HTTP 一樣,一次document.cookie能且只能操作一個 cookie。

document.cookie = 'username=jimu; domain=jimu.com; path=/blog; Expires=Wed, 21 Oct 2015 07:28:00 GMT; Secure; HttpOnly'

調(diào)用document.cookie也可以讀到 cookie,也和 HTTP 一樣,能讀到所有的非HttpOnly cookie。

console.log(document.cookie);
// username=jimu; height=180; weight=80 

(就一個 cookie 屬性,為什么讀寫行為不一樣?get / set 了解下)

「cookie 是維持 HTTP 請求狀態(tài)的基石」

了解了 cookie 后,我們知道 cookie 是最便捷的維持 HTTP 請求狀態(tài)的方式,大多數(shù)前端鑒權(quán)問題都是靠 cookie 解決的。當然也可以選用別的存儲方式(后面也會多多少少提到)。

那有了存儲工具,接下來怎么做呢?


應用方案:服務端 session

現(xiàn)在回想下,你刷卡的時候發(fā)生了什么?

其實你的卡上只存了一個 id(可能是你的學號),刷的時候物業(yè)系統(tǒng)去查你的信息、賬戶,再決定「這個門你能不能進」「這個雞腿去哪個賬戶扣錢」。

這種操作,在前后端鑒權(quán)系統(tǒng)中,叫 session。

典型的 session 登陸/驗證流程:

  • 瀏覽器登錄發(fā)送賬號密碼,服務端查用戶庫,校驗用戶
  • 服務端把用戶登錄狀態(tài)存為 Session,生成一個 sessionId
  • 通過登錄接口返回,把 sessionId set 到 cookie 上
  • 此后瀏覽器再請求業(yè)務接口,sessionId 隨 cookie 帶上
  • 服務端查 sessionId 校驗 session
  • 成功后正常做業(yè)務處理,返回結(jié)果

「Session 的存儲方式」

顯然,服務端只是給 cookie 一個 sessionId,而 session 的具體內(nèi)容(可能包含用戶信息、session 狀態(tài)等),要自己存一下。存儲的方式有幾種:

  • Redis(推薦):內(nèi)存型數(shù)據(jù)庫,redis中文官方網(wǎng)站。以 key-value 的形式存,正合 sessionId-sessionData 的場景;且訪問快。
  • 內(nèi)存:直接放到變量里。一旦服務重啟就沒了
  • 數(shù)據(jù)庫:普通數(shù)據(jù)庫。性能不高。

「Session 的過期和銷毀」

很簡單,只要把存儲的 session 數(shù)據(jù)銷毀就可以。

「Session 的分布式問題」

通常服務端是集群,而用戶請求過來會走一次負載均衡,不一定打到哪臺機器上。那一旦用戶后續(xù)接口請求到的機器和他登錄請求的機器不一致,或者登錄請求的機器宕機了,session 不就失效了嗎?

這個問題現(xiàn)在有幾種解決方式。

  • 一是從「存儲」角度,把 session 集中存儲。如果我們用獨立的 Redis 或普通數(shù)據(jù)庫,就可以把 session 都存到一個庫里。
  • 二是從「分布」角度,讓相同 IP 的請求在負載均衡時都打到同一臺機器上。以 nginx 為例,可以配置 ip_hash 來實現(xiàn)。

但通常還是采用第一種方式,因為第二種相當于閹割了負載均衡,且仍沒有解決「用戶請求的機器宕機」的問題。

「node.js 下的 session 處理」

前面的圖很清楚了,服務端要實現(xiàn)對 cookie 和 session 的存取,實現(xiàn)起來要做的事還是很多的。在npm中,已經(jīng)有封裝好的中間件,比如 express-session - npm,用法就不貼了。

這是它種的 cookie:

express-session - npm 主要實現(xiàn)了:

  • 封裝了對cookie的讀寫操作,并提供配置項配置字段、加密方式、過期時間等。
  • 封裝了對session的存取操作,并提供配置項配置session存儲方式(內(nèi)存/redis)、存儲規(guī)則等。
  • 給req提供了session屬性,控制屬性的set/get并響應到cookie和session存取上,并給req.session提供了一些方法。

應用方案:token

session 的維護給服務端造成很大困擾,我們必須找地方存放它,又要考慮分布式的問題,甚至要單獨為了它啟用一套 Redis 集群。有沒有更好的辦法?

我又想到學校,在沒有校園卡技術(shù)以前,我們都靠「學生證」。門衛(wèi)小哥直接對照我和學生證上的臉,確認學生證有效期、年級等信息,就可以放行了。

回過頭來想想,一個登錄場景,也不必往 session 存太多東西,那為什么不直接打包到 cookie 中呢?這樣服務端不用存了,每次只要核驗 cookie 帶的「證件」有效性就可以了,也可以攜帶一些輕量的信息。

這種方式通常被叫做 token。

token 的流程是這樣的:

  • 用戶登錄,服務端校驗賬號密碼,獲得用戶信息
  • 把用戶信息、token 配置編碼成 token,通過 cookie set 到瀏覽器
  • 此后用戶請求業(yè)務接口,通過 cookie 攜帶 token
  • 接口校驗 token 有效性,進行正常業(yè)務接口處理

「客戶端 token 的存儲方式」

在前面 cookie 說過,cookie 并不是客戶端存儲憑證的唯一方式。token 因為它的「無狀態(tài)性」,有效期、使用限制都包在 token 內(nèi)容里,對 cookie 的管理能力依賴較小,客戶端存起來就顯得更自由。但 web 應用的主流方式仍是放在 cookie 里,畢竟少操心。

「token 的過期」

那我們?nèi)绾慰刂?token 的有效期呢?很簡單,把「過期時間」和數(shù)據(jù)一起塞進去,驗證時判斷就好。

token 的編碼

編碼的方式豐儉由人。

「base64」

比如 node 端的 cookie-session - npm 庫

不要糾結(jié)名字,其實是個 token 庫,但保持了和 express-session - npm 高度一致的用法,把要存的數(shù)據(jù)掛在 session 上

默認配置下,當我給他一個 userid,他會存成這樣:

這里的 eyJ1c2VyaWQiOiJhIn0=,就是 {"userid":"abb”} 的 base64 而已。

「防篡改」

那問題來了,如果用戶 cdd 拿{"userid":"abb”}轉(zhuǎn)了個 base64,再手動修改了自己的 token 為 eyJ1c2VyaWQiOiJhIn0=,是不是就能直接訪問到 abb 的數(shù)據(jù)了?

是的。所以看情況,如果 token 涉及到敏感權(quán)限,就要想辦法避免 token 被篡改。

解決方案就是給 token 加簽名,來識別 token 是否被篡改過。例如在 cookie-session - npm 庫中,增加兩項配置:

secret: 'iAmSecret',
signed: true

這樣會多種一個 .sig cookie,里面的值就是 {"userid":"abb”} 和 iAmSecret通過加密算法計算出來的,常見的比如HMACSHA256 類 (System.Security.Cryptography) | Microsoft Docs。

好了,現(xiàn)在 cdd 雖然能偽造出eyJ1c2VyaWQiOiJhIn0=,但偽造不出 sig 的內(nèi)容,因為他不知道 secret。

「JWT」

但上面的做法額外增加了 cookie 數(shù)量,數(shù)據(jù)本身也沒有規(guī)范的格式,所以 JSON Web Token Introduction - jwt.io 橫空出世了。

JSON Web Token (JWT) 是一個開放標準,定義了一種傳遞 JSON 信息的方式。這些信息通過數(shù)字簽名確??尚?。

它是一種成熟的 token 字符串生成方案,包含了我們前面提到的數(shù)據(jù)、簽名。不如直接看一下一個 JWT token 長什么樣:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyaWQiOiJhIiwiaWF0IjoxNTUxOTUxOTk4fQ.2jf3kl_uKWRkwjOP6uQRJFqMlwSABcgqqcJofFH5XCo 

這串東西是怎么生成的呢?看圖:

類型、加密算法的選項,以及 JWT 標準數(shù)據(jù)字段,可以參考 RFC 7519 - JSON Web Token (JWT)

node 上同樣有相關(guān)的庫實現(xiàn):express-jwt - npm koa-jwt - npm

refresh token

token,作為權(quán)限守護者,最重要的就是「安全」。

業(yè)務接口用來鑒權(quán)的 token,我們稱之為 access token。越是權(quán)限敏感的業(yè)務,我們越希望 access token 有效期足夠短,以避免被盜用。但過短的有效期會造成 access token 經(jīng)常過期,過期后怎么辦呢?

一種辦法是,讓用戶重新登錄獲取新 token,顯然不夠友好,要知道有的 access token 過期時間可能只有幾分鐘。

另外一種辦法是,再來一個 token,一個專門生成 access token 的 token,我們稱為 refresh token。

  • access token 用來訪問業(yè)務接口,由于有效期足夠短,盜用風險小,也可以使請求方式更寬松靈活
  • refresh token 用來獲取 access token,有效期可以長一些,通過獨立服務和嚴格的請求方式增加安全性;由于不常驗證,也可以如前面的 session 一樣處理

有了 refresh token 后,幾種情況的請求流程變成這樣:

如果 refresh token 也過期了,就只能重新登錄了。

session 和 token

session 和 token 都是邊界很模糊的概念,就像前面說的,refresh token 也可能以 session 的形式組織維護。

狹義上,我們通常認為 session 是「種在 cookie 上、數(shù)據(jù)存在服務端」的認證方案,token 是「客戶端存哪都行、數(shù)據(jù)存在 token 里」的認證方案。對 session 和 token 的對比本質(zhì)上是「客戶端存 cookie / 存別地兒」、「服務端存數(shù)據(jù) / 不存數(shù)據(jù)」的對比。

「客戶端存 cookie / 存別地兒」

存 cookie 固然方便不操心,但問題也很明顯:

  • 在瀏覽器端,可以用 cookie(實際上 token 就常用 cookie),但出了瀏覽器端,沒有 cookie 怎么辦?
  • cookie 是瀏覽器在域下自動攜帶的,這就容易引發(fā) CSRF 攻擊(前端安全系列(二):如何防止CSRF攻擊?- 美團技術(shù)團隊)

存別的地方,可以解決沒有 cookie 的場景;通過參數(shù)等方式手動帶,可以避免 CSRF 攻擊。

「服務端存數(shù)據(jù) / 不存數(shù)據(jù)」

  • 存數(shù)據(jù):請求只需攜帶 id,可以大幅縮短認證字符串長度,減小請求體積
  • 不存數(shù)據(jù):不需要服務端整套的解決方案和分布式處理,降低硬件成本;避免查庫帶來的驗證延遲

單點登錄

前面我們已經(jīng)知道了,在同域下的客戶端/服務端認證系統(tǒng)中,通過客戶端攜帶憑證,維持一段時間內(nèi)的登錄狀態(tài)。

但當我們業(yè)務線越來越多,就會有更多業(yè)務系統(tǒng)分散到不同域名下,就需要「一次登錄,全線通用」的能力,叫做「單點登錄」。

“虛假”的單點登錄(主域名相同)

簡單的,如果業(yè)務系統(tǒng)都在同一主域名下,比如wenku.baidu.com tieba.baidu.com,就好辦了??梢灾苯影?cookie domain 設(shè)置為主域名 baidu.com,百度也就是這么干的。

“真實”的單點登錄(主域名不同)

比如滴滴這么潮的公司,同時擁有didichuxing.com xiaojukeji.com didiglobal.com等域名,種 cookie 是完全繞不開的。

這要能實現(xiàn)「一次登錄,全線通用」,才是真正的單點登錄。

這種場景下,我們需要獨立的認證服務,通常被稱為 SSO。

「一次「從 A 系統(tǒng)引發(fā)登錄,到 B 系統(tǒng)不用登錄」的完整流程」

  • 用戶進入 A 系統(tǒng),沒有登錄憑證(ticket),A 系統(tǒng)給他跳到 SSO
  • SSO 沒登錄過,也就沒有 sso 系統(tǒng)下沒有憑證(注意這個和前面 A ticket 是兩回事),輸入賬號密碼登錄
  • SSO 賬號密碼驗證成功,通過接口返回做兩件事:一是種下 sso 系統(tǒng)下憑證(記錄用戶在 SSO 登錄狀態(tài));二是下發(fā)一個 ticket
  • 客戶端拿到 ticket,保存起來,帶著請求系統(tǒng) A 接口
  • 系統(tǒng) A 校驗 ticket,成功后正常處理業(yè)務請求
  • 此時用戶第一次進入系統(tǒng) B,沒有登錄憑證(ticket),B 系統(tǒng)給他跳到 SSO
  • SSO 登錄過,系統(tǒng)下有憑證,不用再次登錄,只需要下發(fā) ticket
  • 客戶端拿到 ticket,保存起來,帶著請求系統(tǒng) B 接口

「完整版本:考慮瀏覽器的場景」

上面的過程看起來沒問題,實際上很多 APP 等端上這樣就夠了。但在瀏覽器下不見得好用。

看這里:

對瀏覽器來說,SSO 域下返回的數(shù)據(jù)要怎么存,才能在訪問 A 的時候帶上?瀏覽器對跨域有嚴格限制,cookie、localStorage 等方式都是有域限制的。

這就需要也只能由 A 提供 A 域下存儲憑證的能力。一般我們是這么做的:

圖中我們通過顏色把瀏覽器當前所處的域名標記出來。注意圖中灰底文字說明部分的變化。

  • 在 SSO 域下,SSO 不是通過接口把 ticket 直接返回,而是通過一個帶 code 的 URL 重定向到系統(tǒng) A 的接口上,這個接口通常在 A 向 SSO 注冊時約定
  • 瀏覽器被重定向到 A 域下,帶著 code 訪問了 A 的 callback 接口,callback 接口通過 code 換取 ticket
  • 這個 code 不同于 ticket,code 是一次性的,暴露在 URL 中,只為了傳一下?lián)Q ticket,換完就失效
  • callback 接口拿到 ticket 后,在自己的域下 set cookie 成功
  • 在后續(xù)請求中,只需要把 cookie 中的 ticket 解析出來,去 SSO 驗證就好
  • 訪問 B 系統(tǒng)也是一樣

總結(jié)

  • HTTP 是無狀態(tài)的,為了維持前后請求,需要前端存儲標記
  • cookie 是一種完善的標記方式,通過 HTTP 頭或 js 操作,有對應的安全策略,是大多數(shù)狀態(tài)管理方案的基石
  • session 是一種狀態(tài)管理方案,前端通過 cookie 存儲 id,后端存儲數(shù)據(jù),但后端要處理分布式問題
  • token 是另一種狀態(tài)管理方案,相比于 session 不需要后端存儲,數(shù)據(jù)全部存在前端,解放后端,釋放靈活性
  • token 的編碼技術(shù),通?;?base64,或增加加密算法防篡改,jwt 是一種成熟的編碼方案
  • 在復雜系統(tǒng)中,token 可通過 service token、refresh token 的分權(quán),同時滿足安全性和用戶體驗
  • session 和 token 的對比就是「用不用cookie」和「后端存不存」的對比
  • 單點登錄要求不同域下的系統(tǒng)「一次登錄,全線通用」,通常由獨立的 SSO 系統(tǒng)記錄登錄狀態(tài)、下發(fā) ticket,各業(yè)務系統(tǒng)配合存儲和認證 ticket
如果覺得這篇文章還不錯
點擊下面卡片關(guān)注我
來個【分享、點贊、在看】三連支持一下吧

   “分享、點贊、在看” 支持一波 

瀏覽 25
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報
評論
圖片
表情
推薦
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 无码国产精品一区二区视频| 免费18蜜桃久久19| 综合插插| 成人三级片网| 成人免费视频国产在线观看 | 狼友视频免费在线观看| 国产无码小视频| 免费一级a| 中文字幕久久无码| 日本女优婷婷青青草原| 午夜理论在线| 99久热在线精品| www.婷婷六月天| 亚洲欧美在线播放| 日韩福利| 鲁鲁鲁鲁鲁鲁鲁777777| 成人精品123| 无码av免费精品一区二区三区| 国产操片| 久久久18禁一区二区三区精品| 国产一级A片免费播放| 欧美老女人操逼视频| 91人妻最真实刺激绿帽| 99热这里只有精品99| 日韩天堂av| 97精品人妻一区二区三区香蕉农| 色婷婷播放| ThePorn日本无码| 国产欧美熟妇另类久久久| 久久精品综合| 国产伊人网| 国产精品成人99一区无码| 爱干视频| 色哟哟一区二区三区四区| 国产愉拍91九色国产愉拍| 久久与婷婷| 黄色小电影在线观看| 成人无码高清在线观看| 操逼毛片视频| 欧美老熟妇乱大交XXXXX| 99色色| 超碰在线观看免费版| 久久这里精品| 制服丝袜人妻| 操逼网视频| 免费黄色视频网站大全| 全国最大成人网| 97男人的天堂| 久久9视频| 9i看片成人免费视频| 中文字幕你懂的在线三级| 北条麻妃亚洲无码| 午夜99| 亚洲色吧| 日韩AV大片| 中文字幕第69页| 日韩欧美中文| 特级444www| 永久免费看片视频| 狠狠爱一区| 免费在线观看无码| 又紧又嫩又爽无遮挡免费| 天天添夜夜添| 亚洲无码性爱视频| 精产国品一区二区区别| 黄色视频在线观看大全| 男人天堂手机在线| 亚洲看片| 玖玖综合网| 欧美午夜视频| 男女无码| 大香蕉国产在线| 色婷婷香蕉| www.色日本| 婷婷五月六月丁香| 成人在线视频网站| 欧美午夜片| 手机在线操B视频| 伊人国产女| 亚洲无码免费看| 国产一级AA大片毛片| 亚洲黄色毛片| 強姧伦一区二区三区在线播放| 精品久久久久久AV2025| 天堂网2025| 无码不卡在线观看| 大香蕉国产精品| 国产三级性爱视频| 婷婷视频在线| 国产精品嫩草久久久久yw193 | 少妇搡BBBB搡BBB搡澳门| 午夜精品一区二区三区在线成人| h网站在线| 亚洲理论在线| 亚洲a∨| 大黑逼网| 亚洲熟妇视频| 一级黄色AV片| 亚洲天堂精品在线| 激情AV在线观看| 国产36页| 亚洲福利在线观看| 大地影视中文第三页最新在线观看 | 国产欧美精品成人在线观看| 五月婷婷国产| 激情人妻在线| 澳门免费毛片| 中文字幕网站在线观看| 1插菊花综合| 亚洲小电影在线观看| 手机在线观看av| 人妻精品电影| 激情黄色视频| 亚州操B| 亚洲无码黄片| 欧美熟妇擦BBBB擦BBBB| 精品国产乱码久久久久久郑州公司 | 97超碰免费| 美日韩无码视频| 怡红院成人网| 蜜臀av在线免费观看| 一级黄色大片| 精品欧美乱码久久久久久| 国产6区| 国产无遮挡A片又黄又爽小直播 | 超碰一区二区三区| 成人视频网站18| 毛片黄色视频| 成人性视频Aⅴ| 亚洲成人精品视频| 高清不卡一区二区| 亚洲性爱一区二区| 女同一区二区三区| 亚洲无码字幕| 黄色18禁| 国产精品夜夜爽7777777| 日本肏逼视频| 91成人在线电影| 玩弄大乳乳妾高潮乳喷视频| 青娱乐精品在线视频| 国产午夜成人福利在线| 免费观看黄色网| 久久er热| 黄视频免费| 任你爽在线视频| 色色丁香| 国产精品av在线播放| 人妻少妇av中文字幕乱码牛牛 | 亚洲在线成人| 国产精品18进进出出17c| 婷婷五月丁香花| 黄色视频免费观看国产| 中文字幕浅井香舞被黑人俘虏| 黄色视频网站国产| 久久国产香蕉| 亚洲激情在线| 国产欧美综合在线| 91久久久久久久久久| 国产日韩欧美在线观看| 97人妻天天摸天天爽天天| 成人一区二区电影| 亚洲另类视频| 国产精品成人在线| 日韩1区2区| 日韩城人网站| 中文字幕AⅤ在线| 久久久波多野结衣| 亚洲区综合| 久久久久久| 蜜桃AV无码一区二区三区| 亚洲性爱大全| 岛国AV在线| 亚洲va中文字幕| 丝瓜视频黄| S28AV| 怡红院男人的天堂| 高清无码免费不卡| 日本在线视频不卡| 国产熟妇码视频户外直播| 国产一a毛一a毛A免费| 艹逼91| 在线啪| 亚洲成人一区二区三区| 国产无遮挡A片又黄又爽小直播| 国产夫妻AV| 伊人网在线免费视频| 亚洲中文字幕AV| AV网站免费观看| 国产91无码| 美女裸体视频网站| 91久久欧美极品XXXXⅩ| 俺去久久| AV无码人妻| 狼友视频在线观看18| 日韩成人精品在线| 国产伦精品一区二区三区妓女下载 | 蜜桃精品一区二区三区美女| 高潮无码视频| 欧美射精视频| 狠狠ri| 欧美喷水视频| 亚洲福利视频97| 大香蕉精品视频在线| 色综合色综合色综合| 中文字幕中文字幕一区| 无码一区二区三区四区五区六区| 操B视频免费看| 成人性爱视频免费在线观看| 久久无码黄片| 琪琪色在线视频| 在线免费观看毛片| 婷婷欧美日韩| 亚洲天堂网在线观看视频| 成人做爰黄A片免费看| 国产亚洲精品久久久久久桃色| 国产黄色在线看| 欧美色色影院| brazzers疯狂作爱| 免费一级片视频| 91人人澡人人爽人人看| 91精品久久香蕉国产线看观看| 亚洲v在线| 国产理论电影在线观看| 国产三级av在线| 亚洲无吗在线观看| 大香蕉在线网站| 国产精品一区二区在线播放| 黄色电影AV| 成人黄色导航| 91人妻日韩人妻无码专区精品 | 欧美喷水视频| 91成人在线视频| 中文无码av| 在线v片| 麻豆视频在线播放| 黑人猛躁白人BBBBBBBBB| 四虎综合网| 美国高清无码| 在线观看免费欧美操逼视频| 豆花网无码视频观看| 开心老牛熟| 亚洲性爱一区二区| 91精品成人电影| 七区九区一区在线| 午夜成人中文字幕| 日韩欧美A片| 91视频在线免费观看| 少妇熟女视频| 韩国一区二区三区| 日韩免费在线观看视频| 国产一级a片| 加勒比综合无码| 一级性爽AV毛片| 亚洲性爱网址| 91一区二区三区| 免费v在线观看| 大香蕉AV在线观看| 国模私拍视频| 中文字幕操逼网站| 国产美女免费视频| 成人大香蕉网站精品免费| 操逼视频在线免费观看| 青草青青视频| 黑人巨大翔田千里AⅤ| 欧美日本国产| 久久肏| 成人黄色一级A片| 日韩欧美中文字幕在线视频| 成人欧美大片黄18| 怡春院熟女精品AV| 国产一级a毛一级a毛观看视频网站www.jn | 成人做爰黄A片免费看直播室动漫| 久久久精品黄色网址| 亚洲欧美在线成人| 日韩天天| 大香蕉福利导航| 亚洲色男人天堂| 无码一级二级| 91精品人妻一区二区三区| 国产一区亚洲| 成人免费网站黄| www.插插插| 日韩日日操| 亚洲aⅤ| av无码在线播放| 亚洲国产精品欧美久久| 亚洲男人的天堂AV| 97人妻在线| 熟妇高潮一区二区高潮| 伊人影院视频| 五月丁香婷婷综合| 国产女人18水真多18精品| 特级A级毛片| 91天天综合| 日韩欧美天堂| 婷婷综合五月| 久久青青婷婷| va婷婷在线免费观看| 日韩一级欧美一级| 99久久精彩视频| 婷婷综合素质二区| 狠狠色婷婷| 污视频网站免费观看| 中文字幕在线观看网址最新地址 | 亚洲中文字幕第一| 国产精品成人在线观看| 三级片久久| 你懂得在线视频| 黄色成人网站在线| 99日韩无码| 一级黄色免费看| 国产成人精品在线观看| 东北老女人性爱视频| 俺也去啦WWW色官网| 久操无码视频| 亚洲日韩欧美成人| 嫩BBB槡BBBB槡BBBB撒尿-百度 | 亚洲a视频| 日韩视频免费在线| 69看片| AV影院在线| 无码人妻一区二区三区免水牛视频| 国产一级AAAAA片免费| 黄色片网站视频| 色综合一区二区三区| 中韩一区二区| 欧美大骚逼| 亚洲一区二区三区无码| 十八禁网站在线播放| 亚洲精品视频在线播放| 男女视频网站在线观看| 91精品国产综合久久久蜜臀主演| 高清欧美日韩第一摸| 欧美色逼逼| 日韩高清无码一区二区| 91免费成人视频| 久久久亚洲熟妇熟女| 日韩色小说| 色综合国产| 四虎2025在线51| 青青草原成人视频| 99久久爱re热6在播放| 91久久久久久久久久久| 国产精品国产精品| 久久久精品电影91| 日韩欧美国产精品综合嫩V| 国产精品操逼| 波多野结衣在线观看一区二区| 三级片中文字幕| 97伊人大香蕉| 国产一区二区三区免费播放| 山东乱子伦视频国产| 色婷婷亚洲婷婷| 美女裸体视频网站| 日本一级大毛片a一| 午夜亚洲AV永久无码精品蜜芽| 污网站免费观看| 五月天婷婷乱伦| 日本在线一区| 国产口爆| 日韩爆乳一区二区三区| 精品无码在线观看| 婷婷午夜精品久久久久久| 97福利视频| 就要操逼| 五十路在线| 草逼视频免费看| 精品国产99久久久久久www| 亚洲免费成人电影| A在线观看| 97精品人妻一区二区三区香蕉| 国产免费无码| 大香蕉五月丁香| 九九九九精品| 色色五月丁香婷婷| 天天爱天天操| 亚洲网站在线播放| 欧美午夜精品久久久| 国产精品久久久久久久久久久久久| 翔田千里与黑人50分钟| 在线内射视频| 99九九99九九九99九他書對| 欧美性猛交XXXX乱大交| 亚洲小电影在线观看| 激情深爱| 日韩AV免费在线播放| 怡春院在线| 日韩一区二区三区四区久久久精品有吗 | 日韩AV一区二区在线观看| 奇米91| 91国产视频网站| 久久成人综合| 亚洲波多野结衣| 成人91看片| 免费日批网站| 精品91| 综合亚洲视频| 91熟女丰满原味| 国产97在线观看| 国产精品久久久久久久久久二区三区| 超碰在线观看免费| 大香蕉伊人免费| 97色在线| 亚洲不卡一区二区三区| 国内自拍偷拍| 免费Av在线| 日韩经典视频在线播放| 激情五月婷婷丁香| 中文成人在线| 99精品人妻| 国产又粗又大又长| 五月丁香在线视频| 91超碰大香蕉| 国产中文人人国际| 黄片亚洲| 成人毛片一区二区三区无码| 国内特级毛片| 日本aa视频| 99cao| 张柏芝BBw搡BBBB槡BBBBHDfree | 啊啊啊啊国产| 欧美日韩三区| 日韩无码一二三区| 桃色av| 亚洲国产精品二二三三区| 国产又黄又大又粗| 小黄片免费| 精品一区二区免费| 三级视频在线观看| 天天日天天日天天干| 成人精品永久免费视频99久久精品| 欧美性爱-熊猫成人网| 中国操逼毛片| 亚洲一区二区在线| 一区二区三区免费在线观看 | 黄色在线不卡| 欧美色成人免费在线视频| 久久毛片视频| 亚洲黄色视频在线免费观看| 蜜臀久久99精品久久久电影| 色噜| 第四色网站| 欧美视频免费在线观看| 亚洲69v久久久无码精品| 青误乐在线播放| 美日毛片| 黄片免费看网站| 欧美色图狠狠操| 亚洲精品国产精品国自产在线| 黄片视频在线播放| 国色天香一区二区| 中文字幕乱码亚州无线码日韩理论电 | 成人国产精品免费观看| 国产17c精品视频一二三区| 久久精品国产亚洲AV成人婷婷| 国产又粗又长又硬又大毛苴茸图片| 在线小视频| 人人妻人人澡人人爽人人爽| 国产成人视频在线播放| 欧美色图网站| 曰曰摸日日碰| 玖玖爱av| 国产精品偷拍| 人妻操逼视频| 亚洲综合自拍| 刘玥无码| 人人操人人模| 91大熟女91大腚女人| 91就要爱爱视频| 欧美黄色免费看| 日韩免费在线播放| 国产毛片久久久久久久| 日日爱网| 男人AV网| 在线操逼| 亚洲A在线观看| 黄色av网| 久久久999精品日韩一区二区| 97人妻人人澡人| 一本久久A精品一合区久久久| 国产综合久久777777麻豆| 天天草av| 德美日三级片在线观看| 特极西西444WWW大胆无码| 成年视频网站| 亚洲午夜影院在线| 无码一区二区三区四区五区| 久久午夜无码鲁丝片| 日韩AV无码免费| 欧美日韩精品在线视频| 麻豆熟妇乱妇熟色A片在线看| 久久久性爱| 69视频国产| av无码毛片| 亚洲aV影院| 欧美1区| 自拍视频网| 婷婷色色五月| 亚洲天堂在线视频| 精品久久精品| 一区二区三区在线观看免费| 噜噜色av| 中文字幕在线观看免费视频| 亚洲欧美日韩一区| 天天看天天爽| 操操操操一本到| 日本五十路| 麻豆三级片在线观看| 日韩激情一区二区| 看90后操B| 中文字幕一区二区三区精华液| 国产人妻在线| 北条麻妃成人视频| 热久久亚洲中文字幕| 九九九久久久| 中文字幕在线观看日本| 双腿张开被9个男人调教| 国产欧美一区二区三区视频| 亚洲AV无码成人精品区欧洲| 精品人妻午夜| 久一在线| 日国无码| 国产成人AV在线| 老婆中文字幕乱码中文乱码| av资源观看| 中字无码av| 麻豆一区二区三区| 丝袜足交视频| 日韩精品免费无码视频| 国产一级特黄大片| 加勒比在线视频| 国产伦子伦一级A片免费看小说 | 看毛片网址| 国产又爽又黄免费网站在| 欧洲在线观看| 国产高清做爱免费在线视频| 九九视频免费在线观看| 新妺妺窝窝777777野外| 宅男噜噜噜66一区二区| 激情青青草| 三级丁香在线| 青青草成人网| 俺也去在线| 91亚洲免费视频| www.插逼| 日本成片网| 亚洲第一影院| 无码人妻精品一区二区三千菊电影 | 欧美日韩黄片| 人妻少妇无码视频| 思思在线视频| 免费高清无码| 男女av在线观看| 成人小视频观看| 亚洲无码动漫| 尹人成人| 亚洲免费观看高清完整版| 久久久高清无码视频| 日韩毛片在线视频x| 91视频网| 五月丁香影院| 无码在线免费视频| 一区二区三区四区五区无码| 男女福利视频| 亚洲欧美久久久久久久久久久久| 内射午夜福利在线免费观看视频| 精品国产三级| 久草手机视频| 91蜜桃在线观看| 国产91久久婷婷一区二区| 免费的av| 3D动漫精品啪啪一区二区下载| 99热青青草| 亚洲国产成人91精品| 女人18片毛片90分钟免费明星 | 少妇bbb搡bbbb搡bbbb| 亚洲三级av| 国产欧美另类| 52妺嘿嘿午夜福利在线| www、久久| 91外围女视频| 午夜无码视频| 乱子伦国产精品| 九九成人电影| 超级人人操| 91探花秘在线播放偷拍| 日本一级婬片免费放| 人人夜夜人人| 欧美午夜影院| 亚洲jiZZjiZZ日本少妇| 亚洲国产A片| 中字一区人妻水多多| 亚洲字幕| 免费在线观看黄| 激情网站在线观看| 超碰人人操人人| 无码在线免费视频| 中文字幕在线视频免费观看| www.欧美精品| 日韩黄色中文字幕| www久久| 涩涩99| 亚洲免费播放| 黄a在线观看| 大茄子熟女AV导航| 国产精品久久久久久无码人妻 | 五月激情久久| 国产婷婷五月天| 黄色av无码| 人妻被午夜福利AV| 久久久国产视频| 黄色大片在线免费观看| 五月丁香激情视频| 在线中文无码| 日本二区三区| 国产在线拍揄自揄拍无码男男| 99伊人在线| 亚洲AV无码成人精品区东京热| 欧美成人精品a| 人人操人人干97| 久久久久久久久久国产精品免费观看-百度 | 日韩无码高清免费视频| www.操操网| 狼友视频一国产| 99re99| 国产美女裸体网站| 亚洲精品一区二区三区在线观看| www.99| 一级a片免费看| 乱伦性爱视频| 久久久9999| 超碰成人免费| 91人妻人人澡| 黄片免费观看视频| 成人视频免费网站| 色五月综合| 黄色一级免费| 久久中文视频| 国产成人无码一区二区在线观看| 久久国色| 精品日韩中文字幕| 亚洲中文字幕日韩精品| 久久2| 久艹在线视频| sm视频网站| 黄页免费无码| 亚洲成人77777| 51精品国产午夜福利| 欧美成人精品A片免费一区99| 免费的一级A片| 亚洲免费观看高清视频| 黄色免费a级片一级片| 亚洲综合一二三区| 国产一区二区00000视频| 手机看片午夜福利网| 天天影视综合网免费观看电视剧国产 | 国产精品久久视频| 黄片大全在线观看| 91无码在线观看| 殴美老妇BBBBBBBBB| 成年人毛片| 欧美操逼网| 亚洲福利在线观看| 4虎亚洲人成人网www| 正在播放亚洲| 国产AV日韩AⅤ亚洲AV中文| 久久久国产一区二区三区| 亚洲色婷婷久久精品AV蜜桃| 不卡AV在线播放| 欧美va视频| 男女一区二区三区| 豆花视频在线免费观看| 丰满人妻一区二区三区四区不卡| 一插菊花网| 青青操成人在线视频| 日韩香蕉视频| 九九热re99re6在线精品| 伊人大综合| 无码囯无精品毛片大码| 亚洲天堂2025| 亚洲一卡二卡三卡四卡免| 成人做爰黄A片免费| 欧美成人AA| 国产精品无码在线播放| 另类欧美色图| 国产精品久久久久久久久久久久久| 国产AV影片| 蜜桃视频在线入口www| 国产黄A| 国产精品视频久久久| 97人人爱| 一区二区三区电影高清电影免费观看 | 亚洲黄片免费在线观看| 色五月中文字幕| 天堂在线中文字幕| 躁BBB躁BBB添BBBBBB| 蜜桃91视频| 中文字幕在线资源| 久久久五月天| 日本中文字幕在线| 国产激情网| 婷婷伊人綜合中文字幕| av在线免费播放| 99视频在线| 密臀福利导航| 超碰P| 变态另类av| 鸡巴操骚逼视频| 亚洲成人视频免费在线观看| 综合中文字幕| 综合五月| 91人人爽| 成人性生活A级毛片网站| 亚洲v欧美v| 日本天堂网在线观看| 婷婷五月天色综合| 亚洲插菊花综合网| 久色精品| 婷婷AV在线| 蜜桃av秘无码一区二区三区| 亚洲天堂视频在线观看| 国内精产品一二区秘| 超碰P| 俺来也俺去也www色官| 中国特级毛片| 黑人狂躁女人高潮视频| 手机看片日韩| 大香蕉福利导航| 福利久久| 五月婷婷激情网| 黄色网页在线观看| www.国产豆花精品区| 热无码av| V片免费看| 国产在线播放av| 99久久夜色精品国产亚洲| 久久亚洲免费视频| AA黄色片| 国产成人aV| 国产亚洲午夜久久久成人电影 | 欧美另类极品| 精品无码人妻一区二区媚黑| A片在线观看免费| 国产成人在线免费视频| 五月丁香色婷婷| 人妻无码一二三区免费| 猫咪亚洲AV成人无码电影| 在线观看中文字幕无码| 超碰人人妻| 性天堂| 激情五月天网| 国产精品高潮无套内谢| 大鸡吧视频在线观看| 婷婷色av| 欧美午夜精品久久久| 国产AV无码影院| 免费在线看A| 男女日皮的视频| 黄色成人视频在线免费观看| 久久久成人网| 91人妻日韩人妻无码专区精品| 亚洲中文字幕日韩精品| 大香蕉免费在线观看| 国产一a毛一a毛A免费| 国产青青草| 色色色无码| 91青青视频| 成人理伦A级A片在线论坛| 99热网| 欧美丰满人妻免费视频人| A区性愛社区| 91人人妻人人妻人人澡| 日日躁夜夜躁| 黄色二区| www.狠狠操| 牛牛精品一区二区AV| 成人日韩AV| 欧美在线大香蕉| 人妻体内射精一区二区| 日逼网址| 好爽~要尿了~要喷了~同桌| 17c白丝喷水自慰| 日韩操逼av| 另类视频在线| 亚洲日本黄色视频| 五月丁香中文字幕| 日韩免费高清在线视频| 成人黄色在线看| 高清无码不卡在线观看| 欧美一区二区三区精品| 91视频久久| 最近中文字幕在线视频| 一本色道无码人妻精品| 色婷婷在线影院| 四虎精品一区二区| 亚洲日韩AV无码专区影院| 水多多成人网站A片| 无码国产av| 性爱av天堂| 插综合网| 五月天婷婷在线无码| 麻豆熟妇乱妇熟色A片在线看| 午夜资源网| 玖玖爱国产| 亚洲无码免费观看| 91视频福利网| 最新免费一区二区三区| 国产棈品久久久久久久久久九秃 | 黄色视频电影| 国产AⅤ爽aV久久久久成人| A黄色绿像| 成人AV一AV二| 国产AV中文| 操B在线观看| 日韩在线观看AV| 日韩一区二区三区无码电影| 亚洲日本高清| 五月丁香在线视频| 免费看黄色大全| 日韩av高清| 西西444WWW大胆无视频软件亮点 | 天天操免费| 国精产品一区一区三区有限公司杨| 黄片无码免费观看| 久久久九九九| 青草青青视频| 激情五月激情综合网| 一区二区三区四区免费观看| 国产高清AV| 最近中文字幕中文翻译歌词| 中文有码在线观看| 国产精品久久久久永久免费看| 91丨PORNY丨在线中文| 亚洲精品一区二区三区无码电影| 可以免费看的av| 在线免费观看黄色小视频| 天天爱天天射| 人人爱人人操人人爽| 在线观看免费视频黄| 成人av免费在线观看| 91大神久久| 五月婷综合| 亚洲小说欧美激情另类A片小说| 一区免费视频| 人人射人人摸| 操比视频在线观看| 中文字幕亚洲日韩| 性饥渴欧美老妇XXXXX| 国产精品S色| 日韩少妇视频| 亚洲国产熟妇综合色专区| 五月丁香综合在线| 天天综合干| 日韩精品三区| 蜜臀网在线观看| 成人视频一区| 五月丁香在线视频| 凸凹翔田千里无码| 成年人在线观看视频网站| 无码在线免费观看视频| 成人尤物网站| 福利逼站| www.婷婷五月天| 丰满的人妻一区二区10| 91青青草在线| 午夜福利成人网站| 五月丁香欧美| 免费毛片观看| 国产超碰| 69av在线观看| 免费观看在线黄片| 精品自拍偷拍| 国产日韩欧美综合精品在线观看| 无码不卡中文字幕| 欧美一区视频| 亚洲高清视频一区| 男女操逼视频网站| 安徽扫搡BBBB揉BBBB| 免费的AV网站| 老湿机福利视频| 日韩成人在线观看| 亚洲日韩欧美色图| 欧美老熟妇乱大交XXXXX| 久久精彩| 中文字幕在线播放视频| 中文字幕福利| AV大片免费看| 国产一级女婬乱免费看| 在线成人一区二区| 四川少BBB搡BBB爽爽爽| 97操逼| 操逼视频国产91| 九九精品99| 91成人视频在线观看| 国产黄片在线播放| 成人三级电影在线观看| 国产最新在线视频| 三级片网站在线观看| 人妻少妇精品视频| 日本中文不卡|