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

發現 XSS 漏洞?別急,用這招 SpringBoot 3.3 技巧輕松搞定!

開發 前端
我們創建了一個包含完整 XSS 防護的 Spring Boot 應用。自定義注解、過濾器和參數解析器的結合使我們的解決方案靈活且易于擴展。此方案不僅能有效防止 XSS 攻擊,還能保證應用的可維護性和代碼的整潔度。

在 Web 開發中,XSS(跨站腳本攻擊)是一類常見且危險的漏洞。本文將介紹如何在 Spring Boot 3.3 項目中使用自定義注解和過濾器來防止 XSS 攻擊,并結合前端使用 Thymeleaf 模板引擎、JavaScript 及 Bootstrap 實現完整的防護方案。首先,讓我們了解一下 XSS 攻擊的類型、原理及示例。

XSS 攻擊類型及原理

XSS 攻擊可以分為以下三類:

  1. 存儲型 XSS(Stored XSS):攻擊者將惡意腳本存儲在目標服務器上。例如,通過提交帶有惡意腳本的表單,服務器在后續響應中將其返回給客戶端并執行。
  2. 反射型 XSS(Reflected XSS):惡意腳本作為請求的一部分被發送到服務器,然后在響應中返回并執行。這種攻擊通常通過帶有惡意腳本的 URL 來實現。
  3. DOM 型 XSS(DOM-based XSS):攻擊者通過修改網頁的 DOM 環境(例如 JavaScript 操作 DOM)來執行惡意腳本。這種攻擊利用的是客戶端環境而非服務器。

運行效果:

圖片圖片

若想獲取項目完整代碼以及其他文章的項目源碼,且在代碼編寫時遇到問題需要咨詢交流,歡迎加入下方的知識星球。

攻擊示例

存儲型 XSS 示例:

<form action="/submit" method="post">
       <input type="text" name="comment" value="<script>alert('XSS');</script>">
       <button type="submit">Submit</button>
   </form>

反射型 XSS 示例:

http://example.com/search?query=<script>alert('XSS');</script>

DOM 型 XSS 示例:

<div id="content"></div>
   <script>
       var unsafeContent = '<script>alert("XSS");<\/script>';
       document.getElementById('content').innerHTML = unsafeContent;
   </script>

這些攻擊利用了網頁對用戶輸入缺乏適當的驗證和過濾,從而使得惡意代碼得以執行。接下來,本文將介紹如何在 SpringBoot 項目中實現 XSS 防護。

項目配置

首先,我們創建一個 Spring Boot 項目。這里是項目的基本結構和配置:

項目結構:

src
├── main
│   ├── java
│   │   └── com
│   │       └── icoderoad
│   │           └── xss_protection
│   │               ├── XssProtectionApplication.java
│   │               ├── annotation
│   │               │   └── XssProtection.java
│   │               ├── config
│   │               │   └── WebConfig.java
│   │               ├── controller
│   │               │   └── XssController.java
│   │               ├── filter
│   │               │   └── XssFilter.java
│   │               └── util
│   │                   └── XssUtil.java
│   ├── resources
│   │   ├── templates
│   │   │   └── index.html
│   │   ├── application.yml
├── pom.xml
pom.xml 配置
<?xml versinotallow="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>3.3.3</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.icoderoad</groupId>
	<artifactId>xss-protection</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>xss-protection</name>
	<description>Demo project for Spring Boot</description>
	
	<properties>
		<java.version>17</java.version>
	</properties>
	<dependencies>
		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
		<dependency>
		    <groupId>org.apache.commons</groupId>
		    <artifactId>commons-text</artifactId>
		    <version>1.12.0</version>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>
application.yml 配置
server:
  port: 8080
spring:
  thymeleaf:
    cache: false
logging:
  level:
    root: INFO
    
xss:
  enabled: true
  type: annotation  # 兩種處理類型 annotation 或者 filter

實現自定義注解

我們將定義一個自定義注解,用于標記需要進行 XSS 過濾保護的控制器方法參數。

創建注解 @XssProtection
package com.icoderoad.xss_protection.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

// 用于標記需要 XSS 保護的方法參數
@Documented
@Target({ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
public @interface XssProtection {
}

自定義注解處理

為了確保我們的注解生效,我們需要在控制器方法參數上正確處理 @XssProtection 注解。一個有效的方法是通過自定義參數解析器。

自定義參數解析器 XssRequestParameterResolver
package com.icoderoad.xss_protection.config;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.MethodParameter;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.support.WebDataBinderFactory;
import org.springframework.web.context.request.NativeWebRequest;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.method.support.ModelAndViewContainer;

import com.icoderoad.xss_protection.annotation.XssProtection;
import com.icoderoad.xss_protection.util.XssUtil;

@Component
public class XssRequestParameterResolver implements HandlerMethodArgumentResolver {

    private static final Logger logger = LoggerFactory.getLogger(XssRequestParameterResolver.class);

    @Override
    public boolean supportsParameter(MethodParameter parameter) {
        boolean hasAnnotation = parameter.hasParameterAnnotation(XssProtection.class);
        logger.debug("supportsParameter: {} has annotation: {}", parameter.getParameterName(), hasAnnotation);
        return hasAnnotation;
    }

    @Override
    public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer,
                                  NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {
    	String paramName = parameter.getParameterName();
        String paramValue = webRequest.getParameter(paramName);
        if (paramValue != null) {
            return XssUtil.sanitize(paramValue);
        }
        return null;
    }
}

創建過濾器

接下來,我們實現一個過濾器,讀取請求的內容,并進行 XSS 清理。

創建過濾器 XssFilter
package com.icoderoad.xss_protection.filter;

import java.io.IOException;

import com.icoderoad.xss_protection.util.XssUtil;

import jakarta.servlet.Filter;
import jakarta.servlet.FilterChain;
import jakarta.servlet.FilterConfig;
import jakarta.servlet.ServletException;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.ServletResponse;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletRequestWrapper;

public class XssFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {}

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        HttpServletRequest httpServletRequest = (HttpServletRequest) request;
        XssHttpServletRequestWrapper xssRequestWrapper = new XssHttpServletRequestWrapper(httpServletRequest);
        chain.doFilter(xssRequestWrapper, response);
    }

    @Override
    public void destroy() {}

    private static class XssHttpServletRequestWrapper extends HttpServletRequestWrapper {
        public XssHttpServletRequestWrapper(HttpServletRequest request) {
            super(request);
        }

        @Override
        public String getParameter(String name) {
            String parameter = super.getParameter(name);
            return parameter == null ? null : XssUtil.sanitize(parameter);
        }

        @Override
        public String[] getParameterValues(String name) {
            String[] values = super.getParameterValues(name);
            if (values != null) {
                for (int i = 0; i < values.length; i++) {
                    values[i] = XssUtil.sanitize(values[i]);
                }
            }
            return values;
        }
    }
}

配置過濾器

在 SpringBoot 配置類中注冊該過濾器或參數解析器:

配置類 WebConfig
package com.icoderoad.xss_protection.config;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import com.icoderoad.xss_protection.filter.XssFilter;

import jakarta.servlet.Filter;

@Configuration
public class WebConfig implements WebMvcConfigurer {

	@Value("${xss.enabled}")
	private boolean xssEnabled;

	@Value("${xss.type}")
	private String xssType;
	
	@Autowired
	private XssRequestParameterResolver xssRequestParameterResolver;


	@Bean
	@ConditionalOnProperty(name = "xss.type", havingValue = "filter")
	public Filter xssFilter() {
		return new XssFilter();
	}
	

    @Override
    public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) {
    	if (xssEnabled && "annotation".equalsIgnoreCase(xssType)) {
    		resolvers.add(xssRequestParameterResolver); // 優先級最高
    	}
    }

	@Bean
	@ConditionalOnProperty(name = "xss.type", havingValue = "filter")
	public FilterRegistrationBean<XssFilter> xssFilterRegistrationBean() {
		FilterRegistrationBean<XssFilter> registrationBean = new FilterRegistrationBean<>();
		registrationBean.setFilter(new XssFilter());
		registrationBean.addUrlPatterns("/*");
		return registrationBean;
	}

}

創建控制器

創建一個簡單的控制器來演示我們的 XSS 保護方案:

控制器類 XssController
package com.icoderoad.xss_protection.controller;


import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;

import com.icoderoad.xss_protection.annotation.XssProtection;

@Controller
public class XssController {

    @GetMapping("/")
    public String index() {
        return "index";
    }

    @PostMapping("/submit")
    public String submit( @XssProtection String input, Model model) {
        model.addAttribute("input", input);
        return "index";
    }
}

創建前端頁面

創建一個 Thymeleaf 模板頁面,用于展示和提交數據。

index.html 頁面
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>XSS 防護示例</title>
    <link  rel="stylesheet"/>
    <style>    
      body {
        padding-top: 20px;
    }
    </style>
</head>
<body>
<div class="container">
    <h2 class="text-center">XSS 防護示例</h2>
    <form action="/submit" method="post" class="mt-4">
        <div class="form-group">
            <label for="input">請輸入文本:</label>
            <input type="text" class="form-control" id="input" name="input" required>
        </div>
        <button type="submit" class="btn btn-primary">提交</button>
    </form>
    <div class="mt-4">
        <h4>提交的文本:</h4>
        <p th:text="${input}"></p>
    </div>
</div>
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
</body>
</html>

代碼詳細講解

  1. 自定義注解:注解 @XssProtection 用于標記我們希望保護的控制器參數。此注解沒有實際功能,但在參數解析器中將使用它來判斷哪些參數需要進行 XSS 過濾。
  2. 過濾器:XssFilter 過濾器會以 XssHttpServletRequestWrapper 包裝請求對象。這一包裝對象的作用是讀取請求體并進行 XSS 清理。我們使用了 Apache Commons Text 提供的方法來轉義 HTML 字符,防止惡意腳本注入。
  3. 參數解析器:XssProtectionResolver 自定義參數解析器在控制器方法被調用前處理標記有 @XssProtection 注解的參數。參數解析器使用 StringEscapeUtils.escapeHtml4 方法對參數值進行 HTML 轉義,去除潛在的 XSS 攻擊向量。
  4. 前端頁面:前端頁面使用 Thymeleaf 模板引擎,結合 Bootstrap 框架來創建一個簡單的展示頁面。用戶提交的文本會被展示在頁面上,且變化后的內容會通過 XssProtectionResolver 進行 XSS 處理后再顯示。
  5. 配置類:在配置類中注冊自定義過濾器和參數解析器,確保它們在項目啟動時生效。
1. 正常文本
輸入: Hello World
期望輸出: Hello World
說明: 正常文本應保持不變,因為它不包含任何潛在的惡意內容。
2. 簡單的 HTML 標簽
輸入: <b>Hello</b>
期望輸出: <b>Hello</b>
說明: 為了防止 HTML 注入,將標簽內容轉義為實體,確保其不會被瀏覽器解釋為實際的 HTML。
3. JavaScript 注入
輸入: <script>alert('XSS');</script>
期望輸出: <script>alert('XSS');</script>
說明: 轉義 <script> 標簽及其內容,防止腳本注入并在瀏覽器中執行。
4. URL 注入
輸入: <a >Click me</a>
期望輸出: <a >Click me</a>
說明: 鏈接內容應當被轉義,防止惡意鏈接注入并自動執行。
5. 惡意屬性
輸入: <img src="x" notallow="alert('XSS')">
期望輸出: <img src="x" notallow="alert('XSS')">
說明: 移除或轉義潛在的惡意屬性,如 onerror,以防止利用屬性注入執行惡意代碼。

總結

通過上述配置,我們創建了一個包含完整 XSS 防護的 Spring Boot 應用。自定義注解、過濾器和參數解析器的結合使我們的解決方案靈活且易于擴展。此方案不僅能有效防止 XSS 攻擊,還能保證應用的可維護性和代碼的整潔度。

責任編輯:武曉燕 來源: 路條編程
相關推薦

2010-04-30 15:45:09

2009-09-13 20:28:38

Linq插入數據

2025-06-06 01:45:00

2016-03-17 17:35:15

云容器虛擬化管理Docker

2020-05-11 10:59:02

PythonWord工具

2015-01-04 15:36:52

XSS漏洞XSS

2025-07-02 08:00:00

防抖SpringBoot開發

2025-03-11 08:34:22

2013-08-07 10:00:03

XSS谷歌

2023-12-31 09:06:08

2009-12-11 15:37:58

Linux日志處理

2017-05-11 15:01:43

Androidweb布局

2022-09-16 08:04:25

阿里云權限網絡

2021-09-03 08:23:21

Vue 插槽子組件

2024-05-06 08:56:31

PythonHTML正則表達式

2009-04-27 11:17:51

網絡管理子網劃分

2024-08-29 08:58:30

JPA編寫數據操

2024-07-17 08:29:20

2019-03-25 07:27:14

XSS漏洞Ecshop

2013-11-27 17:12:27

點贊
收藏

51CTO技術棧公眾號

国产a级一级片| 成人av中文| 极品蜜桃臀肥臀-x88av| 国产亚洲欧美日韩精品一区二区三区 | av免费观看国产| 水莓100在线视频| 奇米影视在线99精品| 欧美理论片在线观看| 极品白嫩丰满美女无套| 四虎国产精品成人免费影视| 亚洲一区二区欧美日韩 | 老司机午夜性大片| 污视频免费在线观看| 久久综合国产精品| 亚洲精品免费网站| 日韩精品一区二区亚洲av| 日韩精品一区二区久久| 精品国产凹凸成av人网站| 免费激情视频在线观看| 午夜影院免费在线| 久久人人超碰精品| 99视频在线免费观看| 亚洲毛片一区二区三区| 欧美暴力喷水在线| 一区二区三区黄色| 欲求不满的岳中文字幕| 国产日韩在线观看视频| 色噜噜狠狠色综合中国| 久久在线中文字幕| 在线免费av网站| 成人a区在线观看| 国产在线98福利播放视频| 日韩黄色一级大片| 欧美在线网站| 中文字幕精品在线视频| 欧美日韩一区二区三区四区五区六区 | 国产欧美一区二区三区网站| 国产成人女人毛片视频在线| 中文字幕有码无码人妻av蜜桃| 亚洲国产高清一区| 久久视频精品在线| 99久久99久久精品免费看小说.| 五月天亚洲色图| 欧美成人精品1314www| 中日韩av在线播放| 久久日本片精品aaaaa国产| 欧美小视频在线| 国产精品无码av在线播放| 日本三级在线观看网站| 亚洲激情校园春色| 看全色黄大色大片| 日本www在线观看| 中文字幕精品一区二区三区精品| 日本高清不卡三区| 嫩草研究院在线观看| 久久综合中文字幕| 欧美h视频在线| 日色在线视频| 久久美女艺术照精彩视频福利播放| 国产亚洲二区| 色屁屁草草影院ccyycom| 99久久久久免费精品国产| 国产欧美日韩在线播放| 蜜桃久久一区二区三区| youjizz国产精品| 国语精品中文字幕| 日韩在线免费播放| 久久综合九色综合欧美98| 麻豆91av| 成人在线免费视频| 中文字幕一区二区三| 2021狠狠干| 成全电影大全在线观看| 精品久久久久久久久久ntr影视| koreanbj精品视频一区| 欧美黄色三级| 欧美日韩成人在线| 手机看片国产精品| 国偷自产视频一区二区久| 日韩av在线看| 久久中文字幕精品| 欧美一区精品| 午夜欧美不卡精品aaaaa| 激情视频网站在线观看| 久久成人免费网站| 51国偷自产一区二区三区的来源| 欧美一级特黄aaaaaa| xfplay精品久久| 国产精品99久久久久久大便| 羞羞污视频在线观看| 精品久久久久久久久中文字幕| 爱福利视频一区二区| 色狠狠一区二区三区| 亚洲成人久久久久| 色一情一交一乱一区二区三区 | 黄色录像特级片| www555久久| 欧美影院午夜播放| 任你躁av一区二区三区| 激情五月综合| 欧美成人免费全部观看天天性色| 日韩久久久久久久久| 免费精品视频在线| 国产视色精品亚洲一区二区| 成a人v在线播放| 亚洲午夜激情网页| 视色视频在线观看| 精品久久ai| zzijzzij亚洲日本成熟少妇| 成人免费区一区二区三区| 麻豆91精品91久久久的内涵| 精品视频在线观看| 成视频免费观看在线看| 狠狠色香婷婷久久亚洲精品| 中文字幕第10页| 日本女优一区| 69av在线视频| 超碰在线播放97| 国产欧美一区二区三区鸳鸯浴| 久久国产精品视频在线观看| 成人亚洲精品| 中文字幕一区二区精品| 波多野结衣国产| 国产成人av电影免费在线观看| 日韩欧美精品在线不卡| 日韩理论视频| 精品国产不卡一区二区三区| 久草福利资源在线| 日韩中文字幕1| 久久久精品动漫| av小说在线播放| 日韩女优av电影| 疯狂试爱三2浴室激情视频| 日韩**一区毛片| 欧美三级电影在线播放| 高清精品在线| 亚洲成人aaa| 国产一级淫片免费| 国产成人精品综合在线观看| 超碰97在线看| 成人亚洲精品| 欧美乱妇高清无乱码| 国产精品毛片一区二区在线看舒淇| 国产亚洲污的网站| 超碰影院在线观看| 经典一区二区| 国产成人午夜视频网址| 欧美高清成人| 91极品视觉盛宴| 少妇无套高潮一二三区| 三级在线观看一区二区| 欧美美乳视频网站在线观看| 成人勉费视频| 亚洲系列中文字幕| www.色国产| 国产精品网站导航| 黄色手机在线视频| 婷婷综合五月| 亚洲一区二区中文| 欧美精品videosex| 亚洲国产精品中文| 中文字幕在线看人| 国产精品热久久久久夜色精品三区| 香港日本韩国三级网站| 97国产精品| 亚洲精品免费网站| 51精品在线| 亚洲色图17p| 夜夜躁狠狠躁日日躁av| 亚洲欧洲美洲综合色网| 欧美体内she精高潮| 影音先锋亚洲一区| 欧美男人的天堂| 欧美视频第一| 久久久久久国产精品| 天堂在线资源8| 色香色香欲天天天影视综合网| 高清国产在线观看| 国产河南妇女毛片精品久久久| 拔插拔插海外华人免费| 亚洲免费专区| 成人欧美在线视频| 国产丝袜在线观看视频| 亚洲欧洲日产国产网站| 97成人在线观看| 精品国产31久久久久久| 成年人在线免费看片| 国产一本一道久久香蕉| av之家在线观看| 久久国产电影| 国产一区在线免费| 深夜视频一区二区| 久久97久久97精品免视看| 水莓100在线视频| 日韩一区二区三区高清免费看看 | 在线高清一区| 天堂√在线观看一区二区| 91精品尤物| 国产精品欧美日韩| 97超碰在线免费| 日韩一区二区av| 视频在线不卡| 日韩免费观看高清完整版 | 91精品国产综合久久久蜜臀图片 | 欧美片在线播放| 91九色丨porny丨肉丝| 国产精品色呦呦| 国产精品探花一区二区在线观看| 精品一区二区三区影院在线午夜| 欧美三级在线观看视频| 亚洲女同中文字幕| 日韩资源av在线| 理论片一区二区在线| 亚洲va欧美va在线观看| 日韩网站中文字幕| 91成人精品网站| 青草在线视频在线观看| 日韩亚洲在线观看| 国产香蕉视频在线看| 精品成人在线观看| 国内毛片毛片毛片毛片| 欧美性高清videossexo| 中文字幕精品无码一区二区| 亚洲午夜一区二区三区| 糖心vlog免费在线观看| 国产精品无码永久免费888| 中国一级特黄录像播放| 丰满放荡岳乱妇91ww| 亚洲精品乱码久久久久久动漫| 天堂久久久久va久久久久| 国产人妻777人伦精品hd| 欧美69wwwcom| 中文字幕の友人北条麻妃| 国产精品不卡| 在线视频福利一区| 色综合咪咪久久网| 亚洲精品成人久久久998| 欧美人与拘性视交免费看| 久久久久久九九九九| 好吊妞视频这里有精品 | 欧美在线激情网| 国内激情视频在线观看| 国模精品系列视频| 啊啊啊久久久| 91av网站在线播放| 中文字幕成在线观看| 欧洲成人在线观看| 日本不卡一二三| 国产成人在线视频| yw.尤物在线精品视频| 国产精品福利小视频| 日韩一区二区三区在线免费观看| 国产成人精品999| 成人日韩在线| 国产精品视频大全| 在线观看亚洲精品福利片| 成人欧美一区二区三区黑人孕妇| 成人豆花视频| 国产精品久久久久久久久久直播 | 韩国精品在线观看| 免费不卡av网站| 国产成人日日夜夜| 午夜男人的天堂| 26uuu亚洲综合色| 久久久久久久毛片| 最新国产精品久久精品| 国产黄色片在线免费观看| 亚洲宅男天堂在线观看无病毒| 国产精品18p| 日韩欧美成人精品| 亚洲一区 中文字幕| 欧美成人一区二区三区| 四季av日韩精品一区| 亚洲色图第三页| 久草中文在线观看| 欧美激情综合色综合啪啪五月| 色偷偷偷在线视频播放| 国产精品第一区| 亚洲三区欧美一区国产二区| 精品久久精品久久| 大胆日韩av| 成人国产在线看| 午夜一区在线| www.超碰97.com| bt7086福利一区国产| 亚洲av成人无码久久精品 | 中文字幕日韩高清| 影音先锋男人资源在线| 国产91精品久| 亚洲精品tv| 精品视频一区二区| 91久久久精品国产| 日本十八禁视频无遮挡| 日韩电影在线看| 91人人澡人人爽| 国产日韩欧美电影| 久久精品国产av一区二区三区| 色88888久久久久久影院野外| hs视频在线观看| 亚洲图片欧美午夜| 麻豆av在线播放| 国产精品久久一区主播| 国产一区二区三区不卡av| 综合视频免费看| 欧美亚洲专区| 精品国产免费久久久久久婷婷| 欧美国产一区在线| 国产精品999在线观看| 91精品免费观看| 成人免费在线电影| 51ⅴ精品国产91久久久久久| 亚洲精品一二三**| 亚洲一区二区三区欧美| 亚洲欧美视频| 黑人玩弄人妻一区二区三区| 一色屋精品亚洲香蕉网站| 中文字幕在线观看视频网站| 日韩欧美久久一区| av网在线观看| 国产999精品久久久| 欧美变态网站| 天堂8在线天堂资源bt| 国产一区二区三区四| 亚洲毛片亚洲毛片亚洲毛片| 色网站国产精品| 天堂资源最新在线| 国模私拍一区二区三区| 中文字幕亚洲在线观看| 亚洲成年人专区| 久久激情五月激情| 中国女人特级毛片| 色94色欧美sute亚洲13| 激情福利在线| 国产mv免费观看入口亚洲| 亚州国产精品| 欧美性大战久久久久xxx| 成人av在线一区二区| 久久精品国产亚洲AV无码麻豆| 日韩三级视频中文字幕| 最新日本在线观看| 97视频中文字幕| 欧美日韩久久| 日本少妇一级片| 一区二区三区波多野结衣在线观看| 国产精品欧美久久久久天天影视| 日韩专区中文字幕| 99久久这里有精品| 一级全黄肉体裸体全过程| 黄色小说综合网站| 日本aⅴ在线观看| 欧美日韩欧美一区二区| 里番在线观看网站| 91九色单男在线观看| 在线看片不卡| 岛国精品一区二区三区| 午夜精品一区在线观看| 亚洲av成人无码久久精品老人| 青青草精品毛片| 欧美理论电影大全| 亚洲一级片av| 一区二区在线免费观看| 少妇人妻一区二区| 国产99久久精品一区二区 夜夜躁日日躁 | 日韩三级电影网址| 第一中文字幕在线| 欧美日韩在线播放一区二区| 日韩电影网1区2区| 潘金莲一级黄色片| 欧美哺乳videos| av漫画网站在线观看| 欧美一区国产一区| 精品亚洲成a人| 久久精品无码人妻| 精品亚洲一区二区三区在线观看 | 欧美一区二区三区四区高清| 久草在线新免费首页资源站| 欧美黑人xxxxx| 韩国av一区二区三区四区| 国产午夜福利片| 国产一区二区三区高清在线观看| 亚洲综合资源| www一区二区www免费| 国产精品免费久久| 欧美一级淫片aaaaaa| 国产精品成人aaaaa网站| 你懂的网址国产 欧美| 日韩 中文字幕| 欧美一区二区三区性视频| 蜜桃麻豆影像在线观看| 一本色道久久综合亚洲二区三区 | 裸体一区二区| 久久国产高清视频| 日韩电视剧免费观看网站| 青青久久精品| 黄在线观看网站| 一区二区国产盗摄色噜噜| 福利视频在线导航| 国精产品一区二区| 极品少妇xxxx偷拍精品少妇| 国产精品7777777|