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

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

共 9583字,需瀏覽 20分鐘

 ·

2022-01-23 18:19

點擊藍色“程序員黃小斜”關(guān)注我喲

加個“星標”,每天和你一起多進步一點點!


本文你將看到:

  • 基于 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 請求方和響應(yīng)方間無法維護狀態(tài),都是一次性的,它不知道前后的請求都發(fā)生了什么。但有的場景下,我們需要維護狀態(tài)。最典型的,一個用戶登陸微博,發(fā)布、關(guān)注、評論,都應(yīng)是在登錄后的用戶狀態(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。如果服務(wù)器在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 一定會在服務(wù)器指定的時間過期。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ā)送到服務(wù)器。另一方面,如果當前協(xié)議是 HTTP,瀏覽器會自動忽略服務(wù)器發(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 請求中允許重復(fù))

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ā)給服務(wù)端。因為由瀏覽器做了篩選判斷,就不需要歸還配置內(nèi)容了,只要發(fā)送鍵值就可以。

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

「前端對 cookie 的讀寫」前端可以自己創(chuàng)建 cookie,如果服務(wù)端創(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 解決的。當然也可以選用別的存儲方式(后面也會多多少少提到)。那有了存儲工具,接下來怎么做呢?

應(yīng)用方案:服務(wù)端 session

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

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

這種操作,在前后端鑒權(quán)系統(tǒng)中,叫 session。典型的 session 登陸/驗證流程:

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

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

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

「Session 的過期和銷毀」很簡單,只要把存儲的 session 數(shù)據(jù)銷毀就可以。「Session 的分布式問題」通常服務(wù)端是集群,而用戶請求過來會走一次負載均衡,不一定打到哪臺機器上。那一旦用戶后續(xù)接口請求到的機器和他登錄請求的機器不一致,或者登錄請求的機器宕機了,session 不就失效了嗎?這個問題現(xiàn)在有幾種解決方式。

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

但通常還是采用第一種方式,因為第二種相當于閹割了負載均衡,且仍沒有解決「用戶請求的機器宕機」的問題。「node.js 下的 session 處理」前面的圖很清楚了,服務(wù)端要實現(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并響應(yīng)到cookie和session存取上,并給req.session提供了一些方法。

應(yīng)用方案:token

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

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

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

token 的流程是這樣的:

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

「客戶端 token 的存儲方式」在前面 cookie 說過,cookie 并不是客戶端存儲憑證的唯一方式。token 因為它的「無狀態(tài)性」,有效期、使用限制都包在 token 內(nèi)容里,對 cookie 的管理能力依賴較小,客戶端存起來就顯得更自由。但 web 應(yīng)用的主流方式仍是放在 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è)務(wù)接口用來鑒權(quán)的 token,我們稱之為 access token。越是權(quán)限敏感的業(yè)務(wù),我們越希望 access token 有效期足夠短,以避免被盜用。但過短的有效期會造成 access token 經(jīng)常過期,過期后怎么辦呢?一種辦法是,讓用戶重新登錄獲取新 token,顯然不夠友好,要知道有的 access token 過期時間可能只有幾分鐘。另外一種辦法是,再來一個 token,一個專門生成 access token 的 token,我們稱為 refresh token。

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

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

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

session 和 token

session 和 token 都是邊界很模糊的概念,就像前面說的,refresh token 也可能以 session 的形式組織維護。狹義上,我們通常認為 session 是「種在 cookie 上、數(shù)據(jù)存在服務(wù)端」的認證方案,token 是「客戶端存哪都行、數(shù)據(jù)存在 token 里」的認證方案。對 session 和 token 的對比本質(zhì)上是「客戶端存 cookie / 存別地兒」、「服務(wù)端存數(shù)據(jù) / 不存數(shù)據(jù)」的對比。「客戶端存 cookie / 存別地兒」存 cookie 固然方便不操心,但問題也很明顯:

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

存別的地方,可以解決沒有 cookie 的場景;通過參數(shù)等方式手動帶,可以避免 CSRF 攻擊。「服務(wù)端存數(shù)據(jù) / 不存數(shù)據(jù)」

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

單點登錄

前面我們已經(jīng)知道了,在同域下的客戶端/服務(wù)端認證系統(tǒng)中,通過客戶端攜帶憑證,維持一段時間內(nèi)的登錄狀態(tài)。但當我們業(yè)務(wù)線越來越多,就會有更多業(yè)務(wù)系統(tǒng)分散到不同域名下,就需要「一次登錄,全線通用」的能力,叫做「單點登錄」。

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

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

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

比如滴滴這么潮的公司,同時擁有didichuxing.com xiaojukeji.com didiglobal.com等域名,種 cookie 是完全繞不開的。這要能實現(xiàn)「一次登錄,全線通用」,才是真正的單點登錄。這種場景下,我們需要獨立的認證服務(wù),通常被稱為 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è)務(wù)請求
  • 此時用戶第一次進入系統(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 操作,有對應(yīng)的安全策略,是大多數(shù)狀態(tài)管理方案的基石
  • session 是一種狀態(tài)管理方案,前端通過 cookie 存儲 id,后端存儲數(shù)據(jù),但后端要處理分布式問題
  • token 是另一種狀態(tài)管理方案,相比于 session 不需要后端存儲,數(shù)據(jù)全部存在前端,解放后端,釋放靈活性
  • token 的編碼技術(shù),通常基于 base64,或增加加密算法防篡改,jwt 是一種成熟的編碼方案
  • 在復(fù)雜系統(tǒng)中,token 可通過 service token、refresh token 的分權(quán),同時滿足安全性和用戶體驗
  • session 和 token 的對比就是「用不用cookie」和「后端存不存」的對比
  • 單點登錄要求不同域下的系統(tǒng)「一次登錄,全線通用」,通常由獨立的 SSO 系統(tǒng)記錄登錄狀態(tài)、下發(fā) ticket,各業(yè)務(wù)系統(tǒng)配合存儲和認證 ticket

  • 本文作者:HenryLulu_幾木

  • 本文鏈接:https://juejin.cn/post/6898630134530752520

—?【 THE END 】—
公眾號[程序員黃小斜]全部博文已整理成一個目錄,請在公眾號里回復(fù)「m」獲??!

如何優(yōu)雅地進行接口管理?騰訊阿里大佬首次分享秘訣


面試官:有了 for 循環(huán) 為什么還要 forEach ?


“阿里味” PUA 編程語言火上GitHub熱榜,標星2.7K!

最近面試BAT,整理一份面試資料Java面試BATJ通關(guān)手冊,覆蓋了Java核心技術(shù)、JVM、Java并發(fā)、SSM、微服務(wù)、數(shù)據(jù)庫、數(shù)據(jù)結(jié)構(gòu)等等。

獲取方式:點“在看”,關(guān)注公眾號并回復(fù) PDF?領(lǐng)取,更多內(nèi)容陸續(xù)奉上。

文章有幫助的話,在看,轉(zhuǎn)發(fā)吧。

謝謝支持喲 (*^__^*)

瀏覽 62
點贊
評論
收藏
分享

手機掃一掃分享

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

手機掃一掃分享

分享
舉報

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

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 刘玥一区二区| 夜夜骚av一区二区三区| 无码精品视频在线观看| 精品久久一区二区| 乱伦视频91| 成人在线无码视频| 国产精品一区二区AV日韩在线 | 亚洲无码黄色片| 乱子伦一区二区三区视频在线观看| 黄色视频日本| 天天操中文字幕| av资源站| 北条麻妃99精品| 大香蕉免费在线观看| 亚洲成人网站免费观看| 久久久WWW成人免费无遮挡大片| AA片免费看| 亚洲中文字幕av天堂| 水蜜桃视频在线观看| 国产AV中文字幕| 欧美特黄AAAAAAAAA片| 狠狠插狠狠操| 欧美啊啊啊| 99久久国产精| xxxxx无码| 亚洲内射网| 欧美精品久久久久久久久爆乳| 亚洲无码免费观看| 亚洲黄色视频网站| 女生被操网站| 免费看黄色大片| 7777av| 国产一区二区三区视频在线观看| 无码偷拍| 久久国内| 国产精品成人免费久久黄AV片| 亚洲无码AV网站| 国产亲子乱婬一级A片借种 | 69AV视频在线观看| 免费一级大片| 日本精品黄色| 91九色TS另类国产人妖| 麻豆一级| 亚洲阿v天堂| 少妇性受XXXX黑人XYX性爽| 学生妹一级| 内射黄片| 強暴人妻一区二区三区| 六月丁香五月天| 国产欧美一区二区三区视频| 男女日逼| 大香蕉伊人在线视频| 午夜探花| 中文字幕婷婷| 强伦轩一区二区三区四区播放方式| 日韩欧美色图| 91在线视频精品| 亚洲第一页在线| 午夜精品久久久久久久| AV资源在线播放| 青青伊人久久| 日韩麻豆| AV片在线观看| 成人激情五月天| 欧美一二| 免费a片视频| 国产精品国产精品国产专区| 一曲二曲三曲在线观看中文字| 特级西西444WWW视频| 人妻天天干| 日韩av无码中文字幕| 成人二区三区| 大吊妞| 激情五月天色| 天堂网2014| 亚洲图片在线观看| 国产成人精品二三区麻豆| 黄片无码在线观看| 99高清国产| 91视频综合网| 亚洲免费观看高清| 欧美黄色电影网站| a√天堂中文8| 国产日韩欧美在线观看| 91人人操| 色999在线播放视频| 日韩欧AV| 亚洲最新视频| 在线亚洲免费观看| 淫香欲色| 欧美激情久久久| 影音先锋黄色资源| 亚洲欧洲高清无码| 久热国产在线| 影音先锋久久久| 国产农村妇女精品一二区| 成人爱爱免费视频| 欧美激情综合网| 91精品免费| 懂色av粉嫩av蜜臀av| 91蝌蚪网| 婷婷五月天综合网| 精品免费国产一区二区三区四区的使用方法 | 日韩免费高清无码视频| 性生活无码视频| 欧美成人中文字幕在线| 欧美色视频一区二区三区在线观看 | 啪啪视频国产| 免费啪啪视频| 伊人大久久| 人人操人人看人人| 久久99精品国产.久久久久久| 高清无码不卡在线观看| 欧美丁香五月| 四虎综合| 美女网站在线观看| 色天堂视频| 精品福利在线| 天天澡天天爽日日AV| 91熊猫视频| 日韩中文久久| 爱爱爱爱网| jt33免费观看高清| 色色五月天视频| 人人操人人摸人人看| 依人大香蕉| 亚洲免费视频播放| 外国一级片| 91豆花视频18| 大香蕉一级红色片青青河边草| 国产成人无码毛片| 91AV久久| 中文字幕在线永久| ww免费视频| 一级内射视频| 制服丝袜强奸乱伦| 丁香五月在线观看| 久九视频| 国产高清精品在线| 大吊操| 日本一级片| 五月天无码在线| 午夜无码影院| 青青草97国产精品麻豆| 午夜操一操| 黑人干亚洲人| 成人三级视频在线| 国产小黄片在线| 亚洲成a| 人人爽人人| 久久久噜噜噜久久中文字幕色伊伊| 大香蕉尹人网| 精品中文字幕在线播放| 91AV免费| 国产成人TV| 中文字幕在线免费播放| 欧美性爱福利| 天堂一区二区| 日韩在线欧美在线| 欧一美一婬一伦一区二区三区自慰国 | 风流少妇一区二区三区91| 国产三级片在线免费观看| 人人操人人摸人人干| 国产在线欧美在线| 麻酥酥在线视频| 青草青在线| 好男人WWW一区二区三区| 亚洲免费成人网站| 青草福利视频| 五月婷婷免费视频| 日韩不卡av| 亚洲日韩欧美中在线| 中文最新天堂8√| 五月婷婷在线播放| 伊人青草视频9| 亚洲女人天堂AV| 国产粗大| 亚洲高清无码视频在线| 亚洲无码精品在线| 欧美日日| 国产成人午夜福利视频| 亚州无码精品| 午夜天堂网| 日本不卡一区二区三区| 丝袜内射| 91精品国产91久久久久久吃药| 亚洲一本之道| www.男人天堂| 91sese| 北条麻妃无码av| 北条麻妃91人妻互换| 亚洲激情视频在线观看| 亚洲v在线| 四虎Av| 欧美日韩美女| 精品综合| 亚洲无码网| 欧美曰皮免费看| 9l人人澡人人妻人人精品| 成人91视频| 99久| 日韩中文字幕在线| 拍拍拍免费视频| 日本V片| 日逼免费视频| 午夜福利高清在线观看| 日日操天天操| 色噜噜狠狠一区二区三区牛牛影视| 日韩成人高清无码| 国产精品秘久久久久久网站| 友田真希一级婬片A片| 人人av在线| 手机看片亚洲| 久久婷婷亚洲| 九九热九九| 女人久久久久| 美女靠逼视频| 一级成人A片| 中文字幕精品人妻在线| 俺去也av| 午夜爽爽爽| 国产一级婬片A片| 中文大香蕉视频| 日本黄色A片免费看| A片视频免费观看| 亚洲操| 99久久国产视频| 男女av免费| 在线观看欧美日韩| 天天干强奸视频在线综合| 久久精品人人| 在线免费观看中文字幕| 国产激情综合五月久久| 国产成人V在线精品一区| 高清无码日本| 无码精品一区二区三区同学聚会| 亚洲婷婷小说| 97精品人妻一区二区| 国产又爽又黄在线看| 人人干人人看| 国产丰满大乳无码免费播放| 日韩午夜av| 9999久久久久| 好看的中文字幕av| 午夜无码高清| 免费黄色AV| 婷婷丁香花| 亚洲日韩免费观看| 麻豆一区二区三区| 亚洲高清毛片一区二区| 色综合国产| 69久久| 成人网站一区二区| 在线无码一区二区三区| 亚洲黄色AV| 动漫人物插画动漫人物的视频软件 | 天天无码视频| 51黄片库| 91巨乳| 日本色视频| 丁香六月激情| 人人摸人人操人人爱| 杨门女将婬乱史1—6| 国产午夜福利电影| 西欧超碰在线| 琪琪色在线观看| 美女性爱3P视频| 免费无码婬片AAAA片在线蜜芽| 中文二区| 四川搡BBBBB搡BBB| 国产高清免费无码| AV电影在线观看| 日韩AV手机在线观看| 肏屄视频免费| 超碰199| 国产黄片一区二区三区| 国产调教视频| 国产精品成人3p一区二区三区| ThePorn-成人网站入口| 国产精品成人视频| 水蜜桃一区二区三区| 亚洲无码精品久久| 欧美午夜片| 亚洲午夜精品成人毛片| 成人黄色免费网站| 女人BBBB| 久久亚洲av| 中文字幕高清无码免费视频| 欧美啊啊啊| 亚洲性爱在线观看| 欧美一区二区三区系列电影| 三级视频网| 欧洲肥胖BBBBBBBBBB| ww免费视频| 91成人影片| 嫩BBB搡BBB搡BBB四川| 国产一级AV国产免费| 两根茎一起进去好爽A片在线观看| 亚洲男人的天堂AV| 一区二区三区在线观看| 91成人视频免费观看| 人人澡人人添人人爽人人| 一级性生活视频| 成人无码电影在线观看| 91无码视频| 黄色电影网页| 国产黄色网| 一级内射片在线网站观看| 玖玖爱国产| 玖玖91| 99xxxxx| 天天色色婷婷| 亚洲成人视频在线免费观看| 午夜精品视频| 一区二区三区久久久久| www99热| 加勒比一区二区三区| 蜜桃久久久| jizz免费观看| 精品一二三| 亚洲av色图| 99久在线精品99re8| 日本草久| 97乱伦| 欧美性猛交一区二区三区| 神马午夜视频| 欧美日韩在线免费观看| 国产精品毛片视频| 国产大鸡吧| 超碰操一操| 中文字幕av久久久久久欧洲尺码 | 在线观看一区二区三区四区| 欧美级毛片一进一出| 国产中文字幕在线免费观看| yw·163.爆乳尤物com| 欧美日韩美女| 波多野结衣无码AV在线| 日本熟妇在线| 中文字幕欧美在线| 波多野吉衣av| 国产AV一级片| 中文字幕+乱码+中文乱码91在线观看 | 免费视频a| 少妇搡BBBB搡BBB搡小说| 亚洲综合电影| 99热日韩| 中文无码在线播放| 91精品视频网| 东京热综合| 老湿机福利院| 欧美无人区码suv| 国产成人免费看| 超碰91在线| 人人摸人人操人人射| 土耳其电影《爱与罚》| 婷婷99狠狠躁天天| 日本草久| 欧美一级性爱视频| 日本www视频| 俄罗斯熟妇搡BBBB搡BBBB | 免费无码国产在线观看快色| 国产黄片一区二区三区| 大香蕉尹人网| 熟女老阿V8888AV| 操噜噜噜噜噜插| 麻豆md0049免费| 一区二区三区四区不卡| 日本高清无码视频| 久久亚洲影视| 国内成人精品| 精品91在线视频| 免费成人黄色| 成人毛片在线视频| 美日韩三级| 国产乱子伦-区二区三区四区| 亚洲精品图片| 中文字幕+乱码+中文字幕在线| 亚洲91无码精品一区在线播放| 亚洲无码中文字幕在线播放 | www.99国产| 亚洲黄色视频免费| 好吊妞在线| 少妇搡BBBB搡BBB搡造水多, | 久久香视频| 黄网在线免费观看| av性爱在线| 91女人18毛片水多国产| 69亚洲精品| 婷婷手机在线| xxx日韩| 亚洲精品久久久久久久蜜桃| 亚洲色久| 日韩无码操逼| 成人av网站在线播放| 国产毛片网| 国产3p露脸普通话对白| 日韩无码中文字幕| 亚洲高清超级无码在线视频观看| 国产顶级理伦| 北条麻妃精品| 无码欧美人XXXXX日本无码| 蜜桃久久99精品久久久酒店| 丰满人妻一区二区三区四区53| 国产操逼视频| 911精品国产一区二区在线| 乱人伦欲国语对白| 亚洲AV成人无码一区二区三区| 91亚洲高清| 中字无码AV| 国产亚洲一区二区三区| 国产女人水真多18毛片18精品 | 无码一区精品久久久成人| 免费肏逼视频| 777国产盗摄偷窥精品0000| 西西444WWW无码大胆| 亚洲乱伦av| 欧美成人网站在线观看| 国产农村妇女精品一二区| 国产亚洲aⅴ| 国产一级片视频| 狠狠操天天操| 乱伦麻豆| 无码人妻丰满熟妇精品| 日韩精品影视| 北条麻妃无码| 伊人大香在线| 中文字幕乱码亚洲中文在线| 欧美操b| 国产极品久久久| 人人干人人艹| 午夜黄色视频在线观看| 午夜亚洲国产一区视频网站| 亚洲欧美国产毛片在线| 啊啊啊亚洲| 黄色国产| 国产三级片在线观看视频| 微拍福利一区二区| 欧美精品在线视频| 大鸡巴久久久久久久| 中文字幕在线观看福利视频| AV片在线免费观看| 欧美AAAAAAAA| 日韩一区二区在线观看| 欧美A片网站| 亚洲天堂美女| 人妻中文无码| 大香蕉三级| 亚洲三级片免费观看| 无码福利| 肏屄视频网站| 99在线精品视频在线观看| 日韩无码AV电影| 国产中文字幕波多| 色淫视频| 五月丁香成人网| 青草无码| 久久99精品国产.久久久久| 日韩免费在线观看视频| 91亚洲国产成人久久精品网站| 欧美综合高清| 久久久久久久亚洲| 人人操超碰在线观看| 欧美激情DVD| 天堂中文资源在线| 99re在线观看观看这里只有精品| 女人A片一级黄色| 黄色大片免费观看| 制服丝袜在线视频| 亚洲国产另类精品| 九九热精品视频在线观看| 大香蕉国产在线视频| 特级特黄A级高潮播放| 亚洲性爱视频在线观看| 国产内射精品| 日韩一区二区三区在线视频| 97资源在线| 无码人妻精品一区| 日韩中文字幕视频在线| 国内操B电影| 国产在线观看黄色| 成人免费A片在线观看直播96| 日本黄A级A片国产免费| 91免费小视频| 中日韩特黄A片免费视频| 爽爽午国产浪潮AV性色www| AV黄片| 欧美性夜黄A片爽爽免费视频| yw尤物在线| 亚洲国产高清在线观看视频| 亚洲AV无码电影| 综合激情AV| 四川少妇搡BBw搡BBBB搡| 亚洲无码电影在线| 亚洲精品一级二级三级| 国产在线看片| 影音先锋成人视频| 国产黄片在线免费观看| 国产精品一级a毛一级a| 嫩草在线播放| 91麻豆福利在线观看| 麻豆人妻换人妻好紧| 日本男人天堂| 在线观看亚洲无码视频| 亚洲无码视频在线| 亚洲一区二区三区在线| 亚洲自慰| 四川性BBB搡BBB爽爽爽小说| 外国成人视频| 豆花av| 三级片无码麻豆视频| 梁祝艳谭A级毛片| 狼友视频报放| 人人干人人摸人人操| 大香蕉婷婷五月天| 色五月婷婷婷| 国产成人片色情AAAA片| 午夜福利院| 俺也去在线| 色逼逼网| 亚洲中文视频在线| 亚洲aaa| 午夜福利成人视频| 中文子幕免费毛片| 精品日韩中文字幕| 求毛片网址| 婷婷操逼| 国精产品一区一区三区四川| 肏屄一区| 日韩国产传媒| 三级网址大全| 亚洲AV无码国产精品| 大香蕉尹在线| 无码草逼| 亚洲国产精品VA在线看黑人| 国产精品91久久久| 天天操天天干天天日| 撸一撸在线| 亚洲国产精品二二三三区| 九九久久久久| 伊人日韩| 日韩一级无码| 蜜桃久久久| 国产精品日韩无码| 草逼逼| 丰满人妻一区二区三区46| 天天爽爽爽爽爽成人片| 国产毛片在线| 国产欧美一区二区三区四区| 黑人猛躁白人BBBBBBBBB| 国产精品久久久久无码AV| 在线天堂9| 亚洲无码视频在线观看| 青青草青娱乐| 亚洲日韩欧美视频| 强开小嫩苞一区二区三区网站| 大屌在线| 久久燥| 日逼视频| 国产秘久久一区二区| 国产香蕉在线观看| 69式荫蒂被添全过程| 女女久久| 亚洲无码一区二区三区蜜桃 | 国产亚洲欧美精品综合在线 | 波多野结衣高清无码视频| 中文字幕高清无码在线| 肏屄在线观看| 欧美喷水视频| 久久亚洲福利视频| 丁香五月在线观看| 日本黄色大片| 欧美不卡一区二区三区| 亚洲国产成人91精品| 在线免费中文字幕| 99精品国产一区二区| 激情五月天小说网| 五月婷婷六月丁香| 色婷婷成人做爰A片免费看网站| 国产精品午夜成人免费| 操比在线| 无码秘蜜桃吴梦梦| 99免费小视频| 色婷婷AV在线| 白峰美羽人妻AND-499| 激情一一区二区三区| 婷婷久久综合久色| 性无码一区二区三区| 亚洲视频中文字幕在线观看| 亚洲午夜免费视频| 91精品国产一区二区三区| 国产一级婬乱片免费| 西西888WWW大胆视频| 久久人人做| 北条麻妃一区二区三区-免费免费高清观看| 88av在线| 天天草天天射| 口爆吞精在线观看| 青草综合| 久热草| 在线观看老湿视频福利| 黄片网址大全| 精品国产AV无码一区二区三区| 久久精品操| 国产免费观看av| 久久久久久精品国产三级| 国产免费自拍| 人妻视频在线| 天天日天天射天天干| 亚洲欧洲精品在线| 国产熟女一区二区| 欧美在线色| 91网站在线播放| 欧美日韩国产成人综合| a片网站在线观看| 亚洲中文字幕免费观看视频| 91最新国产| 韩国三级中文字幕HD久久精品| 国产亲子乱婬一级A片| 亚洲精品三级| 在线中文字幕网站| 人人爽人人爽人人爽| 午夜福利成人视频| 日韩成人无码电影| 久久与婷婷| 成人在线不卡| 又黄又爽的网站| 人人看人人搂人人摸| 亚洲永久免费精品| 一个人看的视频www| 五月丁香欧美综合| 丝瓜视频黄| 无码人妻AV一区| 欧美日韩亚洲另类| 高清无码视频在线| 视频一区在线播放| 欧美日韩h| 久久成人在线视频| 色欲天天网| 99精品视频北条麻妃国产版| 在线观看国产区| 中文字幕永久在线5| 白虎高清无码大尺度免费在线观看| 人人射| 国产成人精品AV| 久草资源在线| 一区二区三区在线观看| 九九热精品在线| 一区二线视频| 欧一美一婬一伦一区| 一区二线视频| 大香蕉一区二区三区| 一本大道东京热av无码| 婷婷五月天激情视频| 久久免费观看视频| 91精品久久人妻一区二区夜夜夜| 操逼视频在线免费观看| 四虎视频| 91麻豆成人| 欧美日韩成人电影| 一区免费视频| 国产毛片在线| 99热这里都是精品| 一级黄色A片| 牛牛av| 久久91| 阿宾MD0165麻豆沈娜娜| 无码东京热国产| 最新人妻| 国产操屄网| 国内综合久久| 欧美黄色免费| 五月丁香婷婷成人| 亚洲中文字幕无码在线观看| 2024av在线| 99re视频在线播放| 欧美成人精品激情在线观看| 亚洲黄色在线观看视频| 欧美成人三级在线播放| 亚洲成人电影一区| www俺来也com| 日韩视频网址| 久草国产视频| 无码中文字幕在线播放| 亚洲乱伦中文字幕| 蜜桃BBwBBWBBwBBw| 免费日韩| 在线观看免费无码视频| 美女被操网站| 欧美三级在线播放| 女人的天堂AV在线观看| 麻豆电影| 日韩va亚洲va欧美va高清| 亚洲三级片免费观看| 成人中文字幕在线视频| 无码另类| 在桌下含她的花蒂和舌头H视频| 三级黄片网站| 成人免费网站黄| 国产香蕉精品视频| 亚洲欧美国产视频| 免费黄片网站在线观看| 天堂毛片| 三级国产| 国产成人视频| 久久夜色精品噜噜亚洲AV| 精品国产乱子伦一区二区三区,小小扐 | 午夜偷拍视频| 91麻豆精品国产91久久久久久 | 黄色a级片| 激情人妻AV| 精品成人A片久久久久久不卡三区| 自拍偷拍一区| 欧美成人精品一区二区三区| 日韩人妻精品无码久久| 国产精品视频免费观看| 操操小骚逼| 中国毛片网站| 国产美女被爽到高潮免费A片软件| 久久精品视频国产| 久久精品偷拍视频| 国产精品成人无码专区| 国产黄A| 久久久久久AV| www.bbbb| 中文字幕三级av片| 国产骚逼视频| 国产精品毛片VA一区二区三区| 91爱搞在线| 国产亚洲色婷婷久久99精品| 强伦轩人妻一区二区三区四区| av资源网站| 婷婷久久综合久色综| 18国产免费视频| 青青操国产乱伦| 国产成人A∨| 午夜操逼逼| 成人日韩在线| 亚洲激情片| 西西人体大胆ww4444多少集| 青青草在线视频免费观看| 日韩一级无码| 久久动图| 精精国产| 狠狠躁日日躁夜夜躁A片男男视频| 成人无码电影在线观看| 猛男大粗猛爽H男人味| 热久久久| 国产精品毛片| 黄色视频网站日本| 久久久久久久AV| 国产成人精品免费看视频| 男女日皮的视频| 丁香花小说完整视频免费观看| 国产一区二区无码| 姐弟乱伦性爱| 亚洲AV无码精品岛国| 五月天婷婷网址| 亚洲无吗在线观看| 91亚洲精品乱码久久久久久蜜桃| 成人AV免费在线观看| 成人黄色电影| 亚洲A片免费看| 亚洲欧美在线视频观看| 97人人色| 免费a视频在线观看| 成人在线观看网站| 亚州AV天堂| 久久国产一区二区| 天天看毛片| 亚洲欧洲AV| 日韩av免费| 秋霞二区| 又大又粗AV| 亚洲天堂在线看| 成人电影一区二区| 欧美久久久久| 91视频美女模特| 国产SUV精品一区二区| 青青草小视频| 91精品国产综合久久久蜜臀主演| 日韩黄色一级视频| 日韩国产欧美精品一区| 精品无码一区二区三区四区五区| 国产日韩中文字幕| 91成人看片| AV在线直播| 丁月婷婷五香天日五月天| 亚洲码AV波多野| 老师搡BBBB搡BBB| 九色PORNY蝌蚪视频| 天天做天天爱| 国产成人无码毛片| 免费av观看| 婷婷五月天色色| 国产h视频在线观看| 久久这里有精品| 一区二区中文| 激情五月激情综合网| 黄色视频在线观看国产| 黄色片A| 久久草草热国产精| 国产成人无码精品一区秘二区| 蜜臀精品一区二区三区| 热99| 免费一级婬片AAA片毛片A级| 一本道精品在线| av天堂无码| 久热精品视频在线观看| 成人肏逼视频在线| 天天射天天日天天干| 9999国产精品| 欧美后门菊门交| 亚洲伊人av| 午夜在线无码| 伊人看片| 国产中文字幕在线播放| 在线观看黄a| 无码蜜桃吴梦梦| 国模一区二区| 日韩三级小说| 日韩电影免费在线观看| www.199麻豆在线观看网站 | 欧美三级黄色| 伊人大香蕉在线观看| 免费在线性爱视频| av牛牛| 91色在线观看| 人人草人人| 欧一美一婬一伦一区二区三区| 日本欧美在线播放中文| 婷婷综合色| 久久a久久| 免费视频在线观看一区| 欧美三级毛片| 美女黄网站| 国产一级操逼片| 久久国产高清| 8050午夜网| 狼友视频在线看| 综合激情AV| 一本色道久久综合亚洲精品久久 | 亚洲无码高清免费| 极品久久| 亚洲天天操| 黄片精品| 九九性爱网| 日本色色视频| 久久国产精品伦子伦| 激情无码一区二区三区| 蜜桃AV在线| 久久婷视频| 99久久国产精| 日本免费高清视频| 成人aV免费观看| av网站免费在线观看| 久久久成人免费电影| 久久久久久久久久国产精品免费观看-百度 | 国产精品成人无码免费| 亚洲性爱一区二区三区| 中文字幕乱码中文乱码91| 亚洲操b| 精品人妻中文字幕视频| 久热免费视频在线观看| 人人爱人人射| 亚洲成人怡红院| 美日韩精品| 在线视频日韩| 亚洲图片在线播放| 影音先锋国产在线| 成年人观看视频| 亚洲成年人网| BBB搡BBB搡BBB搡BBB| 人人插人人操| 一区二区三区三级片| 97无码精品人妻一区二区三区| 超碰日本| 亚洲伦理一区二区| 在线国产中文字幕| 亚洲中文无码视频| AV-ThePorn| 久久亚洲免费视频| 亚洲午夜福利| 一区二区三区在线视频观看| 四虎黄色片| 操操小骚逼| 无码色| 水蜜桃一曲二区| 999热这里只有精品| 江苏妇搡BBB搡BBBB| 色猫AV| 青娱乐无码视频| 大香蕉av在线观看| 翔田千里无码在线观看| 五月乱伦| 一级aa片| 牛牛久久| AⅤ在线| 91自摸| 亚洲无码视频在线免费观看| 免费的A片|