整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          jquery的text()和html()區別?如何正

          jquery的text()和html()區別?如何正常解析html標簽而非標簽字符


          ext()方法會把包含的字符轉義處理,html()則不會.所謂轉義就是字符的另一種顯示方法,例如"<" 顯示成 "<",這就是轉義了,其中的<就是<的轉義字符.還有很多可以轉義的字符,可以搜索下看看.


          下邊是項目中用到的2個語句:span中包含了jquery的語句輸出結果.


          1. $('.title').text("<img src=" ">");


          顯示結果為<img src=" ">,這里的<img src=" ">不會被解析成html的img標簽,而是以存字母文字的形式顯示,也就是單純的字符串:<img src=" "> .并且f12查看源碼時看到span包含的<img src=" ">文字內容外層有雙引號哦.看下圖,


          ?


          如果你用右鍵選擇編輯為html,則看到其中的轉義字符<這就說明我們的<被轉移了,


          ?


          如果我們想把<img>顯示成標簽,被瀏覽器解析.那么就需要如下方法.



          2. $('.title').html("<img >");


          顯示結果為解析后的html代碼段,那么這里的<img >就會按照h5的標簽img圖片進行解析顯示了.下圖是f12的頁面代碼結果span中的<img>標簽外層無雙引號,且頁面此時會顯示出來圖片.


          ?



          ?

          么是EL表達式?

          表達式語言(Expression Language,EL),EL表達式是用"${}"括起來的腳本,用來更方便的讀取對象!

          • EL表達式主要用來讀取數據,進行內容的顯示!


          為什么要使用EL表達式?

          • 為什么要使用EL表達式,我們先來看一下沒有EL表達式是怎么樣讀取對象數據的吧
          • 在1.jsp中設置了Session屬性
          <%@ page language="java" contentType="text/html" pageEncoding="UTF-8"%>
          <html>
          <head>
           <title>向session設置一個屬性</title>
          </head>
          <body>
          <%
           //向session設置一個屬性
           session.setAttribute("name", "aaa");
           System.out.println("向session設置了一個屬性");
          %>
          </body>
          </html>
          
          • 在2.jsp中獲取Session設置的屬性
          <%@ page contentType="text/html;charset=UTF-8" language="java" %>
          <html>
          <head>
           <title></title>
          </head>
          <body>
          <%
           String value=(String) session.getAttribute("name");
           out.write(value);
          %>
          </body>
          </html>
          
          • 效果:

          • 上面看起來,也沒有多復雜呀,那我們試試EL表達式的!
          • 在2.jsp中讀取Session設置的屬性
          <%@ page contentType="text/html;charset=UTF-8" language="java" %>
          <html>
          <head>
           <title></title>
          </head>
          <body>
          ${name}
          </body>
          </html>
          
          • 只用了簡簡單單的幾個字母就能輸出Session設置的屬性了!并且輸出在瀏覽器上!

          • 使用EL表達式可以方便地讀取對象中的屬性、提交的參數、JavaBean、甚至集合



          EL表達式的作用

          • 首先來看一下EL表達式的語法吧
          ${標識符}
          
          • EL表達式如果找不到相應的對象屬性,返回的的空白字符串“”,而不是null,這是EL表達式最大的特點!


          獲取各類數據

          獲取域對象的數據

          • 上面在例子中,我們已經體驗到了獲取Session域對象的數據是多么地方便!其實EL表達式可以讓我們獲取各個域范圍的數據
          • 在1.jsp中設置ServeltContext屬性(也就是application)
          <%
           //向ServletContext設置一個屬性
           application.setAttribute("name", "aaa");
           System.out.println("向application設置了一個屬性");
          %>
          
          • 在2.jsp中獲取application的屬性
          <%
           ${name}
          %>
          
          • 和Session一樣,也能獲取得到!

          • 之前我們來講ServletContext對象的時候講過一個方法findAttribute(String name),EL表達式語句在執行的時候會調用該方法,用標識符作為關鍵字分別從page、request、session、application四個域中查找相應的對象。這也解釋了為什么EL表達式可以僅僅通過標識符就能夠獲取到存進域對象的數據!
          • findAttribute()的查找順序:從小到大,也就是page->request->session->application


          獲取JavaBean的屬性

          • 以前在JSP頁面獲取JavaBean的數據是這樣子的
          • 1.jsp頁面Session存進一個Person對象,設置age的屬性為22
          <jsp:useBean id="person" class="domain.Person" scope="session"/>
          <jsp:setProperty name="person" property="age" value="22"/>
          


          在2.jsp中取出Session的屬性

          <%
           Person person=(Person) session.getAttribute("person");
           System.out.println(person.getAge());
          %>
          
          • 效果如下

          • 現在我使用了EL表達式讀取數據又會非常方便了
          //等同于person.getAge()
          ${person.age}
          

          • 上面的代碼 等同于調用對象的getter方法,內部是通過反射機制完成的


          獲取集合的數據

          • 集合操作在開發中被廣泛地采用,在EL表達式中也很好地支持了集合的操作!可以非常方便地讀取Collection和Map集合的內容
          • 為了更好地看出EL表達式的強大之處,我們也來對比一下使用EL表達式和不使用EL表達式的區別
          • 下面不使用EL表達式輸出集合的元素
          • 在1.jsp頁面中設置session的屬性,session屬性的值是List集合,List集合裝載的又是Person對象
          <%
           List<Person> list=new ArrayList();
           Person person1=new Person();
           person1.setUsername("zhongfucheng");
           Person person2=new Person();
           person2.setUsername("ouzicheng");
           list.add(person1);
           list.add(person2);
           session.setAttribute("list",list);
          %>
          
          • 在2.jsp中獲取到session的屬性,并輸出到頁面上
          <%
           List<Person> list=(List) session.getAttribute("list");
           out.write(list.get(0).getUsername()+"<br>");
           out.write(list.get(1).getUsername());
          %>
          

          使用EL表達式又是怎么樣的效果呢?我們來看看

          <%--取出list集合的第1個元素(下標從0開始),獲取username屬性--%>
          ${list[0].username}
          <br>
          <%--取出list集合的第2個元素,獲取username屬性--%>
          ${list[1].username}
          
          • 同樣也可以有相同的效果:

          • 我們再來使用一下Map集合
          • 在1.jsp中session屬性存儲了Map集合,Map集合的關鍵字是字符串,值是Person對象
          <%
           Map<String, Person> map=new HashMap<>();
           Person person1=new Person();
           person1.setUsername("zhongfucheng1");
           Person person2=new Person();
           person2.setUsername("ouzicheng1");
           map.put("aa",person1);
           map.put("bb",person2);
           session.setAttribute("map",map);
          %>
          
          • 看起來好像取出數據的時候是會有點復雜,但是有了EL表達式也是非常輕松的
          ${map.aa.username}
          <br>
          ${map.bb.username}
          
          • 效果:

          • 如果Map集合存儲的關鍵字是一個數字,就不能使用"."號運算符了,如下所示

          • 對于這種情況,我們可以使用"[]"的形式讀取Map集合的數據
          ${map["1"].username}
          <br>
          ${map["2"].username}
          
          • EL表達式配合JSTL標簽可以很方便的迭代集合,后面講到JSTL標簽的時候會用到!這里就不詳細說明了。



          EL運算符

          • EL表達式支持簡單的運算符:加減乘除取摸,邏輯運算符empty運算符(判斷是否為null),三目運算符

          • empty運算符可以判斷對象是否為null,用作于流程控制!
          • 三目運算符簡化了if和else語句,簡化代碼書寫
          <%
           List<Person> list=null;
          %>
          ${list==null?"list集合為空":"list集合不為空"}
          
          • 效果:


          EL表達式11個內置對象

          EL表達式主要是來對內容的顯示,為了顯示的方便,EL表達式提供了11個內置對象

          1. pageContext 對應于JSP頁面中的pageContext對象(注意:取的是pageContext對象)
          2. pageScope 代表page域中用于保存屬性的Map對象
          3. requestScope 代表request域中用于保存屬性的Map對象
          4. sessionScope 代表session域中用于保存屬性的Map對象
          5. applicationScope 代表application域中用于保存屬性的Map對象
          6. param 表示一個保存了所有請求參數的Map對象
          7. paramValues表示一個保存了所有請求參數的Map對象,它對于某個請求參數,返回的是一個string[]
          8. header 表示一個保存了所有http請求頭字段的Map對象
          9. headerValues同上,返回string[]數組。
          10. cookie 表示一個保存了所有cookie的Map對象
          11. initParam 表示一個保存了所有web應用初始化參數的map對象
          • 下面測試各個內置對象
          <%--pageContext內置對象--%>
          <%
           pageContext.setAttribute("pageContext1", "pageContext");
          %>
          pageContext內置對象:${pageContext.getAttribute("pageContext1")}
          <br>
          <%--pageScope內置對象--%>
          <%
           pageContext.setAttribute("pageScope1","pageScope");
          %>
          pageScope內置對象:${pageScope.pageScope1}
          <br>
          <%--requestScope內置對象--%>
          <%
           request.setAttribute("request1","reqeust");
          %>
          requestScope內置對象:${requestScope.request1}
          <br>
          <%--sessionScope內置對象--%>
          <%
           session.setAttribute("session1", "session");
          %>
          sessionScope內置對象:${sessionScope.session1}
          <br>
          <%--applicationScope內置對象--%>
          <%
           application.setAttribute("application1","application");
          %>
          applicationScopt內置對象:${applicationScope.application1}
          <br>
          <%--header內置對象--%>
          header內置對象:${header.Host}
          <br>
          <%--headerValues內置對象,取出第一個Cookie--%>
          headerValues內置對象:${headerValues.Cookie[0]}
          <br>
          <%--Cookie內置對象--%>
          <%
           Cookie cookie=new Cookie("Cookie1", "cookie");
          %>
          Cookie內置對象:${cookie.JSESSIONID.value}
          <br>
          <%--initParam內置對象,需要為該Context配置參數才能看出效果【jsp配置的無效!親測】--%>
          initParam內置對象:${initParam.name}
          <br>
          
          • 效果圖:

          注意事項:

          • 測試headerValues時,如果頭里面有“-” ,例Accept-Encoding,則要headerValues[“Accept-Encoding”]
          • 測試cookie時,例`${cookie.key}`取的是cookie對象,如訪問cookie的名稱和值,須`${cookie.key.name}`或`${cookie.key.value}`
          • 測試initParam時,初始化參數要的web.xml中的配置Context的,僅僅是jsp的參數是獲取不到的
          • 上面已經測過了9個內置對象了,至于param和parmaValues內置對象一般都是別的頁面帶數據過來的(表單、地址欄)
          • 表單頁面
          <form action="/zhongfucheng/1.jsp" method="post">
          用戶名:<input type="text" name="username"><br>
          年齡:<input type="text " name="age"><br>
          愛好:
          <input type="checkbox" name="hobbies" value="football">足球
          <input type="checkbox" name="hobbies" value="basketball">籃球
          <input type="checkbox" name="hobbies" value="table tennis">兵乓球<br>
          <input type="submit" value="提交"><br>
          </form>
          
          • 處理表單頁面:
          ${param.username}
          <br>
          ${param.age}
          <br>
          //沒有學習jstl之前就一個一個寫吧。
          ${paramValues.hobbies[0]}
          <br>
          ${paramValues.hobbies[1]}
          <br>
          ${paramValues.hobbies[2]}
          <br>
          
          • 效果:

          • 當然了,使用地址欄方式提交數據給處理頁面也是用param內置對象去獲取數據的


          EL表達式回顯數據

          EL表達式最大的特點就是:如果獲取到的數據為null,輸出空白字符串""!這個特點可以讓我們數據回顯

          • 在1.jsp中模擬場景
          <%--模擬數據回顯場景--%>
          <%
           User user=new User();
           user.setGender("male");
           //數據回顯
           request.setAttribute("user",user);
          %>
          <input type="radio" name="gender" value="male" ${user.gender=='male'?'checked':'' }>男
          <input type="radio" name="gender" value="female" ${user.gender=='female'?'checked':'' }>女
          
          • 效果:


          EL自定義函數

          EL自定義函數用于擴展EL表達式的功能,可以讓EL表達式完成普通Java程序代碼所能完成的功能

          • 開發HTML轉義的EL函數
          • 我們有時候想在JSP頁面中輸出JSP代碼,但是JSP引擎會自動把HTML代碼解析,輸出給瀏覽器。此時我們就要對HTML代碼轉義


          步驟:

          • 編寫一個包含靜態方法的類EL表達式只能調用靜態方法),該方法很常用,Tomcat都有此方法,可在\webapps\examples\WEB-INF\classes\util中找到
          public static String filter(String message) {
           if (message==null)
           return (null);
           char content[]=new char[message.length()];
           message.getChars(0, message.length(), content, 0);
           StringBuilder result=new StringBuilder(content.length + 50);
           for (int i=0; i < content.length; i++) {
           switch (content[i]) {
           case '<':
           result.append("<");
           break;
           case '>':
           result.append(">");
           break;
           case '&':
           result.append("&");
           break;
           case '"':
           result.append(""");
           break;
           default:
           result.append(content[i]);
           }
           }
           return (result.toString());
          }
          
          • 在WEB/INF下創建tld(taglib description)文件,在tld文件中描述自定義函數
          <?xml version="1.0" encoding="ISO-8859-1"?>
          <taglib xmlns="http://java.sun.com/xml/ns/javaee"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
           version="2.1">
           <tlib-version>1.0</tlib-version>
           <short-name>myshortname</short-name>
           <uri>/zhongfucheng</uri>
           <!--函數的描述-->
           <function>
           <!--函數的名字-->
           <name>filter</name>
           <!--函數位置-->
           <function-class>utils.HTMLFilter</function-class>
           <!--函數的方法聲明-->
           <function-signature>java.lang.String filter(java.lang.String)</function-signature>
           </function>
          </taglib>
          
          • 在JSP頁面中導入和使用自定義函數,EL自定義的函數一般前綴為"fn",uri是"/WEB-INF/tld文件名稱"
          <%@ page language="java" contentType="text/html" pageEncoding="UTF-8" %>
          <%@taglib prefix="fn" uri="/WEB-INF/zhongfucheng.tld" %>
          <html>
          <head>
           <title></title>
          </head>
          <body>
          //完成了HTML轉義的功能
          ${fn:filter("<a href='#'>點我</a>")}
          </body>
          </html>
          
          • 效果:


          EL函數庫(fn方法庫)

          • 由于在JSP頁面中顯示數據時,經常需要對顯示的字符串進行處理,SUN公司針對于一些常見處理定義了一套EL函數庫供開發者使用
          • 其實EL函數庫就是fn方法庫,是JSTL標簽庫中的一個庫,也有人稱之為fn標簽庫,但是該庫長得不像是標簽,所以稱之為fn方法庫
          • 既然作為JSTL標簽庫中的一個庫,要使用fn方法庫就需要導入JSTL標簽要想使用JSTL標簽庫就要導入jstl.jar和standard.jar包!
          • 所以,要對fn方法庫做測試,首先導入開發包(jstl.jar、standard.jar)

          • 在JSP頁面中指明使用標簽庫
          <%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
          


          • fn方法庫全都是跟字符串有關的(可以把它想成是String的方法)
          • fn:toLowerCase
          • fn:toUpperCase
          • fn:trim
          • fn:length
          • fn:split
          • fn:join 【接收字符數組,拼接字符串】
          • fn:indexOf
          • fn:contains
          • fn:startsWith
          • fn:replace
          • fn:substring
          • fn:substringAfter
          • fn:endsWith
          • fn:escapeXml【忽略XML標記字符】
          • fn:substringBefore
          • 測試代碼:
          contains:${fn:contains("zhongfucheng",zhong )}<br>
          containsIgnoreCase:${fn:containsIgnoreCase("zhongfucheng",ZHONG )}<br>
          endsWith:${fn:endsWith("zhongfucheng","eng" )}<br>
          escapeXml:${fn:escapeXml("<zhongfucheng>你是誰呀</zhongfucheng>")}<br>
          indexOf:${fn:indexOf("zhongfucheng","g" )}<br>
          length:${fn:length("zhongfucheng")}<br>
          replace:${fn:replace("zhongfucheng","zhong" ,"ou" )}<br>
          split:${fn:split("zhong,fu,cheng","," )}<br>
          startsWith:${fn:startsWith("zhongfucheng","zho" )}<br>
          substring:${fn:substring("zhongfucheng","2" , fn:length("zhongfucheng"))}<br>
          substringAfter:${fn:substringAfter("zhongfucheng","zhong" )}<br>
          substringBefore:${fn:substringBefore("zhongfucheng","fu" )}<br>
          toLowerCase:${fn:toLowerCase("zhonGFUcheng")}<br>
          toUpperCase:${fn:toUpperCase("zhongFUcheng")}<br>
          trim:${fn:trim(" zhong fucheng ")}<br>
          <%--將分割成的字符數組用"."拼接成一個字符串--%>
          join:${fn:join(fn:split("zhong,fu,cheng","," ),"." )}<br>
          
          • 效果:

          • 使用fn方法庫數據回顯
          <%
           User user=new User();
           String likes[]={"sing"};
           user.setLikes(likes);
           //數據回顯
           request.setAttribute("user",user);
          %>
          <%--java的字符數組以","號分割開,首先拼接成一個字符串,再判讀該字符串有沒有包含關鍵字,如果有就checked--%>
          <input type="checkbox"${ fn:contains(fn:join(user.likes,","),"sing")?'checked':'' }>唱歌
          <input type="checkbox"${ fn:contains(fn:join(user.likes,","),"dance")?'checked':'' }>跳舞
          
          • 效果:

          原文鏈接:https://dwz.cn/bOdF7S6R

          作者:Java3y

          在網絡安全領域,注入攻擊是一種常見的攻擊方式,攻擊者通過向應用程序發送惡意數據來操控應用程序的行為。以下跟隨博主通過具體樣例一起來掌握以下五種知名的注入攻擊類型。

          1. SQL注入(SQL Injection)

          SQL注入流程

          1.1. 概述

          SQL注入是最常見的注入攻擊類型之一,攻擊者通過在輸入字段中插入惡意的SQL代碼來改變原本的SQL邏輯或執行額外的SQL語句,來操控數據庫執行未授權的操作(如拖庫、獲取管理員信息、獲取 WebShell權限等)。

          1.2. 攻擊方式

          攻擊者可以通過輸入特定的SQL查詢語句,獲取敏感數據、修改數據或刪除數據。例如,在登錄表單中用戶名稱中輸入 admin' OR '1'='1,可能導致繞過身份驗證。

          1.3. 防御措施

          • 參數化查詢:使用參數化查詢(Prepared Statements)和存儲過程,避免直接拼接SQL語句。
          • 輸入驗證:對用戶輸入進行嚴格的驗證和過濾。禁止在代碼中或者存儲過程中使用exec語句直接執行外部輸入的參數或者使用外部輸入拼接的SQL 語句。
          • 最小化特權:限制數據庫用戶特權。

          2. 腳本注入(Cross-Site Scripting, XSS)

          XSS注入流程

          2.1. 概述

          XSS攻擊允許攻擊者在用戶的瀏覽器中執行惡意腳本,通常用于竊取用戶的會話信息、Cookies等。

          應用程序包含反射式輸入類型時容易出現跨站腳本攻擊。比如彈出一個假的窗口騙取用戶信息。

          2.2. 攻擊方式

          攻擊者將惡意JavaScript代碼注入到網頁中,當用戶訪問該網頁時,代碼會在用戶的瀏覽器中執行。例如,攻擊者在評論區輸入 <script>alert('XSS');</script>

          2.3. 防御措施

          • 對用戶輸入進行HTML轉義,避免執行惡意代碼;
          • 用戶可控數據輸出至http響應中時要對輸出進行編碼;
          • 使用內容安全策略(CSP)限制可執行的腳本源。

          3. 命令注入(Command Injection)

          命令注入流程

          3.1. 概述

          命令注入攻擊允許攻擊者在服務器上執行任意命令,通常通過在輸入字段中插入系統命令來實現。

          3.2. 攻擊方式

          攻擊者可以通過輸入特定的命令,如 ; ls -la,來執行系統命令。例如,在一個文件上傳功能中,如果沒有對輸入進行有效過濾,攻擊者可能上傳惡意腳本。

          3.3. 防御措施

          • 使用安全函數:盡量不要從應用程序層代碼中調用OS命令,如果實在要調用請使用封裝后的安全函數;
          • 輸入過濾,避免執行未授權的命令
            • 對參數進行白名單校驗,如驗證輸入只包含字母,沒有其他語法關鍵字或空格等。
            • 黑名單過濾,攔截命令注入特殊字符。
          • 參數編碼:對常見特殊字符進行轉碼,避免命令注入。

          4. XML注入(XML Injection)

          XML注入流程

          4.1. 概述

          XML注入攻擊通過向XML數據中插入惡意內容,來操控XML解析器的行為。例如,攻擊者可以插入額外的XML節點,導致數據泄露或系統崩潰。

          4.2. 攻擊方式

          攻擊者可以通過構造惡意的XML數據,影響后端系統的處理邏輯,主要有以下兩種攻擊方式:

          • 普通注入:XML 注入攻擊和SQL 注入攻擊的原理一樣,利用了XML 解析機制的漏洞,如果系統對用戶輸入"<",">"沒有做轉義的處理,攻擊者可以修改XML 的數據格式,或者添加新的XML 節點,就會導致解析XML 異常,對流程產生影響。
          • 外部實體注入:外 部 實 體 (XML External Entity,XXE) 注入攻擊,由于程序在解析輸入的XML 數據時,解析了攻擊者偽造的外部實體而引發的攻擊者利用站外腳部本實體的引用功能可實現對任意支件的讀取。

          4.3. 防御措施

          • 對XML輸入進行嚴格的驗證和過濾;
          • 使用安全的XML解析庫,避免處理惡意構造的XML。

          5. LDAP注入(LDAP Injection)

          目錄服務是一個集中式數據庫,包含主體和客體的有關信息,如身份認證數據。許多目錄服務都基于輕量級目錄訪問協議(Lightweight Directory Access Protocol,LDAP) 。比如,微軟活動目錄域服務(Microsoft Active Directory Domain Services,ADDS)就是基于LDAP的。

          可以將 LDAP 目錄看作是針對網絡服務和資產的電話簿。用戶、客戶端和進程可以檢索目錄服務,從而定位所需系統或資源的位置。

          5.1. 概述

          LDAP注入攻擊通過向LDAP查詢中插入惡意代碼,來操控LDAP服務器的行為。

          LDAP注入原理類似SQL注入。

          5.2. 攻擊方式

          攻擊者可以通過輸入特定的LDAP查詢語句,獲取未授權的用戶信息。

          例如,輸入 *)(uid=*))可能導致查詢所有用戶。

          5.3. 防御措施

          • 使用參數化查詢來構造LDAP查詢;
          • 對用戶輸入進行嚴格的驗證和過濾。

          6. 總結

          注入攻擊是一種嚴重的安全威脅,了解各種注入類型及其防御措施對于保護應用程序的安全至關重要。開發者應始終遵循安全編碼實踐,確保應用程序能夠抵御這些攻擊。


          主站蜘蛛池模板: 久久精品黄AA片一区二区三区| 好吊视频一区二区三区| 亚洲.国产.欧美一区二区三区| 日本在线视频一区| 91亚洲一区二区在线观看不卡| 人妻内射一区二区在线视频| 日本v片免费一区二区三区| 国产另类ts人妖一区二区三区| 91精品一区二区综合在线| 精品性影院一区二区三区内射| 无码精品人妻一区二区三区中| 蜜臀Av午夜一区二区三区| 人妻天天爽夜夜爽一区二区| 无码国产精品一区二区免费式直播 | 久久久久国产一区二区三区| 日本精品少妇一区二区三区| 精品视频一区二区三区| 日韩电影一区二区三区| 亚洲国产欧美一区二区三区| 国产一区二区在线观看视频| 农村人乱弄一区二区| 精品人妻系列无码一区二区三区 | 日本美女一区二区三区| 综合无码一区二区三区| 国产成人一区二区三中文| 无码欧精品亚洲日韩一区夜夜嗨| 亚洲av午夜福利精品一区| 日韩av片无码一区二区不卡电影| 波多野结衣一区二区三区高清在线 | 日韩电影一区二区三区| 一区二区视频免费观看| 亚洲av无码一区二区三区人妖| 中文字幕无码一区二区三区本日| 亚洲日本久久一区二区va| 亲子乱AV视频一区二区| 精品一区二区三区无码免费直播| 亚洲一区二区三区高清在线观看| 国产日韩精品一区二区三区在线 | 亚洲成a人一区二区三区| 精品少妇人妻AV一区二区三区 | 亚洲乱色熟女一区二区三区丝袜 |