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

SpringSecurity系列之請求防火墻默認(rèn)已開啟

安全 應(yīng)用安全
各種各樣的 Web 攻擊每天都在發(fā)生,什么固定會(huì)話攻擊、csrf 攻擊等等,如果不了解這些攻擊,那么做出來的系統(tǒng)肯定也不能防御這些攻擊。

[[400681]]

之前有小伙伴表示,看 Spring Security 這么麻煩,不如自己寫一個(gè) Filter 攔截請求,簡單實(shí)用。

自己寫當(dāng)然也可以實(shí)現(xiàn),但是大部分情況下,大家都不是專業(yè)的 Web 安全工程師,所以考慮問題也不過就是認(rèn)證和授權(quán),這兩個(gè)問題處理好了,似乎系統(tǒng)就很安全了。

其實(shí)不是這樣的!

各種各樣的 Web 攻擊每天都在發(fā)生,什么固定會(huì)話攻擊、csrf 攻擊等等,如果不了解這些攻擊,那么做出來的系統(tǒng)肯定也不能防御這些攻擊。

使用 Spring Security 的好處就是,即使不了解這些攻擊,也不用擔(dān)心這些攻擊,因?yàn)?Spring Security 已經(jīng)幫你做好防御工作了。

我們常說相比于 Shiro,Spring Security 更加重量級(jí),重量級(jí)有重量級(jí)的好處,比如功能全,安全管理更加完備。用了 Spring Security,你都不知道自己的系統(tǒng)有多安全!

今天我就來和大家聊一聊 Spring Security 中自帶的防火墻機(jī)制。

好了,不廢話了,我們來看文章。

1.HttpFirewall

在 Spring Security 中提供了一個(gè) HttpFirewall,看名字就知道這是一個(gè)請求防火墻,它可以自動(dòng)處理掉一些非法請求。

HttpFirewall 目前一共有兩個(gè)實(shí)現(xiàn)類:

一個(gè)是嚴(yán)格模式的防火墻設(shè)置,還有一個(gè)默認(rèn)防火墻設(shè)置。

DefaultHttpFirewall 的限制相對于 StrictHttpFirewall 要寬松一些,當(dāng)然也意味著安全性不如 StrictHttpFirewall。

Spring Security 中默認(rèn)使用的是 StrictHttpFirewall。

2.防護(hù)措施

那么 StrictHttpFirewall 都是從哪些方面來保護(hù)我們的應(yīng)用呢?我們來挨個(gè)看下。

2.1 只允許白名單中的方法

首先,對于請求的方法,只允許白名單中的方法,也就是說,不是所有的 HTTP 請求方法都可以執(zhí)行。

這點(diǎn)我們可以從 StrictHttpFirewall 的源碼中看出來:

  1. public class StrictHttpFirewall implements HttpFirewall { 
  2.  private Set<String> allowedHttpMethods = createDefaultAllowedHttpMethods(); 
  3.  private static Set<String> createDefaultAllowedHttpMethods() { 
  4.   Set<String> result = new HashSet<>(); 
  5.   result.add(HttpMethod.DELETE.name()); 
  6.   result.add(HttpMethod.GET.name()); 
  7.   result.add(HttpMethod.HEAD.name()); 
  8.   result.add(HttpMethod.OPTIONS.name()); 
  9.   result.add(HttpMethod.PATCH.name()); 
  10.   result.add(HttpMethod.POST.name()); 
  11.   result.add(HttpMethod.PUT.name()); 
  12.   return result; 
  13.  } 
  14.  private void rejectForbiddenHttpMethod(HttpServletRequest request) { 
  15.   if (this.allowedHttpMethods == ALLOW_ANY_HTTP_METHOD) { 
  16.    return
  17.   } 
  18.   if (!this.allowedHttpMethods.contains(request.getMethod())) { 
  19.    throw new RequestRejectedException("The request was rejected because the HTTP method \"" + 
  20.      request.getMethod() + 
  21.      "\" was not included within the whitelist " + 
  22.      this.allowedHttpMethods); 
  23.   } 
  24.  } 

從這段代碼中我們看出來,你的 HTTP 請求方法必須是 DELETE、GET、HEAD、OPTIONS、PATCH、POST 以及 PUT 中的一個(gè),請求才能發(fā)送成功,否則的話,就會(huì)拋出 RequestRejectedException 異常。

那如果你想發(fā)送其他 HTTP 請求方法,例如 TRACE ,該怎么辦呢?我們只需要自己重新提供一個(gè) StrictHttpFirewall 實(shí)例即可,如下:

  1. @Bean 
  2. HttpFirewall httpFirewall() { 
  3.     StrictHttpFirewall firewall = new StrictHttpFirewall(); 
  4.     firewall.setUnsafeAllowAnyHttpMethod(true); 
  5.     return firewall; 

其中,setUnsafeAllowAnyHttpMethod 方法表示不做 HTTP 請求方法校驗(yàn),也就是什么方法都可以過。或者也可以通過 setAllowedHttpMethods 方法來重新定義可以通過的方法。

2.2 請求地址不能有分號(hào)

不知掉大家有沒有試過,如果你使用了 Spring Security,請求地址是不能有 ; 的,如果請求地址有 ; ,就會(huì)自動(dòng)跳轉(zhuǎn)到如下頁面:

可以看到,頁面的提示中已經(jīng)說了,因?yàn)槟愕恼埱蟮刂分邪?;,所以請求失敗。

什么時(shí)候請求地址中會(huì)包含 ; 呢?不知道小伙伴們在使用 Shiro 的時(shí)候,有沒有注意到,如果你禁用了 Cookie,那么 jsessionid 就會(huì)出現(xiàn)在地址欄里,像下面這樣:

  1. http://localhost:8080/hello;jsessionid=xx 

這種傳遞 jsessionid 的方式實(shí)際上是非常不安全的(松哥后面的文章會(huì)和大家細(xì)聊這個(gè)問題),所以在 Spring Security 中,這種傳參方式默認(rèn)就禁用了。

當(dāng)然,如果你希望地址欄能夠被允許出現(xiàn) ; ,那么可以按照如下方式設(shè)置:

  1. @Bean 
  2. HttpFirewall httpFirewall() { 
  3.     StrictHttpFirewall firewall = new StrictHttpFirewall(); 
  4.     firewall.setAllowSemicolon(true); 
  5.     return firewall; 

設(shè)置完成之后,再去訪問相同的接口,可以看到,此時(shí)雖然還是報(bào)錯(cuò),但是錯(cuò)誤是 404 了,而不是一開始那個(gè)不允許 ; 的錯(cuò)了。

注意,在 URL 地址中,; 編碼之后是 %3b 或者 %3B,所以地址中同樣不能出現(xiàn) %3b 或者 %3B

題外話

有的小伙伴可能不知道或者沒用過,Spring3.2 開始,帶來了一種全新的傳參方式 @MatrixVariable。

@MatrixVariable 是 Spring3.2 中帶來的功能,這種方式拓展了請求參數(shù)的傳遞格式,使得參數(shù)之間可以用 ; 隔開,這種傳參方式真是哪壺不開提哪壺。因?yàn)?Spring Security 默認(rèn)就是禁止這種傳參方式,所以一般情況下,如果你需要使用 @MatrixVariable 來標(biāo)記參數(shù),就得在 Spring Security 中額外放行。

接下來我通過一個(gè)簡單的例子來和大家演示一下 @MatrixVariable 的用法。

我們新建一個(gè) /hello 方法:

  1. @RequestMapping(value = "/hello/{id}"
  2. public void hello(@PathVariable Integer id,@MatrixVariable String name) { 
  3.     System.out.println("id = " + id); 
  4.     System.out.println("name = " + name); 

另外我們還需要配置一下 SpringMVC,使 ; 不要被自動(dòng)移除了:

  1. @Configuration 
  2. public class WebMvcConfig extends WebMvcConfigurationSupport { 
  3.     @Override 
  4.     protected void configurePathMatch(PathMatchConfigurer configurer) { 
  5.         UrlPathHelper urlPathHelper = new UrlPathHelper(); 
  6.         urlPathHelper.setRemoveSemicolonContent(false); 
  7.         configurer.setUrlPathHelper(urlPathHelper); 
  8.     } 

然后啟動(dòng)項(xiàng)目(注意,Spring Security 中也已經(jīng)配置了允許 URL 中存在 ;),瀏覽器發(fā)送如下請求:

  1. http://localhost:8080/hello/123;name=javaboy 

控制臺(tái)打印信息如下:

  1. id = 123 
  2. name = javaboy 

可以看到,@MatrixVariable 注解已經(jīng)生效了。

2.3 必須是標(biāo)準(zhǔn)化 URL

請求地址必須是標(biāo)準(zhǔn)化 URL。

什么是標(biāo)準(zhǔn)化 URL?標(biāo)準(zhǔn)化 URL 主要從四個(gè)方面來判斷,我們來看下源碼:

StrictHttpFirewall#isNormalized:

  1. private static boolean isNormalized(HttpServletRequest request) { 
  2.  if (!isNormalized(request.getRequestURI())) { 
  3.   return false
  4.  } 
  5.  if (!isNormalized(request.getContextPath())) { 
  6.   return false
  7.  } 
  8.  if (!isNormalized(request.getServletPath())) { 
  9.   return false
  10.  } 
  11.  if (!isNormalized(request.getPathInfo())) { 
  12.   return false
  13.  } 
  14.  return true

getRequestURI 就是獲取請求協(xié)議之外的字符;getContextPath 是獲取上下文路徑,相當(dāng)于是 project 的名字;getServletPath 這個(gè)就是請求的 servlet 路徑,getPathInfo 則是除過 contextPath 和 servletPath 之后剩余的部分。

這四種路徑中,都不能包含如下字符串:

  1. "./""/../" or "/." 

2.4 必須是可打印的 ASCII 字符

如果請求地址中包含不可打印的 ASCII 字符,請求則會(huì)被拒絕,我們可以從源碼中看出端倪:

StrictHttpFirewall#containsOnlyPrintableAsciiCharacters

  1. private static boolean containsOnlyPrintableAsciiCharacters(String uri) { 
  2.  int length = uri.length(); 
  3.  for (int i = 0; i < length; i++) { 
  4.   char c = uri.charAt(i); 
  5.   if (c < '\u0020' || c > '\u007e') { 
  6.    return false
  7.   } 
  8.  } 
  9.  return true

2.5 雙斜杠不被允許

如果請求地址中出現(xiàn)雙斜杠,這個(gè)請求也將被拒絕。雙斜杠 // 使用 URL 地址編碼之后,是 %2F%2F,其中 F 大小寫無所謂,所以請求地址中也能不出現(xiàn) "%2f%2f", "%2f%2F", "%2F%2f", "%2F%2F"。

如果你希望請求地址中可以出現(xiàn) // ,可以按照如下方式配置:

  1. @Bean 
  2. HttpFirewall httpFirewall() { 
  3.     StrictHttpFirewall firewall = new StrictHttpFirewall(); 
  4.     firewall.setAllowUrlEncodedDoubleSlash(true); 
  5.     return firewall; 

2.6 % 不被允許

如果請求地址中出現(xiàn) %,這個(gè)請求也將被拒絕。URL 編碼后的 % 是 %25,所以 %25 也不能出現(xiàn)在 URL 地址中。

如果希望請求地址中可以出現(xiàn) %,可以按照如下方式修改:

  1. @Bean 
  2. HttpFirewall httpFirewall() { 
  3.     StrictHttpFirewall firewall = new StrictHttpFirewall(); 
  4.     firewall.setAllowUrlEncodedPercent(true); 
  5.     return firewall; 

2.7 正反斜杠不被允許

如果請求地址中包含斜杠編碼后的字符 %2F 或者 %2f ,則請求將被拒絕。

如果請求地址中包含反斜杠 \ 或者反斜杠編碼后的字符 %5C 或者 %5c ,則請求將被拒絕。

如果希望去掉如上兩條限制,可以按照如下方式來配置:

  1. @Bean 
  2. HttpFirewall httpFirewall() { 
  3.     StrictHttpFirewall firewall = new StrictHttpFirewall(); 
  4.     firewall.setAllowBackSlash(true); 
  5.     firewall.setAllowUrlEncodedSlash(true); 
  6.     return firewall; 

2.8 . 不被允許

如果請求地址中存在 . 編碼之后的字符 %2e、%2E,則請求將被拒絕。

如需支持,按照如下方式進(jìn)行配置:

  1. @Bean 
  2. HttpFirewall httpFirewall() { 
  3.     StrictHttpFirewall firewall = new StrictHttpFirewall(); 
  4.     firewall.setAllowUrlEncodedPeriod(true); 
  5.     return firewall; 

2.9 小結(jié)

需要強(qiáng)調(diào)一點(diǎn),上面所說的這些限制,都是針對請求的 requestURI 進(jìn)行的限制,而不是針對請求參數(shù)。例如你的請求格式是:

  1. http://localhost:8080/hello?param=aa%2ebb 

那么 2.7 小節(jié)說的限制和你沒關(guān)系。

這個(gè)大家從 StrictHttpFirewall 源碼中很容易看到:

  1. public class StrictHttpFirewall implements HttpFirewall { 
  2.  @Override 
  3.  public FirewalledRequest getFirewalledRequest(HttpServletRequest request) throws RequestRejectedException { 
  4.   rejectForbiddenHttpMethod(request); 
  5.   rejectedBlacklistedUrls(request); 
  6.   rejectedUntrustedHosts(request); 
  7.  
  8.   if (!isNormalized(request)) { 
  9.    throw new RequestRejectedException("The request was rejected because the URL was not normalized."); 
  10.   } 
  11.  
  12.   String requestUri = request.getRequestURI(); 
  13.   if (!containsOnlyPrintableAsciiCharacters(requestUri)) { 
  14.    throw new RequestRejectedException("The requestURI was rejected because it can only contain printable ASCII characters."); 
  15.   } 
  16.   return new FirewalledRequest(request) { 
  17.    @Override 
  18.    public void reset() { 
  19.    } 
  20.   }; 
  21.  } 
  22.  private void rejectedBlacklistedUrls(HttpServletRequest request) { 
  23.   for (String forbidden : this.encodedUrlBlacklist) { 
  24.    if (encodedUrlContains(request, forbidden)) { 
  25.     throw new RequestRejectedException("The request was rejected because the URL contained a potentially malicious String \"" + forbidden + "\""); 
  26.    } 
  27.   } 
  28.   for (String forbidden : this.decodedUrlBlacklist) { 
  29.    if (decodedUrlContains(request, forbidden)) { 
  30.     throw new RequestRejectedException("The request was rejected because the URL contained a potentially malicious String \"" + forbidden + "\""); 
  31.    } 
  32.   } 
  33.  } 
  34.  private static boolean encodedUrlContains(HttpServletRequest request, String value) { 
  35.   if (valueContains(request.getContextPath(), value)) { 
  36.    return true
  37.   } 
  38.   return valueContains(request.getRequestURI(), value); 
  39.  } 
  40.  
  41.  private static boolean decodedUrlContains(HttpServletRequest request, String value) { 
  42.   if (valueContains(request.getServletPath(), value)) { 
  43.    return true
  44.   } 
  45.   if (valueContains(request.getPathInfo(), value)) { 
  46.    return true
  47.   } 
  48.   return false
  49.  } 
  50.  private static boolean valueContains(String value, String contains) { 
  51.   return value != null && value.contains(contains); 
  52.  } 

rejectedBlacklistedUrls 方法就是校驗(yàn) URL 的,該方法邏輯很簡單,我就不再贅述了。

注意:雖然我們可以手動(dòng)修改 Spring Security 中的這些限制,但是松哥不建議大家做任何修改,每一條限制都有它的原由,每放開一個(gè)限制,就會(huì)帶來未知的安全風(fēng)險(xiǎn)。后面松哥在和大家分享 Web 中的安全攻擊時(shí),也會(huì)再次提到這些限制的作用,請小伙伴們保持關(guān)注哦。

3.總結(jié)

沒想到吧?Spring Security 竟然為你做了這么多事情!正好應(yīng)了那句雞湯:你所謂的歲月靜好,不過是有人在替你負(fù)重前行。

責(zé)任編輯:武曉燕 來源: 江南一點(diǎn)雨
相關(guān)推薦

2011-04-28 19:51:03

2011-03-15 09:10:42

Linux防火墻Iptables

2010-07-01 10:29:08

2010-12-21 18:04:26

2010-12-08 09:29:27

下一代防火墻

2010-09-14 13:08:52

2011-02-15 10:44:27

2010-05-24 17:49:56

2011-06-27 13:31:21

2021-06-25 18:31:37

云防火墻

2011-08-18 10:22:44

2011-06-29 10:29:55

2013-07-04 10:16:24

2011-03-25 11:18:51

2010-09-09 17:22:36

2009-09-24 13:53:53

2014-02-27 13:46:32

華為防火墻USG9580

2013-09-11 20:09:08

下一代防火墻NGFW

2010-09-29 11:01:46

2011-08-08 22:10:17

點(diǎn)贊
收藏

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

亚洲一级片在线看| 亚洲男女一区二区三区| 国产精品大片wwwwww| 永久免费毛片在线观看| av日韩一区| 亚洲第一综合色| 久久精品magnetxturnbtih| 欧美一级淫片免费视频黄| 91视频综合| 欧美精品一区男女天堂| 男女无套免费视频网站动漫| 91网址在线观看| 波多野结衣中文字幕一区二区三区| 国产精品999999| 免费在线观看黄视频| 免费不卡中文字幕在线| 欧美一区二区黄| 欧美少妇性生活视频| 成人免费看片| 久久久不卡影院| 91久久精品国产91久久性色tv | 色欲av无码一区二区人妻| aaa日本高清在线播放免费观看| 国产高清在线精品| 国产精品视频一| 日韩 欧美 亚洲| 日本不卡高清| 日韩成人av网| 日本一二三区在线| 欧美不卡高清一区二区三区| 亚洲午夜一区二区三区| 在线天堂一区av电影| 男人天堂网在线观看| 国产v综合v亚洲欧| 91免费精品国偷自产在线| 中文av免费观看| 久久精品女人天堂| 欧美一区二区大胆人体摄影专业网站| 538精品在线视频| 欧美xxxx中国| 亚洲最大中文字幕| 国产jk精品白丝av在线观看| 天堂资源在线亚洲| 亚洲精品二三区| 久久久无码人妻精品无码| 亚洲免费一区| 欧美三级在线视频| 国产小视频精品| 亚洲成人看片| 色999日韩国产欧美一区二区| 丝袜老师办公室里做好紧好爽| 免费电影视频在线看| 亚洲黄一区二区三区| 亚洲精品永久www嫩草| 国产高清免费在线播放| 国产欧美精品一区| 视频一区亚洲| 欧美白人做受xxxx视频| 91美女片黄在线观看| 久久精品美女| 色资源在线观看| 91麻豆国产自产在线观看| 精品久久久久久乱码天堂| 人成网站在线观看| 99视频热这里只有精品免费| 国产综合 伊人色| 亚洲 欧美 激情 另类| 99riav一区二区三区| 免费看污久久久| 精品视频二区| 国产精品电影一区二区| 手机在线视频你懂的| 日韩精品亚洲人成在线观看| 亚洲国产乱码最新视频| 精品少妇一区二区三区在线| 亚洲精品福利电影| 欧美三级电影一区| 久久久久久久久久一区二区| 国产精品一区二区美女视频免费看| 91精品中文字幕一区二区三区| 国产成人精品综合久久久久99 | yellow91字幕网在线| 一二三四社区欧美黄| 九九爱精品视频| 三上悠亚一区二区| 6080国产精品一区二区| 熟妇女人妻丰满少妇中文字幕| 国产主播性色av福利精品一区| 日韩精品黄色网| 老司机精品免费视频| 欧美日韩爆操| 日韩女在线观看| 97久久人国产精品婷婷| 成+人+亚洲+综合天堂| 欧美一区1区三区3区公司| 麻豆tv入口在线看| 午夜精品免费在线| 中文字幕亚洲乱码| 韩国女主播一区二区三区| 亚洲男人av在线| www.99re6| 在线视频精品| 国产综合色香蕉精品| 午夜视频在线播放| 成人欧美一区二区三区在线播放| 131美女爱做视频| 未满十八勿进黄网站一区不卡| 欧美精品一区二区三区视频| 日韩视频在线观看免费视频| 国内在线观看一区二区三区| 国产精品高潮呻吟视频| 黄色av免费观看| 国产精品国产三级国产aⅴ入口 | 99久久一区三区四区免费| 可以在线观看的av网站| 亚洲精品视频在线看| 亚洲成熟丰满熟妇高潮xxxxx| 三级欧美日韩| 色偷偷88888欧美精品久久久 | 91精品久久久久久综合乱菊 | 99热这里都是精品| 中国老女人av| 成人h在线观看| 日韩高清有码在线| 免费在线观看亚洲| 精品一二三四区| 日韩av一区二区三区在线| 91超碰在线播放| 91精品婷婷国产综合久久 | 日韩理论片中文av| caoporn超碰97| 欧美重口另类| 国外成人在线直播| 国产激情无套内精对白视频| 国产精品狼人久久影院观看方式| 欧美三级午夜理伦三级| 极品尤物一区| 欧美成在线视频| 国产又爽又黄又嫩又猛又粗| 国产精品网站在线播放| 18禁男女爽爽爽午夜网站免费| 国产另类在线| 欧美精品电影免费在线观看| a视频免费在线观看| 成人欧美一区二区三区| 婷婷激情四射五月天| 精品freesex老太交| 欧美一级免费看| 亚洲三区在线播放| 精品国产91久久久久久老师| 黄色免费看视频| 国产欧美三级| 蜜桃91精品入口| 成人福利视频| 亚洲人精品午夜在线观看| 青青视频在线免费观看| 久久久亚洲精品石原莉奈| 国产1区2区在线| 欧美老女人另类| 91精品国产综合久久香蕉922| 黄网站视频在线观看| 欧美绝品在线观看成人午夜影视| 国产视频精品免费| 国产在线看一区| www.亚洲成人网| 国产精品chinese在线观看| 久久久亚洲天堂| 天堂av在线免费观看| 色婷婷久久久亚洲一区二区三区| 日韩一级av毛片| 麻豆一区二区99久久久久| 在线免费观看成人| 欧美日韩午夜电影网| 欧美激情一级精品国产| 亚洲 小说区 图片区 都市| 色女孩综合影院| 亚洲女人毛茸茸高潮| 九一久久久久久| 免费cad大片在线观看| 农村少妇一区二区三区四区五区| 日韩美女视频免费看| 3d成人动漫在线| 精品欧美一区二区在线观看| 五月天综合激情| 国产精品白丝在线| 四虎永久免费观看| 日韩国产在线观看一区| 日韩人妻精品一区二区三区| 超碰地址久久| 国产精品wwwwww| 在线电影福利片| 亚洲欧美精品在线| 99久久亚洲精品日本无码| 无码av中文一区二区三区桃花岛| 手机看片日韩av| 成人深夜在线观看| 日本在线观看免费视频| 激情欧美一区| 亚洲一区bb| 欧美1区2区3区4区| 91在线免费网站| 国产伦精品一区二区三区视频金莲| 精品国偷自产在线| 亚洲aaa在线观看| 91精品国产综合久久久久久久 | 天堂中文av在线| 日韩一区二区在线| 精品国产免费久久久久久尖叫| www.国产精品| 久久琪琪电影院| 五月天婷婷在线视频| 亚洲黄一区二区| 99久久精品国产一区色| 色94色欧美sute亚洲线路二| 精品午夜福利在线观看| 中文字幕一区二区三区蜜月 | 午夜精品久久久内射近拍高清| 91久久久精品国产| 欧美专区一二三| 成人av综合网| 91在线视频精品| 欧美韩国亚洲| 欧美亚洲国产另类| 麻豆福利在线观看| 久久视频免费观看| 777电影在线观看| 亚洲性av在线| 日夜干在线视频| 亚洲国产97在线精品一区| 99免费在线视频| 欧美日本在线视频| 狠狠躁夜夜躁人人爽视频| 黄色一区二区在线观看| 精品在线视频观看| 亚洲女爱视频在线| 久久99久久99精品免费看小说| 国产精品区一区二区三区| 实拍女处破www免费看| 99re成人精品视频| 小毛片在线观看| www.欧美色图| 中文字幕a在线观看| 成人精品小蝌蚪| 日本久久久久久久久久| 国产盗摄视频一区二区三区| 91人妻一区二区三区| 黑人精品欧美一区二区蜜桃| 最新免费av网址| 韩国女主播成人在线观看| 亚洲小视频网站| 精品一区在线看| 涩多多在线观看| 国产麻豆午夜三级精品| 久久无码人妻一区二区三区| 国产91精品露脸国语对白| 亚洲无人区码一码二码三码| 成人高清在线视频| 噜噜噜在线视频| 久久久久一区二区三区四区| 无码少妇精品一区二区免费动态| 日本一区二区三区四区| 五月婷婷六月香| 亚洲欧美区自拍先锋| 久久久久久蜜桃| 亚洲成人激情综合网| 亚洲天堂视频网站| 欧美视频精品在线| 国产人妻精品一区二区三| 日韩精品一区二区三区蜜臀| 老熟妇高潮一区二区高清视频| 亚洲黄色片网站| а天堂8中文最新版在线官网| 播播国产欧美激情| 欧美韩日亚洲| 日韩免费在线免费观看| 国产成人a视频高清在线观看| 亚洲va久久久噜噜噜| 国产成人福利av| 奇米影视首页 狠狠色丁香婷婷久久综合| 精品一区二区三| 精品国产无码在线| 亚洲经典三级| 中文字幕av专区| 国产精品亚洲视频| 亚洲黄色在线网站| 综合分类小说区另类春色亚洲小说欧美| 久草视频免费在线| 日本精品视频一区二区| 99热这里只有精品99| 亚洲精品久久久久久久久久久 | 精品少妇一区| 日韩欧美视频一区二区| 99精品小视频| 国产美女无遮挡网站| 久久er精品视频| 日韩www视频| 中文字幕在线不卡一区| 亚洲国产精品午夜在线观看| 欧美亚洲一区二区在线观看| 黄色av小说在线观看| 日韩在线视频观看| 日本在线播放一二三区| 国产欧美精品一区二区三区-老狼 国产欧美精品一区二区三区介绍 国产欧美精品一区二区 | 日韩中文不卡| 最新日韩在线| 一二三av在线| 国产欧美一区视频| 精品91久久久| 日韩一区二区三| 浮生影视网在线观看免费| 久久99视频免费| 欧美激情三区| 日本一区美女| 99精品视频免费全部在线| 一区二区三区四区毛片| 久久久久久一级片| 国产精品99精品无码视| 欧美军同video69gay| 国产福利在线看| 欧美亚洲第一页| 国产精品色在线网站| 欧美 日韩 国产 在线观看| 日韩二区三区四区| 亚洲天堂网一区二区| 亚洲一区二区三区不卡国产欧美| 国产裸体永久免费无遮挡| 一区二区三区视频观看| 国偷自产一区二区免费视频| 国产一区福利视频| 欧美三级午夜理伦三级中文幕| а 天堂 在线| 国产精品久线在线观看| 日韩欧美国产另类| 亚洲欧美日韩区| 中文字幕av一区二区三区佐山爱| 精品国产日本| 国产视频一区三区| 久久久久久久无码| 午夜激情一区二区三区| 成人午夜视频一区二区播放| 九九热精品视频| 日韩欧美中文字幕一区二区三区| 99精品一区二区三区的区别| 久久国产剧场电影| 日韩国产第一页| 717成人午夜免费福利电影| 在线激情小视频| 国产日韩精品电影| 97精品一区| 国产精品久久久久久久av福利| 中文字幕在线播放不卡一区| 一本色道久久综合精品婷婷| 综合网中文字幕| 国产精品亚洲欧美日韩一区在线| 神马午夜伦理影院| 国产高清精品网站| 国产乡下妇女做爰毛片| 亚洲国产三级网| 成人教育av| 色大师av一区二区三区| 卡一卡二国产精品| 国产探花在线免费观看| 日韩欧美国产三级| www.youjizz.com在线| 久久涩涩网站| 男男成人高潮片免费网站| 美国精品一区二区| 91精品国产品国语在线不卡| www.综合网.com| 欧美xxxx黑人又粗又长密月| 农民人伦一区二区三区| 91美女在线视频| 亚洲无码精品在线播放| 欧美黄色www| 猛男gaygay欧美视频| 亚洲视频第二页| 亚洲在线视频免费观看| 深夜影院在线观看| 国产精品一二三在线| 欧美日韩精品一本二本三本| av无码一区二区三区| 在线区一区二视频| 在线看三级电影| 免费国产一区二区| 国产一区二区三区av电影| 日本午夜小视频| 在线观看国产欧美| 免费一级欧美片在线观看网站| 国产3p露脸普通话对白| 国产精品欧美一区喷水| 欧美一级淫片免费视频魅影视频| 日韩av片免费在线观看| 伊人情人综合网| 波多野结衣av在线免费观看| 欧美男同性恋视频网站| 免费看男女www网站入口在线| 一区二区三区精品国产| 99久久er热在这里只有精品15 | 二区三区四区视频| 日韩av在线一区|