精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

91精品国产综合久久国产大片| 久久精品亚洲精品国产欧美| 美女久久久久久久| 蜜桃色一区二区三区| 男人天堂视频在线观看| 中文字幕av一区 二区| 不卡一卡2卡3卡4卡精品在| 日韩免费视频一区二区视频在线观看| 国产一区二区三区四区| 5858s免费视频成人| 国产毛片视频网站| 色影院视频在线| 成人免费毛片嘿嘿连载视频| 国产精品18久久久久久麻辣| 波兰性xxxxx极品hd| 美女视频免费精品| 91精品久久久久久久91蜜桃| 成人中文字幕在线播放| 巨大荫蒂视频欧美另类大| eeuss国产一区二区三区| 国产一区二中文字幕在线看| 日本熟妇乱子伦xxxx| 色偷偷综合网| 亚洲欧美国产一本综合首页| 91欧美一区二区三区| 中文在线中文资源| 亚洲国产精品影院| 大桥未久一区二区三区| jizz在线观看中文| 972aa.com艺术欧美| 99在线看视频| 国产ts变态重口人妖hd| 日本成人在线不卡视频| 清纯唯美亚洲激情| 国产无套在线观看| 91精品久久久久久久久久不卡| 亚洲三级黄色在线观看| 国产黑丝在线观看| 亚洲精品一区二区三区中文字幕| 欧美日本韩国一区| av无码精品一区二区三区| 激情国产在线| 亚洲国产精品尤物yw在线观看| 中文字幕在线亚洲三区| 网友自拍视频在线| 国产精品美女久久久久久久| 蜜桃传媒视频第一区入口在线看| 男人天堂综合网| 成人精品一区二区三区四区| 99r国产精品视频| 成人av免费播放| 国产一区二区三区不卡在线观看| 国产美女久久精品香蕉69| 久久久久久久久久成人| 视频一区中文字幕国产| 秋霞成人午夜鲁丝一区二区三区| 亚洲 欧美 日韩 综合| 亚洲麻豆视频| 97超级碰在线看视频免费在线看 | www.日本久久| 色婷婷成人网| 日韩一区二区免费高清| 男男受被啪到高潮自述| 成人激情自拍| 日韩av在线不卡| 久久精品一区二区免费播放| 久久99蜜桃| 一区二区三区在线播放欧美| 亚洲不卡的av| 一区二区三区毛片免费| 免费av一区二区| 国产福利久久久| 国产精品日韩久久久| 国产精品va在线| 91国产精品一区| 风流少妇一区二区| 乱一区二区三区在线播放| 成人影院免费观看| 亚洲精品成人悠悠色影视| 人体内射精一区二区三区| 成人免费直播| 91麻豆精品91久久久久久清纯 | 欧美精品亚州精品| 在线观看 中文字幕| 日韩国产在线一| 亚洲综合在线小说| 日韩私人影院| 亚洲欧美国产77777| 黄页网站在线观看视频| a成人v在线| 精品国产一区二区三区不卡 | 成人欧美一区二区三区视频网页| 久久www视频| av综合电影网站| 91精品免费在线| 给我看免费高清在线观看| 久久视频精品| 5566成人精品视频免费| 亚洲怡红院av| 91影院在线免费观看| 影音先锋亚洲视频| 两个人看的在线视频www| 欧美日韩一卡二卡| 国产精品久久不卡| 亚洲精品网址| 国产精品久久久久不卡| 亚洲av无码乱码国产精品| 国产欧美一区二区精品性| 美女黄色免费看| 国精品产品一区| 精品亚洲一区二区三区在线观看| 久久精品一区二区三区四区五区 | 日韩欧美一区二区三区免费看| 欧美精品久久久久久久久久| 夜夜躁狠狠躁日日躁av| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 国产a级一级片| 伊人精品综合| 久久躁狠狠躁夜夜爽| 国产又粗又猛又黄视频| 成人综合婷婷国产精品久久| 精品久久免费观看| 欧美黑人粗大| 亚洲男人天堂久| 日韩精品手机在线| 丰满亚洲少妇av| 手机在线视频你懂的| 素人啪啪色综合| 亚洲男人天堂久| 男女啊啊啊视频| 岛国一区二区在线观看| 无码人妻aⅴ一区二区三区日本| 成人做爰免费视频免费看| 精品视频在线导航| 国产成人精品一区二三区| 成人永久aaa| 国产午夜精品视频一区二区三区| 四虎精品在线观看| 亚洲午夜久久久影院| 中文字幕av影院| 26uuu久久天堂性欧美| 国产精品一区二区免费在线观看| 成人av综合网| 亚州精品天堂中文字幕| 色一情一乱一乱一区91av| 亚洲国产一区二区a毛片| av电影中文字幕| 激情成人综合| 精品免费视频123区| jizzjizz中国精品麻豆| 亚洲国产精品资源| 天天干天天干天天| 国产亚洲成av人在线观看导航| 日本中文字幕片| 国产精品免费99久久久| 国产精品激情av在线播放| 91在线播放网站| 制服丝袜中文字幕一区| 最新一区二区三区| 国产不卡视频在线播放| 黄色一级片在线看| 中文字幕av一区二区三区人| 日本韩国在线不卡| 尤物网在线观看| 91精品国产综合久久久久久久 | 亚洲国产裸拍裸体视频在线观看乱了中文| 成人动漫视频在线观看完整版 | 欧美日韩亚洲视频| 欧美熟妇激情一区二区三区| 裸体一区二区三区| 国产91在线亚洲| 日韩在线黄色| 国产欧美婷婷中文| 国内老司机av在线| 亚洲美女在线观看| 中国女人一级一次看片| 亚洲日本va在线观看| 老司机免费视频| 日韩vs国产vs欧美| 日韩精品一区二区在线视频 | 天天干天天操天天干天天操| 色悠久久久久综合先锋影音下载| 91国产视频在线播放| yw193.com尤物在线| 日韩一区二区免费在线观看| 在线观看亚洲欧美| 中文字幕在线观看不卡视频| 国产精品久久久久久在线观看| 久久久久99| 日韩精品福利片午夜免费观看| 亚洲va久久| 91成人免费在线观看| 午夜欧美激情| 久久成人精品视频| 国产在线视频资源| 欧美成人女星排行榜| 波多野结衣一本一道| 一区二区三区国产| 中文字幕在线观看免费高清| 国产成a人亚洲精品| 亚洲成人天堂网| 国产日本精品| 50度灰在线观看| 欧美日韩老妇| 久久国产精品高清| 久久综合给合| 国产精品一区久久| 日韩电影大全网站| 97在线看福利| 五月天激情在线| 日韩中文字幕国产精品| 日韩国产福利| 亚洲二区在线播放视频| 国产又粗又黄视频| 色噜噜狠狠一区二区三区果冻| 免费又黄又爽又色的视频| 国产精品卡一卡二| 97超碰在线资源| 99r国产精品| 中文字幕无码毛片免费看| 久久国产精品露脸对白| 精品www久久久久奶水| 99精品视频免费| 男人添女人荫蒂免费视频| 综合国产在线| 亚洲第一综合网站| 97精品视频在线看| 亚洲国产欧美不卡在线观看| 丝袜连裤袜欧美激情日韩| 国产富婆一区二区三区| 蜜桃在线一区| 亚洲一区二区三区777| 日韩黄色在线| 国产欧美精品一区二区三区介绍| 成人在线网站| 国产精品久久久久久av| 欧洲一区二区三区精品| 日韩av成人在线观看| 免费h在线看| 97人洗澡人人免费公开视频碰碰碰| 羞羞的网站在线观看| 久久福利网址导航| 在线免费观看a视频| 色哟哟精品丝袜一区二区| 欧美区二区三区| 色先锋资源久久综合| 一区二区三区福利视频| 性感美女久久精品| 日韩精品一区二区三区国语自制| 一区二区三区欧美日| 精品97人妻无码中文永久在线 | 极品久久久久久| 中文字幕综合网| 91精品一区二区三区蜜桃| 亚洲品质自拍视频| 青青草激情视频| 亚洲小说欧美激情另类| 圆产精品久久久久久久久久久| 黑人巨大精品欧美一区二区免费| 超碰中文字幕在线| 欧美在线999| 国产男男gay网站| 欧美videofree性高清杂交| 少妇又色又爽又黄的视频| 国产视频精品免费播放| 成人免费高清在线播放| 久久精品这里热有精品| 日本乱理伦在线| 欧美在线性爱视频| 国产欧美在线观看免费| 99re在线国产| 精品在线播放| 在线观看视频黄色| 亚洲人成高清| 成年人在线观看视频免费| 国产在线精品视频| 特级西西人体wwwww| 中文字幕精品三区| 欧美成人aaa片一区国产精品| 天天综合天天综合色| 伊人影院中文字幕| 欧美成人video| 精品美女视频在线观看免费软件| 精品国产一区av| bl在线肉h视频大尺度| 国产精品video| 欧一区二区三区| 欧美在线播放一区| 黄色av成人| 免费涩涩18网站入口| 大胆亚洲人体视频| 亚洲女同二女同志奶水| 性久久久久久久久| av网站在线观看免费| 国产视频精品免费播放| 自由的xxxx在线视频| 日本中文字幕成人| 国产劲爆久久| 日本视频一区在线观看| 亚洲性色视频| www.超碰97.com| 久久综合色婷婷| 免费在线黄色片| 欧美日本韩国一区| 三级国产在线观看| 欧美极品在线视频| 日韩黄色三级在线观看| 欧美中文娱乐网| 136国产福利精品导航网址| 日韩精品aaa| 中文字幕av一区二区三区高| 日本中文在线播放| 日韩一区二区免费视频| 亚乱亚乱亚洲乱妇| 日韩美女在线观看| 欧美综合精品| 无码熟妇人妻av在线电影| 精品一区二区三区在线播放视频| 男人操女人动态图| 天天综合色天天综合色h| av综合在线观看| 宅男66日本亚洲欧美视频| 625成人欧美午夜电影| 国产欧美综合精品一区二区| 欧美极品一区二区三区| 九九九九九九九九| 国产精品天干天干在观线| 免费av网站在线| 日韩高清a**址| av在线播放资源| 国产亚洲欧美一区二区 | 亚洲视频一二区| 一级爱爱免费视频| 最近2019年日本中文免费字幕 | 亚洲xxxxx| 亚洲91视频| 色网站在线视频| 亚洲精品国产a| 亚洲欧美强伦一区二区| 欧美国产日韩精品| 电影一区二区在线观看| 国产av熟女一区二区三区| 丰满放荡岳乱妇91ww| 国产一级片久久| 亚洲第一免费网站| 都市激情国产精品| 久久综合毛片| 性色一区二区| 日本污视频网站| 欧美日韩成人在线一区| 毛片在线看片| 91丝袜美腿美女视频网站| 女人香蕉久久**毛片精品| 最好看的中文字幕| 午夜欧美视频在线观看| 色在线免费视频| 国产精品免费久久久久影院| 久久婷婷蜜乳一本欲蜜臀| 韩国一区二区在线播放| 亚洲一区二区五区| 欧美日韩在线精品一区二区三区激情综| 国产999在线| 国产精品黑丝在线播放| 精品人妻人人做人人爽夜夜爽| 亚洲电影第三页| 精品无人乱码| 91久久久国产精品| 精品福利av| 国产精品理论在线| 欧美一区二区三区影视| 1024在线看片你懂得| 欧美xxxx黑人又粗又长精品| 蜜桃91丨九色丨蝌蚪91桃色| 免费人成年激情视频在线观看| 亚洲精品国产精品国产自| 国产91亚洲精品久久久| 日韩国产成人无码av毛片| 91热门视频在线观看| 国产又大又黄又爽| 97av在线影院| 国产精品毛片久久| 日本护士做爰视频| 欧美老年两性高潮| 国产h片在线观看| 一区二区三区免费看| 成人av电影在线观看| 888奇米影视| 欧日韩在线观看| 欧美jjzz| www..com.cn蕾丝视频在线观看免费版 | 久久久国产精品午夜一区ai换脸| 国产精品呻吟久久| 茄子视频成人在线| 欧美 日韩 国产 一区| 亚洲成人网在线播放| 日韩欧美国产电影| 欧美暴力调教| 人妻久久久一区二区三区| 1区2区3区欧美| 黄色在线观看网|