精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

前端 JS 安全對(duì)抗原理與實(shí)踐

開發(fā) 前端
前端代碼都是公開的,為了提高代碼的破解成本、保證JS代碼里的一些重要邏輯不被居心叵測的人利用,需要使用一些加密和混淆的防護(hù)手段。

一、概念解析

1.1 什么是接口加密

如今這個(gè)時(shí)代,數(shù)據(jù)已經(jīng)變得越來越重要,網(wǎng)頁和APP是主流的數(shù)據(jù)載體,如果獲取數(shù)據(jù)的接口沒有設(shè)置任何的保護(hù)措施的話,數(shù)據(jù)就會(huì)被輕易地竊取或篡改。

除了數(shù)據(jù)泄露外,一些重要功能的接口如果沒有做好保護(hù)措施也會(huì)被惡意調(diào)用造成DDoS、條件競爭等攻擊效果,比如如下幾個(gè)場景:

圖片

一些營銷活動(dòng)類的Web頁面,領(lǐng)紅包、領(lǐng)券、投票、抽獎(jiǎng)等活動(dòng)方式很常見。此類活動(dòng)對(duì)于普通用戶來說應(yīng)該是“拼手氣”,而對(duì)于非正常用戶來說,可以通過直接刷活動(dòng)API接口的這種“作弊”方式來提升“手氣”。這樣對(duì)普通用戶來說就很不公平。

所以對(duì)重要接口都會(huì)采用加密驗(yàn)簽的方式進(jìn)行保護(hù),而驗(yàn)簽的加密邏輯大多數(shù)都通過JS代碼實(shí)現(xiàn),所以保護(hù)JS代碼不被攻擊者竊取尤為重要。

1.2 為什么要保護(hù)JS代碼

  • JavaScript代碼運(yùn)行于客戶端
  • JavaScript代碼是公開透明的

由于這兩個(gè)原因,致使JavaScript代碼是不安全的,任何人都可以讀、分析、復(fù)制、盜用甚至篡改。

1.3 應(yīng)用場景

以下場景就通過特定的防護(hù)措施提高了攻擊成本:

  • 某些網(wǎng)站會(huì)在頁面中使用JavaScript對(duì)數(shù)據(jù)進(jìn)行加密,以保護(hù)數(shù)據(jù)的安全性和隱私性,在爬取時(shí)需要通過解密JavaScript代碼才能獲取到數(shù)據(jù)。
  • 某些網(wǎng)站的URL會(huì)有某個(gè)參數(shù)帶有一些看不太懂的長串加密參數(shù),攻擊者要爬取的話就必須要知道這些參數(shù)是怎么構(gòu)造的,否則無法正確地訪問該URL。
  • 翻看網(wǎng)站的JavaScript源代碼,可以發(fā)現(xiàn)很多壓縮了或者看不太懂的字符,比如JavaScript文件名被編碼,JavaScript的文件內(nèi)容都?jí)嚎s成幾行,JavaScript變量也被修改成單個(gè)字符或者一些十六進(jìn)制的字符,所以我們不能輕易地根據(jù)JavaScript找出某些接口的加密邏輯。

1.4 涉及的技術(shù)

這些場景都是網(wǎng)站為了保護(hù)數(shù)據(jù)不被輕易抓取采取的措施,運(yùn)用的技術(shù)主要有:

  • 接口加密技術(shù)
  • JavaScript壓縮、混淆和加密技術(shù)

二、技術(shù)原理

2.1 接口加密技術(shù)

數(shù)據(jù)和功能一般是通過服務(wù)器提供的接口來實(shí)現(xiàn),為了提升接口的安全性,客戶端會(huì)和服務(wù)端約定一種接口檢驗(yàn)方式,通常是各種加密和編碼算法,如Base64、Hex、MD5、AES、DES、RSA等。

常用的數(shù)據(jù)接口都會(huì)攜帶一個(gè)sign參數(shù)用于權(quán)限管控:

① 客戶端和服務(wù)端約定一種接口校驗(yàn)邏輯,客戶端在每次請求服務(wù)端接口的時(shí)候附帶一個(gè)sign參數(shù)。
② sign參數(shù)的邏輯自定義,可以由當(dāng)前時(shí)間戳信息、設(shè)備ID、日期、雙方約定好的秘鑰經(jīng)過一些加密算法構(gòu)造而成。
③ 客戶端根據(jù)約定的加密算法構(gòu)造sign,每次請求服務(wù)器的時(shí)候附帶上sign數(shù)。
④ 服務(wù)端根據(jù)約定的加密算法和請求的數(shù)據(jù)對(duì)sign進(jìn)行校驗(yàn),如果檢驗(yàn)通過,才返回?cái)?shù)據(jù),否則拒絕響應(yīng)。

圖片

這就是一個(gè)比較簡單的接口參數(shù)加密的實(shí)現(xiàn),如果有人想要調(diào)用這個(gè)接口的話,必須要破解sign的生成邏輯,否則是無法正常調(diào)用接口的。

當(dāng)然上面的實(shí)現(xiàn)思路比較簡單,還可以增加一些時(shí)間戳信息和訪問頻次來增加時(shí)效性判斷,或使用非對(duì)稱加密提高加密的復(fù)雜程度。

實(shí)現(xiàn)接口參數(shù)加密需要用到一些加密算法,客戶端和服務(wù)器都有對(duì)應(yīng)的SDK來實(shí)現(xiàn)這些加密算法,如JavaScript的crypto-js、Python的hashlib、Crypto等等。如果是網(wǎng)頁且客戶端的加密邏輯是用JavaScript來實(shí)現(xiàn)的話,其源代碼對(duì)用戶是完全可見的,所以我們需要用壓縮、混淆、加密的方式來對(duì)JavaScript代碼進(jìn)行一定程度的保護(hù)。

2.2 什么是壓縮

去除JavaScript代碼中不必要的空格、換行等內(nèi)容,使源碼都?jí)嚎s為幾行內(nèi)容,降低代碼可讀性,同時(shí)可提高網(wǎng)站的加載速度。

如果僅僅是去除空格換行這樣的壓縮方式,幾乎沒有任何防護(hù)作用,這種壓縮方式僅僅是降低了代碼的直接可讀性,可以用IDE、在線工具或Chrome輕松將JavaScript代碼變得易讀。

所以JavaScript壓縮技術(shù)只能在很小的程度上起到防護(hù)作用,想提高防護(hù)的效果還得依靠JavaScript混淆和加密技術(shù)。

2.3 什么是混淆

使用變量混淆、字符串混淆、屬性加密、控制流平坦化、調(diào)試保護(hù)、多態(tài)變異等手段,使代碼變得難以閱讀和分析,同時(shí)不影響代碼原有功能,是一種理想且實(shí)用的JS保護(hù)方案。

  • 變量混淆:將變量名、方法名、常量名隨機(jī)變?yōu)闊o意義的亂碼字符串,降低代碼可讀性,如轉(zhuǎn)成單個(gè)字符或十六進(jìn)制字符串。
  • 字符串混淆:將字符串陣列化集中放置,并進(jìn)行MD5或Base64編碼存儲(chǔ),使代碼中不出現(xiàn)明文字符串,可以避免使用全局搜索字符串的方式定位到入口點(diǎn)。
  • 屬性加密:針對(duì)JavaScript對(duì)象的屬性進(jìn)行加密轉(zhuǎn)化,隱藏代碼之間的調(diào)用關(guān)系,把key-value的映射關(guān)系混淆掉。
  • 控制流平坦化:打亂函數(shù)原有代碼執(zhí)行流程及函數(shù)調(diào)用關(guān)系,使代碼邏輯變得混亂無序。
  • 調(diào)試保護(hù):基于調(diào)試器特性,加入一些強(qiáng)制調(diào)試debug語句,無限debug、定時(shí)debug、debug關(guān)鍵字,使其在調(diào)試模式下難以順利執(zhí)行JavaScript代碼。
  • 多態(tài)變異:JavaScript代碼每次被調(diào)用時(shí),代碼自身立刻自動(dòng)發(fā)生變異,變化為與之前完全不同的代碼,避免代碼被動(dòng)態(tài)分析調(diào)試。

2.4 什么是加密

JavaScript加密是對(duì)JavaScript混淆技術(shù)防護(hù)的進(jìn)一步升級(jí),基本思路是將一些核心邏輯用C/C++語言來編寫,并通過JavaScript調(diào)用執(zhí)行,從而起到二進(jìn)制級(jí)別的防護(hù)作用,加密的方式主要有Emscripten和WebAssembly等。

1. Emscripten

Emscripten編譯器可以將C/C++代碼編譯成asm.js的JavaScript變體,再由JavaScript調(diào)用執(zhí)行,因此某些JavaScript的核心功能可以使用C/C++語言實(shí)現(xiàn)。

2.WebAssembly

WebAssembly也能將C/C++代碼轉(zhuǎn)成JavaScript引擎可以運(yùn)行的代碼,但轉(zhuǎn)出來的代碼是二進(jìn)制字節(jié)碼,而asm.js是文本,因此運(yùn)行速度更快、體積更小,得到的字節(jié)碼具有和JavaScript相同的功能,在語法上完全脫離JavaScript,同時(shí)具有沙盒化的執(zhí)行環(huán)境,利用WebAssembly技術(shù),可以將一些核心的功能用C/C++語言實(shí)現(xiàn),形成瀏覽器字節(jié)碼的形式,然后在JavaScript中通過類似如下的方式調(diào)用:

圖片

這種加密方式更加安全,想要逆向或破解需要逆向WebAssembly,難度極大。

2.5 工具介紹

2.5.1 壓縮混淆工具

  • Uglifyjs(開源):

    用NodeJS編寫的JavaScript壓縮工具,是目前最流行的JS壓縮工具,JQuery就是使用此工具壓縮,UglifyJS壓縮率高,壓縮選項(xiàng)多,并且具有優(yōu)化代碼,格式化代碼功能。
  • jshaman
    jshaman是一個(gè)商業(yè)級(jí)工具,看了很多社區(qū)的評(píng)論,這個(gè)目前是最好的,可以在線免費(fèi)使用,也可以購買商業(yè)版。
  • jsfuck
    開源的js混淆工具,原理比較簡單,通過特定的字符串加上下標(biāo)定位字符,再由這些字符替換源代碼,從而實(shí)現(xiàn)混淆。
  • YUI Compressor
    業(yè)界巨頭yahoo提供的一個(gè)前端壓縮工具,通過java庫編譯css或js文件進(jìn)行壓縮

2.5.2 反混淆工具

  • jsbeautifier
    jsbeautifier是一個(gè)為前端開發(fā)人員制作的Chrome擴(kuò)展,能夠直接查看經(jīng)過壓縮的Javascript代碼。
  • UnuglifyJS
    壓縮工具uglify對(duì)應(yīng)的解混淆工具。
  • jspacker
    用PHP編寫的壓縮工具,可以混淆代碼保護(hù)知識(shí)產(chǎn)權(quán),產(chǎn)生的代碼兼容IE、FireFox等常用瀏覽器,國內(nèi)大部分在線工具網(wǎng)站都采用這種算法壓縮。

三、前端安全對(duì)抗

3.1 前端調(diào)試手法

3.1.1 Elements

Elements 面板會(huì)顯示目前網(wǎng)頁中的 DOM、CSS 狀態(tài),且可以修改頁面上的 DOM 和 CSS,即時(shí)看到結(jié)果,省去了在編輯器修改、儲(chǔ)存、瀏覽器查看結(jié)果的流程。

有時(shí)候一些dom節(jié)點(diǎn)會(huì)嵌套很深,導(dǎo)致我們很難利用Element面板html代碼來找到對(duì)應(yīng)的節(jié)點(diǎn)。inspect(dom元素)可以讓我們快速跳轉(zhuǎn)到對(duì)應(yīng)的dom節(jié)點(diǎn)的html代碼上。

圖片

3.1.2 Console

Console對(duì)象提供了瀏覽器控制臺(tái)調(diào)試的接口,Console是一個(gè)對(duì)象,上面有很多方便的方法。

  • console.log( ):最常用的語句,可以將變量輸出到瀏覽器的控制臺(tái)中,方便開發(fā)者調(diào)用JS代碼
  • console.table( ):可用于打印obj/arr成表格
  • console.trace( ):可用于debugger堆棧調(diào)試,方便查看代碼的執(zhí)行邏輯,看一些庫的源碼
  • console.count( ):打印標(biāo)簽被執(zhí)行了幾次,預(yù)設(shè)值是default,可用在快速計(jì)數(shù)
  • console.countReset( ):用來重置,可用在計(jì)算單次行為的觸發(fā)的計(jì)數(shù)
  • console.group( )/console.groupEnd( )
    為了方便一眼看到自己的log,可以用console.group自定義message group標(biāo)簽,還可以多層嵌套,并用console.groupEnd來關(guān)閉Group。

3.1.3 JS斷點(diǎn)調(diào)試

JS斷點(diǎn)調(diào)試,即在瀏覽器開發(fā)者工具中為JS代碼添加斷點(diǎn),讓JS執(zhí)行到某一特定位置停住,方便開發(fā)者對(duì)該處代碼段進(jìn)行分析與邏輯處理。

 Sources面板

① 普通斷點(diǎn)(breakpoint)

給一段代碼添加斷點(diǎn)的流程是:"F12(Ctrl + Shift + I)打開開發(fā)工具"->"點(diǎn)擊Sources菜單"->"左側(cè)樹中找到相應(yīng)文件"→"點(diǎn)擊行號(hào)列"即完成在當(dāng)前行添加/刪除斷點(diǎn)操作。當(dāng)斷點(diǎn)添加完畢后,刷新頁面JS執(zhí)行到斷點(diǎn)位置停住,在Sources界面會(huì)看到當(dāng)前作用域中所有變量和值。

圖片

  • 恢復(fù)(Resume): 恢復(fù)按鈕(第一個(gè)按鈕),繼續(xù)執(zhí)行,快捷鍵 F8,繼續(xù)執(zhí)行,如果沒有其他的斷點(diǎn),那么程序就會(huì)繼續(xù)執(zhí)行,并且調(diào)試器不會(huì)再控制程序。
  • 跨步(Step over):運(yùn)行下一條指令,但不會(huì)進(jìn)入到一個(gè)函數(shù)中,快捷鍵 F10。
  • 步入(Step into):快捷鍵 F11,和“下一步(Step)”類似,但在異步函數(shù)調(diào)用情況下表現(xiàn)不同,步入會(huì)進(jìn)入到代碼中并等待異步函數(shù)執(zhí)行。
  • 步出(Step out):繼續(xù)執(zhí)行到當(dāng)前函數(shù)的末尾,快捷鍵 Shift+F11,繼續(xù)執(zhí)行代碼并停止在當(dāng)前函數(shù)的最后一行,當(dāng)我們使用偶然地進(jìn)入到一個(gè)嵌套調(diào)用,但是我們又對(duì)這個(gè)函數(shù)不感興趣時(shí),我們想要盡可能的繼續(xù)執(zhí)行到最后的時(shí)候是非常方便的。
  • 下一步(Step):運(yùn)行下一條語句,快捷鍵 F9,一次接一次地點(diǎn)擊此按鈕,整個(gè)腳本的所有語句會(huì)被逐個(gè)執(zhí)行,下一步命令會(huì)忽略異步行為。

啟用/禁用所有的斷點(diǎn):這個(gè)按鈕不會(huì)影響程序的執(zhí)行。只是一個(gè)批量操作斷點(diǎn)的開/關(guān)。

  • 察看(Watch):顯示任意表達(dá)式的當(dāng)前值
  • 調(diào)用棧(Call Stack):顯示嵌套的調(diào)用鏈
  • 作用域(Scope):顯示當(dāng)前的變量
  • Local:顯示當(dāng)前函數(shù)中的變量
  • Global:顯示全局變量

② 條件斷點(diǎn)(Conditional breakpoint)

給斷點(diǎn)添加條件,只有符合條件時(shí),才會(huì)觸發(fā)斷點(diǎn),條件斷點(diǎn)的顏色是橙色。

圖片


③ 日志斷點(diǎn)(logpoint)

當(dāng)代碼執(zhí)行到這里時(shí),會(huì)在控制臺(tái)輸出你的表達(dá)式,不會(huì)暫停代碼執(zhí)行,日志斷點(diǎn)式粉紅色。

圖片

debugger命令

通過在代碼中添加"debugger;"語句,當(dāng)代碼執(zhí)行到該語句的時(shí)候就會(huì)自動(dòng)斷點(diǎn),之后的操作和在Sources面板添加斷點(diǎn)調(diào)試,唯一的區(qū)別在于調(diào)試完后需要?jiǎng)h除該語句。

在開發(fā)中偶爾會(huì)遇到異步加載html片段(包含內(nèi)嵌JS代碼)的情況,而這部分JS代碼在Sources樹中無法找到,因此無法直接在開發(fā)工具中直接添加斷點(diǎn),那么如果想給異步加載的腳本添加斷點(diǎn),此時(shí)"debugger;"就發(fā)揮作用了。

3.2 反調(diào)試手段

3.2.1 禁用開發(fā)者工具

監(jiān)聽是否打開開發(fā)者工具,若打開,則直接調(diào)用JavaScript的window.close( )方法關(guān)閉網(wǎng)頁

① 監(jiān)聽F12按鍵、監(jiān)聽Ctrl+Shift+I(Windows系統(tǒng))組合鍵、監(jiān)聽右鍵菜單,監(jiān)聽Ctrl+s禁止保存至本地,避免被Overrides。

<script>
    //監(jiān)聽F12、Ctrl+Shift+i、Ctrl+s
    document.onkeydown = function (event) {
        if (event.key === "F12") {
            window.close();
            window.location = "about:blank";
        } else if (event.ctrlKey && event.shiftKey && event.key === "I") {//此處I必須大寫
            window.close();
            window.location = "about:blank";
        } else if (event.ctrlKey && event.key === "s") {//此處s必須小寫
            event.preventDefault();
            window.close();
            window.location = "about:blank";
        }
    };
    //監(jiān)聽右鍵菜單
    document.oncontextmenu = function () {
        window.close();
        window.location = "about:blank";
    };
</script>

② 監(jiān)聽窗口大小變化

<script>
    var h = window.innerHeight, w = window.innerWidth;
    window.onresize = function () {
        if (h !== window.innerHeight || w !== window.innerWidth) {
            window.close();
            window.location = "about:blank";
        }
    }
</script>

③ 利用Console.log

<script>
 
    //控制臺(tái)打開的時(shí)候回調(diào)方法
    function consoleOpenCallback(){
        window.close();
        window.location = "about:blank";
        return "";
    }
    //立即運(yùn)行函數(shù),用來檢測控制臺(tái)是否打開
    !function () {
        // 創(chuàng)建一個(gè)對(duì)象
        let foo = /./;
        // 將其打印到控制臺(tái)上,實(shí)際上是一個(gè)指針
        console.log(foo);
        // 要在第一次打印完之后再重寫toString方法
        foo.toString = consoleOpenCallback;
    }()
</script>

3.2.2 無限debugger反調(diào)試

① constructor

<script>
    function consoleOpenCallback() {
        window.close();
        window.location = "about:blank";
    }
    setInterval(function () {
        const before = new Date();
        (function(){}).constructor("debugger")();
        // debugger;
        const after = new Date();
        const cost = after.getTime() - before.getTime();
        if (cost > 100) {
            consoleOpenCallback();
        }
    }, 1000);
</script>

② Function

<script>
    setInterval(function () {
        const before = new Date();
        (function (a) {
            return (function (a) {
                return (Function('Function(arguments[0]+"' + a + '")()'))
            })(a)
        })('bugger')('de');
        // Function('debugger')();
        // debugger;
        const after = new Date();
        const cost = after.getTime() - before.getTime();
        if (cost > 100) {
            consoleOpenCallback2();
        }
    }, 1000);
</script>

有大佬寫了一個(gè)庫專門用來判斷是否打開了開發(fā)者工具,可供參考使用:點(diǎn)擊查看>>

3.3 反反調(diào)試手段

3.3.1 禁用開發(fā)者工具

針對(duì)判斷是否打開開發(fā)者工具的破解方式很簡單,只需兩步就可以搞定。

① 將開發(fā)者工具以獨(dú)立窗口形式打開

② 打開開發(fā)者工具后再打開網(wǎng)址

3.3.2 無限debugger

針對(duì)無限debugger反調(diào)試,有以下破解方法

① 直接使用dubbger指令的,可以在Chrome找到對(duì)應(yīng)行(格式化后),右鍵行號(hào),選擇Never pause here即可。

② 使用了constructor構(gòu)造debugger的,只需在console中輸入以下代碼后,點(diǎn)擊F8(Resume script execution)回復(fù)js代碼執(zhí)行即可(直接點(diǎn)擊小的藍(lán)色放行按鈕即可)。

Function.prototype.cnotallow=function(){}

③ 使用了Function構(gòu)造debugger的,只需在console中輸入以下代碼。

Function = function () {}

3.4 總結(jié)

JavaScript混淆加密使得代碼更難以被反編譯和分析,從而提高了代碼的安全性,攻擊者需要花費(fèi)更多的時(shí)間和精力才能理解和分析代碼,從而降低了攻擊者入侵的成功率,但它并不能完全保護(hù)代碼不被反編譯和分析,如果攻擊者有足夠的時(shí)間和資源,他們?nèi)匀豢梢岳斫獯a并找到其中的漏洞,道高一尺,魔高一丈,任何客戶端加密混淆都會(huì)被破解,只要用心都能解決,我們能做的就是拖延被破解的時(shí)間,所以盡量避免在前端代碼中嵌入敏感信息或業(yè)務(wù)邏輯。

責(zé)任編輯:龐桂玉 來源: vivo互聯(lián)網(wǎng)技術(shù)
相關(guān)推薦

2024-05-07 07:03:29

2015-05-25 10:05:16

2017-03-23 13:38:32

2021-06-25 17:39:35

網(wǎng)絡(luò)對(duì)抗與實(shí)踐經(jīng)驗(yàn)

2013-07-30 09:38:18

2013-04-24 09:51:34

2018-12-04 13:30:28

Javascript編譯原理前端

2017-05-25 09:45:35

2020-05-22 09:12:46

HTTP3網(wǎng)絡(luò)協(xié)議

2010-10-28 13:51:35

2021-10-25 14:05:00

物聯(lián)網(wǎng)安全設(shè)備

2024-05-10 11:35:22

Redis延時(shí)隊(duì)列數(shù)據(jù)庫

2025-02-06 08:24:25

AQS開發(fā)Java

2009-06-08 16:52:00

2017-04-17 15:48:15

Cinder備份實(shí)踐

2025-02-08 08:10:00

2023-09-08 12:37:15

2020-09-18 13:09:15

云原生云安全網(wǎng)絡(luò)安全

2017-06-01 14:28:07

2017-07-26 14:50:37

前端模板
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

亚洲**毛片| 激情网站在线| 国产最新精品免费| 久久久综合免费视频| 亚洲视频在线播放免费| 视频在线日韩| 一区2区3区在线看| 日韩国产精品一区二区| 精品乱子伦一区二区| 久久久久久黄| 欧美激情aaaa| 人妻无码一区二区三区免费| 成人黄色av网址| 在线国产电影不卡| 男人的天堂狠狠干| 久热国产在线| 国产欧美一区二区精品性色超碰 | 日日夜夜天天综合| 亚洲综合免费观看高清完整版| 日韩动漫在线观看| 色屁屁草草影院ccyycom| 久久精品久久综合| 91精品国产高清久久久久久久久| 日韩成人短视频| 精品产国自在拍| 亚洲娇小xxxx欧美娇小| 91精产国品一二三产区别沈先生| 亚洲精品永久免费视频| 亚洲午夜激情网站| 欧美日韩一级在线| av电影在线网| 国产亚洲欧美日韩在线一区| 精品久久久久久一区二区里番| 99国产在线播放| 美女精品自拍一二三四| 茄子视频成人在线| 日韩乱码在线观看| 国产在线观看无码免费视频| bbw在线视频| 亚洲欧美另类综合偷拍| 亚洲一区二区三区精品动漫| 国产日本在线视频| 久久这里只有精品首页| 精品国产一区二区三区免费| 亚洲精品字幕在线| 国产资源在线一区| 成人免费午夜电影| 在线观看中文字幕2021| 日韩电影在线观看网站| 日本中文字幕久久看| 欧美性猛交bbbbb精品| 国产欧美成人| 日本欧美一二三区| 亚洲欧美一二三区| 免费成人av资源网| 国产精品一区二区3区| 在线观看xxxx| 国内精品久久久久影院薰衣草 | 中文无码日韩欧| 日韩欧美国产综合| 岛国精品一区二区三区| 久久精品论坛| 精品一区二区亚洲| www.av欧美| 欧州一区二区| 久久久精品一区二区| avtt天堂在线| 国产日韩欧美一区| 国产福利视频一区| 亚洲无码久久久久| 国产老肥熟一区二区三区| 99视频免费观看| 五月激情婷婷综合| 国产情人综合久久777777| 亚洲免费久久| 欧美xxxx少妇| 色综合久久天天综合网| 亚洲天堂网一区| 日韩视频一区二区三区四区| 亚洲国产成人久久综合| 最近中文字幕免费视频| 日韩一区二区三区免费播放| 美乳少妇欧美精品| 国产精品久久久久久久app| 欧美精品欧美极品欧美激情| 精品久久久久久久久久久aⅴ| 日韩综合视频在线观看| 久久这里只有精品国产| 日韩激情一区二区| 亚洲a成v人在线观看| 少妇人妻一区二区| 国产欧美日韩精品一区| 欧美日韩中文字幕在线播放| 亚洲男人av| 91精品国产福利在线观看| 真人bbbbbbbbb毛片| 日韩成人激情| 性色av一区二区三区免费| 中国一级片黄色一级片黄| 高清在线观看日韩| 亚洲欧美丝袜| 色在线视频观看| 5566中文字幕一区二区电影| 3d动漫精品啪啪一区二区下载 | 日韩中文视频免费在线观看| 国产在线视频第一页| 日本免费新一区视频| 国产一区不卡在线观看| 免费a级在线播放| 五月激情六月综合| 亚洲网中文字幕| 美女亚洲一区| 欧美精品videossex性护士| 国产精品露脸视频| 99r国产精品| 免费看日b视频| 韩国理伦片久久电影网| 亚洲乱亚洲乱妇无码| 欧美激情一区二区视频| 久久机这里只有精品| 久久综合福利| 成人免费高清观看| 欧美一二三区在线| 潘金莲一级黄色片| 奇米影视在线99精品| 久久大片网站| 91超碰国产在线| 欧美www视频| 国产极品国产极品| 麻豆一区二区99久久久久| 欧美精品123| 成人国产电影在线观看| 精品国产第一区二区三区观看体验 | 国产精品久久看| 中文字幕无码不卡免费视频| 日韩成人午夜| 欧美有码在线视频| 天堂在线中文网| 午夜精品一区在线观看| 天堂www中文在线资源| 亚洲私拍自拍| 国产精品美女xx| av在线加勒比| 亚洲第一级黄色片| 懂色av.com| 波多野结衣一区二区三区| 成人一区二区免费视频| 精品三级av在线导航| 97avcom| 成人一级片网站| 里番在线观看网站| 欧美日韩国产小视频| 免费91在线观看| 精久久久久久久久久久| 香蕉视频在线网址| 日本99精品| 欧美大片欧美激情性色a∨久久| 精品区在线观看| 亚洲国产另类精品专区| 日韩少妇一区二区| 亚洲精品国产日韩| 蜜桃成人在线| 国产91精品在线| 久久精品视频网站| 丰满人妻一区二区三区无码av| 亚洲国产精品久久艾草纯爱 | 欧美激情综合五月色丁香| 爱爱爱爱免费视频| 欧美成人高清| 久久久av水蜜桃| 一呦二呦三呦精品国产| 日韩小视频网址| www.国产麻豆| 色综合久久99| 中文字幕求饶的少妇| 国产成人综合自拍| 欧美女人性生活视频| 成人羞羞视频播放网站| 97超碰最新| 在线成人av观看| 久久艳片www.17c.com| 免费看黄色一级视频| 色婷婷一区二区三区四区| 国产精品视频看看| 国产99久久久久| 免费男同深夜夜行网站| 亚洲成人av| 久久久久久久久久码影片| 成人午夜毛片| 欧美黑人国产人伦爽爽爽| 理论视频在线| 日韩欧美色综合网站| 麻豆成人免费视频| 亚洲激情在线激情| 色无极影院亚洲| 国产成人av自拍| 亚洲福利精品视频| 亚洲第一精品影视| 亚洲欧洲精品一区二区| 电影一区二区在线观看| 国产精品久久久亚洲| 亚洲三级视频网站| 九一国产精品| 91黄色精品| 欧美97人人模人人爽人人喊视频| 久久久噜噜噜久噜久久| 麻豆视频网站在线观看| 亚洲精品视频在线播放| www.成人精品| 欧美日本不卡视频| 日韩欧美在线观看免费| 一区二区三区av电影| 91香蕉视频网| 国产午夜精品一区二区| 人妻换人妻a片爽麻豆| 国内精品久久久久影院薰衣草| 50路60路老熟妇啪啪| 伊人精品成人久久综合软件| 国产精品美女在线播放| 日产精品一区二区| 美女主播视频一区| 久草精品视频| 国产福利不卡| 日本在线视频一区二区三区| 国产精品一区专区欧美日韩| 国产直播在线| 国内外成人免费激情在线视频| 看女生喷水的网站在线观看| 中文字幕亚洲欧美一区二区三区 | 欧美激情在线观看视频免费| 中文字幕影片免费在线观看| 波多野结衣视频一区| 色婷婷狠狠18禁久久| 国产麻豆视频一区| 中文字幕1234区| 精品一区二区三区欧美| 亚洲这里只有精品| 人人爽香蕉精品| 黑人粗进入欧美aaaaa| 久久综合九色| 老头吃奶性行交视频| 丝袜a∨在线一区二区三区不卡| 哪个网站能看毛片| 久久裸体视频| 成人黄色一区二区| 日韩国产欧美一区二区三区| 欧美精品成人网| 日韩精品一二三| 天天操天天爽天天射| 日本不卡一区二区三区| 日本肉体xxxx裸体xxx免费| 看电视剧不卡顿的网站| 久久6免费视频| 国产高清久久久| 国产午夜在线一区二区三区| 91网站在线播放| 久久精品国产亚洲av久| 国产亚洲午夜高清国产拍精品| 日本一级免费视频| 国产精品美女久久久久久久| 三级黄色在线观看| 一区二区三区四区不卡在线| 日韩精品一卡二卡| 91黄视频在线观看| 夜夜躁狠狠躁日日躁av| 欧美一级日韩免费不卡| 亚洲成人一二三区| 国产丝袜一区二区三区| 爱爱爱免费视频在线观看| 精品国产美女在线| 免费污视频在线| 国产99久久精品一区二区永久免费| 精品三区视频| 91超碰rencao97精品| 林ゆな中文字幕一区二区| 久久精品aaaaaa毛片| 青草国产精品| 国产日韩欧美大片| 亚洲三级免费| 亚洲欧洲日本精品| 高清成人在线观看| 最近中文字幕在线mv视频在线| 国产精品国产三级国产专播品爱网 | 奇米成人av国产一区二区三区| 激情欧美一区二区三区黑长吊| 亚洲影视中文字幕| 日韩精品欧美大片| 国产成年人在线观看| 99精品视频免费全部在线| 免费涩涩18网站入口| 成人av先锋影音| 永久免费观看片现看| 午夜在线电影亚洲一区| 中文字幕日韩国产| 亚洲大胆美女视频| 国产美女福利在线| 亲子乱一区二区三区电影 | 国产一区二区在线网站| av资源久久| 欧美网站免费观看| 狠狠色狠狠色综合系列| 香蕉网在线播放| 一区二区久久久| 一区二区视频在线免费观看| 亚洲福利在线视频| 八戒八戒神马在线电影| 国产成人欧美在线观看| 久久电影在线| 日韩人妻一区二区三区蜜桃视频| 天堂影院一区二区| 亚洲麻豆一区二区三区| 亚洲人成小说网站色在线 | 精品国产一区二区三区四区四| 成人三级黄色免费网站| 91精品国产高清自在线看超| 亚洲天堂中文字幕在线观看| 一级做a爰片久久| 西西人体一区二区| 在线中文字日产幕| 自拍偷拍欧美精品| 久久国产香蕉视频| 亚洲精品中文字幕av| av老司机在线观看| 99热在线播放| 亚洲综合婷婷| 亚洲日本黄色片| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 亚州国产精品久久久| 57pao成人永久免费| 亚洲成人午夜在线| 日韩精品乱码av一区二区| 精品无码人妻一区| 欧美日韩国产丝袜另类| 黄色片一区二区三区| 欧美大片欧美激情性色a∨久久| www一区二区三区| 在线观看免费91| 久久精品理论片| 国产精品精品软件男同| 欧美男女性生活在线直播观看| 第一视频专区在线| 国产精品扒开腿做爽爽爽男男| 亚洲人成伊人成综合图片| 久久久久久久激情| 久久亚洲捆绑美女| 欧美特黄aaaaaa| 亚洲片av在线| 亚洲第一会所001| 亚洲成人网上| 国内精品伊人久久久久影院对白| xxxx日本少妇| 日韩免费电影一区| xxx性欧美| 久久国产精品亚洲va麻豆| 免费永久网站黄欧美| 国产真人做爰视频免费| 欧美探花视频资源| 麻豆最新免费在线视频| 亚洲一区二区三区香蕉| 欧美日韩三级| 朝桐光av一区二区三区| 91高清在线观看| 免费在线午夜视频| 97人摸人人澡人人人超一碰| 在线视频观看日韩| 四虎影成人精品a片| 欧美三级中文字幕在线观看| 爆操欧美美女| 久久综合九色综合网站| 日韩激情电影免费看| 色阁综合伊人av| 粉嫩一区二区三区在线观看| www成人免费| 久久女同精品一区二区| 一级黄色大片网站| 欧美放荡办公室videos4k| 香蕉久久夜色精品国产更新时间| 看欧美ab黄色大片视频免费 | 亚洲一区二区在线免费观看| 国产激情偷乱视频一区二区三区| 国产午夜精品一区二区理论影院 | www视频在线看| 精品在线视频一区二区| 美女视频一区二区| 久久久久97国产| 怡红院精品视频| 99精品中文字幕在线不卡 | 视频精品国内| 欧美少妇性生活视频| 亚洲欧美国产三级| 色综合久久网女同蕾丝边| 国产在线视频91| 亚洲一区二区动漫| 强制高潮抽搐sm调教高h| 亚洲加勒比久久88色综合| 亚洲青青一区| 日韩精品一区二区三区色欲av| 亚洲精品视频一区| 国产福利片在线| 国产欧美一区二区在线播放|