日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

HTTP安全头部对jsp页面不生效

發布時間:2024/1/11 windows 42 coder
生活随笔 收集整理的這篇文章主要介紹了 HTTP安全头部对jsp页面不生效 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文于2016年4月底完成,發布在個人博客網站上。
考慮個人博客因某種原因無法修復,于是在博客園安家,之前發布的文章逐步搬遷過來。


詭異的問題

AppScan掃描報告中提示,Web服務器返回jscsspngjsp頁面的HTTP響應中缺少安全頭部。HTTP的安全頭部包括HTTP Strict Transport SecurityX-Frame-OptionsX-Content-Type-OptionsX-XSS-ProtectionContent-Security-Policy

網上資料很多,于是參照資料修改$CATALINA_BASE/conf/web.xml,增加相關配置,如下是樣例:

<filter>
    <filter-name>httpHeaderSecurity</filter-name>
    <filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class>
    <async-supported>true</async-supported>
</filter>
<filter-mapping>
    <filter-name>httpHeaderSecurity</filter-name>
    <url-pattern>/*</url-pattern>  <!-- 注意:Jackie遇到的問題與httpHeaderSecurity的配置相關。 -->
</filter-mapping>

本以為這樣修改之后問題就解決了,所以也沒用瀏覽器的調試面板去仔細檢查Web服務器響應數據的HTTP頭部;但天不遂人愿,事情并沒有如預想的方向發展。

在稍后的一份AppScan掃描報告中,居然又看到了Web服務器返回的HTTP響應缺少安全頭部的提示。不過這次稍有區別,報告中只提示jsp頁面的訪問存在問題。于是使用瀏覽器的調試面板仔細查看Web服務器返回的響應信息,發現Web服務器返回jscsspng時,在HTTP響應中增加了必要的頭部,如下所示:

Cache-Control:private
Content-Type:image/png
Date:Sun, 10 Apr 2016 13:16:26 GMT
Expires:Thu, 01 Jan 1970 08:00:00 CST
Server:Apache-Coyote/1.1
Strict-Transport-Security:max-age=0
Transfer-Encoding:chunked
X-Content-Type-Options:nosniff
X-Frame-Options:DENY
X-XSS-Protection:1; mode=block

這說明安全頭部的配置生效了,但詭異的是jsp頁面的響應中并沒有相應增加安全頭部,如下所示,導致AppScan報告中Web服務器返回的HTTP響應缺少安全頭部問題依然存在。

Content-Type:text/html;charset=UTF-8
Date:Tue, 24 May 2016 16:18:30 GMT
Server:Apache-Coyote/1.1
Transfer-Encoding:chunked

同部門內有一個A項目,這個項目有10年開發、維護的歷史,歷經公司安全紅線多輪整改,項目成員積累了相當豐富的斗爭經驗,在處理AppScan掃描報告上也有相當的經驗。于是就安全頭部的整改方法咨詢A項目的MDE,希望可以獲得關鍵信息。

A項目的MDE為人很爽快,介紹了他們的經驗,總結下有如下幾點:

  • A項目在整改AppScan掃描問題時,確實遇到過類似的問題,解決的方法是給響應增加安全頭部。
  • 但A項目使用了自定義的過濾器來給HTTP響應增加安全頭部,并沒有使用Apache Tomcat官方提供的過濾器,原因是A項目使用的Tomcat版本太低,出于業務原因暫不好升級。
  • A項目增加自定義的過濾器之后,“Web服務器返回的HTTP響應缺少安全頭部”就從AppScan掃描報告中消失了。

但壞消息是A項目團隊沒有遇到過前述的問題,自然沒有處理類似問題的經驗可供參考。這就詭異了,為什么Web服務器對jsp的響應沒有增加安全頭部呢?

分析過程

當前的項目使用了Spring+Struts2+iBatis,從技術組合上可以說非常傳統,但在技術應用上存在很大不同。為了描述方便,下面把存在問題的項目稱為B項目。

檢查項目配置

重溫項目的配置情況。

Struts2的配置

Struts2在web.xml中的配置如下:

<filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

簡化后的struts.xml配置文件,內容如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="true" />
    <constant name="struts.action.extension" value="jsp,action"/> <!-- 注意這里 -->
    <constant name="struts.ui.theme" value="java"></constant>
    <constant name="struts.objectFactory" value="spring" />
    <constant name="struts.i18n.encoding" value="UTF-8" />
    <package name="default" namespace="/" extends="struts-default">

        <interceptors>
            <interceptor-stack name="myStack">  
                <interceptor-ref name="basicStack"></interceptor-ref>  
            </interceptor-stack> 
        </interceptors>  
  
        <default-interceptor-ref name="myStack" /> 
        
        <global-results>
            <result name="error">/error.jsp</result>
        </global-results>

        <global-exception-mappings>
            <exception-mapping exception="java.lang.Exception" result="error"/>
        </global-exception-mappings>

        <action name="*" class="MainAction">
            <result name="success">{1}.jsp</result>
        </action>
    </package>
</struts>

通用Action類,簡化后的MainAction代碼如下

import com.opensymphony.xwork2.ActionSupport;

public class MainAction extends ActionSupport {
	private static final long serialVersionUID = 928135783255954591L;
	@Override
	public String execute() throws Exception {
		return ActionSupport.SUCCESS;
	}
}

粗看下來,似乎沒有什么不妥的地方。

安全頭部的配置

依照文檔,重新檢查$CATALINA_BASE/conf/web.xml文件中的配置,如下:

<filter>
    <filter-name>httpHeaderSecurity</filter-name>
    <filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class>
    <async-supported>true</async-supported>
</filter>
<filter-mapping>
    <filter-name>httpHeaderSecurity</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

沒看出來什么特別的地方,而官方文檔對HttpHeaderSecurityFilter的使用也沒有特別的說明,那是不是HttpHeaderSecurityFilter的實現代碼中有玄機?

找到HttpHeaderSecurityFilter類的代碼,如下是增加頭部的實現。

@Override
public void doFilter(ServletRequest request, ServletResponse response,
        FilterChain chain) throws IOException, ServletException {

    if (response instanceof HttpServletResponse) {
        HttpServletResponse httpResponse = (HttpServletResponse) response;

        if (response.isCommitted()) {
            throw new ServletException(sm.getString("httpHeaderSecurityFilter.committed"));
        }

        // HSTS
        if (hstsEnabled && request.isSecure()) {
            httpResponse.setHeader(HSTS_HEADER_NAME, hstsHeaderValue);
        }

        // anti click-jacking
        if (antiClickJackingEnabled) {
            httpResponse.setHeader(ANTI_CLICK_JACKING_HEADER_NAME, antiClickJackingHeaderValue);
        }

        // Block content type sniffing
        if (blockContentTypeSniffingEnabled) {
            httpResponse.setHeader(BLOCK_CONTENT_TYPE_SNIFFING_HEADER_NAME,
                    BLOCK_CONTENT_TYPE_SNIFFING_HEADER_VALUE);
        }

        // cross-site scripting filter protection
        if (xssProtectionEnabled) {
            httpResponse.setHeader(XSS_PROTECTION_HEADER_NAME, XSS_PROTECTION_HEADER_VALUE);
        }
    }

    chain.doFilter(request, response);
}

代碼很簡單,沒發現對jsp的訪問有做過什么特別的處理。

對頁面訪問的影響

依據前述配置,頁面訪問流程如下所示:

  • 瀏覽器請求頁面時,Web服務端的Struts2攔截頁面訪問請求;
  • Web服務端的通用Action接收請求,并將請求重定向至對應的jsp頁面;
  • 由于沒有使用Action向頁面傳遞數據,所以開發人員需要在頁面上使用ajax方式向Web服務端請求業務數據;

進一步分析

仔細回想了A項目的特點,以及與B項目的差異點。

A項目也使用了Spring+Struts的組合,但和B項目有個顯著不同點,B項目是Struts2的重度使用用戶,項目中的jsp全部使用action做了包裝,用戶在地址欄看不到jsp結尾的URL。

而B項目雖然使用了Spring+Struts的組合,但實際上僅僅使用了Struts2提供的國際化和s標簽,代碼中定義的Action僅用于轉發請求至jsp,用戶在瀏覽器的地址欄里可以明確的看到當前頁面的jsp文件名和路徑。

如下是A項目struts.xml文件中action后綴的配置

<constant name="struts.action.extension" value="action"/>

如下是B項目struts.xml文件中action后續的配置

<constant name="struts.action.extension" value="jsp,action"/>

問題在于A項目并沒有遇到B項目現在遇到的問題。

分析到這里,嘗試調整struts.xml的配置,去掉配置中的jsp,如下所示

<constant name="struts.action.extension" value="action"/>

這樣action后綴的配置和A項目保持一致。

重啟應用之后,使用Google Chrome提供的調試面板,檢查Web服務器對jsp頁面的響應,發現居然有HTTP安全頭部。這說明,action后綴的配置對安全頭部的生成有影響,但具體什么影響還未知,并且出于技術原因,目前并不能調整action后綴的配置。因此這問題還不算完,需要繼續分析。

依據J2EE規范中Filter和Servlet的定義,我們知道Filter在執行時需要等待Servlet完成處理并寫出響應后才會逐個返回,因此觀察Servlet的運行棧,可以看到Web請求的處理路徑。既然調整action后綴的配置對安全頭部的生成有影響,那么說明不同的配置條件下,jsp的執行路徑是有差異的,因此觀察運行棧一定可以發現點什么。

但問題是對于代碼里的Servlet類,可以使用eclipse的調試手段,在代碼里打上斷點,觀察執行棧,但對于jsp來說,使用打斷點來檢查棧的方法就行不通了。那怎么辦呢?

其實方法很簡單,jsp頁面內可以寫Java代碼,因此可以在頁面上定義一個java.lang.Throwable對象,然后使用該對象來輸出當前調用棧。代碼樣例如下所示:

<%
	new Throwable().printStackTrace();
%>

于是調整action后綴的配置,使用瀏覽器訪問頁面,提取頁面生成的棧。

如下是action后綴配置為jsp,action時的棧。

java.lang.Throwable
at org.apache.jsp.index_jsp._jspService(index_jsp.java:115)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:232)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:64)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:702)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:450)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:375)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
at org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:164)
at org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:191)
at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:372)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:276)
at org.apache.struts2.interceptor.DeprecationInterceptor.intercept(DeprecationInterceptor.java:41)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)
at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:229)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:229)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)
at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:73)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)
at org.apache.struts2.interceptor.DateTextFieldInterceptor.intercept(DateTextFieldInterceptor.java:125)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)
at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:91)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)
at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)
at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)
at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:189)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)
at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:567)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:81)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:71)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:105)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:506)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:1078)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:757)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1520)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)

如下是action后綴配置為action時的棧。

java.lang.Throwable
at org.apache.jsp.index_jsp._jspService(index_jsp.java:115)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:232)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.catalina.filters.HttpHeaderSecurityFilter.doFilter(HttpHeaderSecurityFilter.java:120)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:71)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:105)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:506)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:1078)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:757)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1520)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)

對比之下,有如下發現:

  • 當action后續為jsp,action

    • 棧信息很長。
    • 棧中出現了很多Struts2相關的棧幀(stack frame),說明頁面訪問請求被Struts2的過濾器攔截,符合預期。
    • 棧中未出現HttpHeaderSecurityFilter相關的棧幀(stack frame)。
    • Log4jServletFilter相關的棧幀(stack frame)出現了兩次,為什么?
  • 當前action后綴為action

    • 棧信息很短。
    • 棧中沒有Struts2相關的棧幀(stack frame),說明頁面訪問請求沒有被被Struts2的過濾器攔截,符合預期。
    • 棧中出現了HttpHeaderSecurityFilter相關的棧幀(stack frame)。
    • Log4jServletFilter相關的棧幀(stack frame)出現了一次,有點意思。

舊的問題沒解決,新的問題又出現了。action后綴的配置,看來不單對HttpHeaderSecurityFilter產生了影響,對Log4jServletFilter的行為也有影響。

于是檢查Log4jServletFilter的配置,如下

<listener>   
   <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>  
</listener>   

 <!-- log4j2-begin -->
 <listener>
     <listener-class>org.apache.logging.log4j.web.Log4jServletContextListener</listener-class>
 </listener>
 <filter>
     <filter-name>log4jServletFilter</filter-name>
     <filter-class>org.apache.logging.log4j.web.Log4jServletFilter</filter-class>
 </filter>
 <filter-mapping>
     <filter-name>log4jServletFilter</filter-name>
     <url-pattern>/*</url-pattern>
     <dispatcher>REQUEST</dispatcher>
     <dispatcher>FORWARD</dispatcher>
     <dispatcher>INCLUDE</dispatcher>
     <dispatcher>ERROR</dispatcher>
 </filter-mapping>  

咦,怎么filter-mapping還可以配置dispatcher,這是什么鬼?先不管它,參照Log4jServletFilter的配置,修改HttpHeaderSecurityFilter的配置信息。

<filter>
    <filter-name>httpHeaderSecurity</filter-name>
    <filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class>
    <async-supported>true</async-supported>
</filter>
<filter-mapping>
    <filter-name>httpHeaderSecurity</filter-name>
    <url-pattern>/*</url-pattern>
	<dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
</filter-mapping>

重啟應用之后使用瀏覽器的調試面板觀察頁面的響應數據,久違的HTTP安全頭部終于出現了。

Content-Type:text/html;charset=UTF-8
Date:Tue, 24 May 2016 16:15:21 GMT
Server:Apache-Coyote/1.1
Strict-Transport-Security:max-age=0
Transfer-Encoding:chunked
X-Content-Type-Options:nosniff
X-Frame-Options:DENY
X-XSS-Protection:1; mode=block

這時,檢查棧信息,可以看到HttpHeaderSecurityFilter相關的棧幀(stack frame)。

java.lang.Throwable
at org.apache.jsp.index_jsp._jspService(index_jsp.java:115)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:232)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.catalina.filters.HttpHeaderSecurityFilter.doFilter(HttpHeaderSecurityFilter.java:120)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:64)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:702)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:450)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:375)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
at org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:164)
at org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:191)
at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:372)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:276)
at org.apache.struts2.interceptor.DeprecationInterceptor.intercept(DeprecationInterceptor.java:41)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)
at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:229)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:229)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)
at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:73)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)
at org.apache.struts2.interceptor.DateTextFieldInterceptor.intercept(DateTextFieldInterceptor.java:125)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)
at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:91)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)
at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)
at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)
at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:189)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)
at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:567)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:81)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:71)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:105)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:506)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:1078)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:757)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1520)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)

定位結論

折騰這么久,終于把解決方法整出來了,其實很簡單。

當前struts.xml中有如下配置

<constant name="struts.action.extension" value="action,jsp"/>

配置安全頭部的過濾器時,需要在URL匹配模式上增加REQUESTFORWARD

<filter>
    <filter-name>httpHeaderSecurity</filter-name>
    <filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class>
    <async-supported>true</async-supported>
</filter>
<filter-mapping>
    <filter-name>httpHeaderSecurity</filter-name>
    <url-pattern>/*</url-pattern>
	<dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
</filter-mapping>

原因應該和Struts2重定向請求至頁面的方式相關,不過暫時沒有時間去研究Struts2,期望后續會有所了解。

資料

關于dispatcher的一些資料。

  • web.xml里中的作用
  • Web.xml中Filter過濾器標簽幾個說明
  • filter-mapping的執行順序和字符集設置的優先級
  • Filtering Requests and Responses

總結

以上是生活随笔為你收集整理的HTTP安全头部对jsp页面不生效的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

av在线免费播放 | 国产视频欧美视频 | 亚洲小视频在线 | 国产69精品久久久久99尤 | 成人免费在线播放视频 | 在线电影日韩 | 亚洲午夜久久久综合37日本 | 一区二区欧美激情 | 午夜精品久久久久久久久久久久久久 | 天天要夜夜操 | 国产精品久久久久国产a级 激情综合中文娱乐网 | 亚洲激精日韩激精欧美精品 | 亚洲免费高清视频 | 久草在线中文888 | 日日夜日日干 | 日韩av高潮 | 中文字幕在线影视资源 | 国产精品成久久久久三级 | 久久成人亚洲欧美电影 | 91黄色免费看 | 国产精品国产三级国产aⅴ9色 | 日韩视频 一区 | 久久中文字幕导航 | 中文区中文字幕免费看 | 国产高清绿奴videos | 天天综合狠狠精品 | 成人在线观看你懂的 | 日韩在线免费 | 中文字幕中文字幕中文字幕 | 国产精品久久久久久久免费大片 | 黄色免费国产 | 99国产视频在线 | 亚洲黄网站 | 91人人视频在线观看 | 伊人五月天综合 | 天天激情综合网 | 女人久久久久 | 人人爱人人做人人爽 | 亚洲成av人影院 | 国产亚洲精品成人 | 激情久久综合 | 97免费在线观看视频 | a亚洲视频| 91精品视频在线免费观看 | 黄色毛片视频免费观看中文 | 狠狠狠狠狠狠干 | 国产精品入口66mio女同 | 国产国语在线 | 日韩精品一区二区三区水蜜桃 | 日韩电影久久 | 米奇影视7777 | 色婷婷成人网 | 国产.精品.日韩.另类.中文.在线.播放 | 国产免费久久久久 | 亚洲第一区在线播放 | 最新精品视频在线 | 天天综合网 天天综合色 | 精品久久一区二区三区 | 中文字幕在线资源 | 国产欧美在线一区二区三区 | 国产在线 一区二区三区 | 日本中文字幕在线免费观看 | 天堂网av 在线 | h视频日本 | 九色自拍视频 | 在线视频观看你懂的 | 久久精品美女视频 | 一区二区视频播放 | av免费电影在线观看 | 国产美女精品在线 | 97在线看片 | 四虎影视久久久 | 久草在线免费新视频 | a级国产乱理论片在线观看 伊人宗合网 | 99久久久久国产精品免费 | 国产精品入口麻豆 | 日本久久免费电影 | 91免费版在线观看 | 亚洲综合视频网 | 黄色大片视频网站 | 久热精品国产 | 91精品夜夜 | 成人av电影网址 | 午夜精品久久久久久久99无限制 | 精品国产一区二区在线 | 中文字幕视频免费观看 | 99久久精品久久久久久清纯 | 久久激情精品 | 不卡av电影在线 | 国产精品女教师 | 久久婷婷开心 | 天天做天天爱夜夜爽 | 成人久久 | 免费视频一区 | 久久久久免费精品国产 | 一级a性色生活片久久毛片波多野 | h网站免费在线观看 | 国产精品大全 | 91色在线观看视频 | 午夜美女视频 | 国产99区| 久久人人爽人人爽人人片av软件 | 欧美大片在线观看一区 | 手机在线看片日韩 | 免费看日韩 | 亚洲一级电影视频 | 国产精品男女 | 91传媒视频在线观看 | 日本久久电影 | 日日夜夜天天久久 | 日韩精品久久久久久久电影99爱 | 久久久久久久久久久综合 | 欧美大片在线看免费观看 | 久久看毛片 | 中文字幕 影院 | 成人资源在线观看 | 国产精品久久久久三级 | 天天干天天色2020 | 成人性生交大片免费看中文网站 | 日本九九视频 | 在线视频成人 | av天天澡天天爽天天av | 久久久久久久久久久综合 | 制服丝袜亚洲 | 正在播放亚洲精品 | 亚洲午夜精品久久久久久久久 | 中文字幕av网站 | 精品国产一区二区三区免费 | av在线在线| 349k.cc看片app| 国产专区一 | 在线观看91精品视频 | 精品美女在线视频 | 色综合久久五月天 | 国产精品日韩欧美一区二区 | 久久精品免费播放 | 亚洲天天草| 午夜婷婷综合 | 亚洲一区网 | 五月婷婷一区二区三区 | 欧美精品一区二区蜜臀亚洲 | 看污网站 | 亚洲成人午夜av | 久久久久观看 | 2019免费中文字幕 | 午夜精品久久久久久久久久 | 最近中文字幕大全中文字幕免费 | 久久夜色精品国产欧美一区麻豆 | 99精品国产高清在线观看 | 在线久热 | 天天艹天天干天天 | 国产成人一区二区啪在线观看 | 不卡国产在线 | 五月天丁香综合 | 国产99久久九九精品免费 | av字幕在线| 在线免费观看av网站 | 9999国产| 国产亚洲久一区二区 | 午夜精品久久久99热福利 | 国产精品去看片 | 日日夜夜精品视频 | 成人国产精品久久久春色 | 成人一级在线观看 | 在线免费91 | 999久久久 | 插综合网 | 久久夜色电影 | 国产999视频在线观看 | 欧美极度另类性三渗透 | 久久国产一区二区三区 | 国产精品成久久久久 | 亚洲精品美女久久久久网站 | 久久人人爽av | 日本久久电影网 | 午夜电影一区 | 婷婷激情五月 | 欧美色精品天天在线观看视频 | 欧美激情第一区 | 精品美女久久 | 操操综合 | 亚洲精品在线视频观看 | 99热日本 | 丁香亚洲| 国产精品视频线看 | 日日夜色 | 99久久毛片| 国产99在线免费 | 中文字幕欧美日韩va免费视频 | 精品一区电影 | 欧美日韩xx | 99久久精品国 | 女人18毛片a级毛片一区二区 | 成人午夜精品福利免费 | 中文字幕五区 | 亚洲国内精品在线 | 日韩精品电影在线播放 | 在线免费观看视频a | 成人国产精品久久久 | 亚洲综合成人专区片 | www.黄色片.com| 人人澡人人爱 | 国产精品二区在线 | 成人免费视频播放 | 狠狠色丁香久久综合网 | 在线观看日韩免费视频 | 蜜臀av夜夜澡人人爽人人桃色 | 国产亚洲免费观看 | 香蕉视频导航 | 91麻豆精品国产91久久久使用方法 | 欧美精品在线观看一区 | 免费av网址大全 | 久久久久久久国产精品视频 | 2019中文字幕网站 | 三级小视频在线观看 | 国产手机在线播放 | 久久综合五月 | 精品国产乱码久久久久久久 | 99精品视频在线免费观看 | 四虎国产精品免费 | 在线观看视频免费播放 | 在线国产一区二区三区 | 日日躁夜夜躁xxxxaaaa | 五月婷婷综合色拍 | 黄色影院在线观看 | 在线天堂中文在线资源网 | 美女av在线免费 | 操天天操 | 伊人久久电影网 | 日韩精品久久一区二区 | a√天堂中文在线 | 中文字幕亚洲字幕 | 国产99久久精品一区二区300 | 中文av在线天堂 | 欧美精品一区二区在线播放 | 激情欧美在线观看 | 51精品国自产在线 | 最近av在线 | 国产香蕉久久 | 免费十分钟 | 中文字幕一区二区三区四区在线视频 | 射久久久 | 麻豆视频免费版 | 91人人人 | 成人免费 在线播放 | 97碰视频| 极品嫩模被强到高潮呻吟91 | 天天天天色综合 | 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 日本久久综合视频 | 国产手机在线精品 | 免费午夜在线视频 | 91久久人澡人人添人人爽欧美 | 欧美黑人性爽 | 成人在线免费看视频 | 韩日精品在线 | 久久久综合色 | 日韩美av在线 | 99免费看片 | 久久国产午夜精品理论片最新版本 | 麻豆视频在线免费观看 | 日韩精品免费一区二区在线观看 | 黄色日批网站 | 91麻豆国产福利在线观看 | 久久99精品久久久久久久久久久久 | 亚洲va欧美va人人爽春色影视 | 午夜电影久久久 | 亚洲视频 一区 | 亚洲精品久久久久久国 | 国产精品一区二区三区久久久 | 色狠狠婷婷 | 激情开心色 | 久久久www免费电影网 | 国产无遮挡又黄又爽馒头漫画 | 日本成人中文字幕在线观看 | 国产午夜精品一区二区三区 | 91chinesexxx | 激情婷婷色 | 人人干97| 韩国av免费观看 | 日韩字幕 | 在线观看网站你懂的 | 欧美一区二区三区特黄 | 国产精品av免费观看 | 国产又黄又爽无遮挡 | 99精品国产一区二区 | 久久这里有精品 | 久久99国产综合精品免费 | 久久久视频在线 | 在线观看网站黄 | 狠狠操.com | 国产一区二区久久久久 | 视频一区二区在线观看 | 亚洲欧美国产精品久久久久 | 天天草天天干天天 | 国产精品久久久久av福利动漫 | 国产日产亚洲精华av | 日韩免费小视频 | 久久这里有精品 | 欧美韩国日本在线观看 | 日韩精品在线视频 | 在线中文字幕视频 | 免费日韩 精品中文字幕视频在线 | av免费电影在线观看 | 国内成人av| 欧美日韩国内在线 | 国内亚洲精品 | 色综合久久综合中文综合网 | 久久久久免费 | 天天干天天操人体 | 亚洲v精品 | 欧美日韩久久不卡 | 久久久久观看 | 国产精品99久久久久久小说 | 国产九九热视频 | www黄色| 免费黄在线看 | 日韩久久久久久 | 97涩涩视频 | 夜夜操天天干 | 91精品第一页 | 一区二区三区免费在线观看 | 最新色站| 欧美在线一级片 | 欧美日韩一二三四区 | 色婷婷综合视频在线观看 | 在线精品观看国产 | 在线a亚洲视频播放在线观看 | 免费观看www7722午夜电影 | 国产精品成人国产乱一区 | 特级西西人体444是什么意思 | 国产视| 久草免费资源 | www.五月婷| 在线观看播放av | 日韩视频免费在线观看 | 丁香六月婷婷综合 | 国产99久久精品一区二区300 | 成人久久久精品国产乱码一区二区 | 国产 视频 久久 | 国产人成一区二区三区影院 | 欧美射射射 | 激情综合六月 | av三级在线免费观看 | 久久97超碰 | 在线国产黄色 | 国产又粗又猛又爽又黄的视频先 | 亚洲精品国产品国语在线 | www色com | 免费国产一区二区视频 | 婷婷丁香五 | 久久久久欠精品国产毛片国产毛生 | 日韩经典一区二区三区 | 日韩av男人的天堂 | 日韩美av在线 | 久久影视中文字幕 | 97人人爽人人| 波多野结衣动态图 | 在线激情网 | 亚洲综合成人在线 | 久久精品99国产精品亚洲最刺激 | 久久精品视频中文字幕 | 亚洲三级在线免费观看 | 最新av网址在线 | 国产精品久久久久影院 | 91亚洲精品在线观看 | 99r在线精品| a午夜电影 | av中文天堂 | 五月婷婷丁香综合 | 久久天堂精品视频 | 中文字幕在线看 | 99久久99久国产黄毛片 | 久草在线资源观看 | 91大神精品视频在线观看 | 亚洲综合爱 | 国产精品一区二区三区四 | 一区二区三区在线影院 | 亚洲日韩中文字幕在线播放 | 久久69精品 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 天天综合操 | 免费影视大全推荐 | 在线观看中文字幕一区二区 | 97超碰人人模人人人爽人人爱 | 天天操夜夜看 | 中文字幕在线观看1 | 在线观看激情av | 四虎影视成人永久免费观看亚洲欧美 | 国产精品久久久久久久久久久久久久 | 久久伊99综合婷婷久久伊 | av成人免费网站 | 中文字幕丰满人伦在线 | 国产中文字幕第一页 | 国产一卡二卡在线 | 精品视频123区在线观看 | 久久av高清 | 亚洲精品午夜一区人人爽 | 成人av手机在线 | 在线国产小视频 | av短片在线 | 日韩国产精品一区 | 亚洲精品美女免费 | 国产日产精品久久久久快鸭 | 久久天天综合网 | 成人亚洲网 | 久草在线观看资源 | 精品国产免费观看 | 国产精品视频在线观看 | 久久高清 | 在线观看免费av网站 | 成人观看| 国产精品日韩欧美一区二区 | 国产精品久久婷婷六月丁香 | 欧美一区日韩精品 | 日韩免费高清在线观看 | 中文字幕无吗 | 欧美一区二区三区在线观看 | 久久夜色精品国产欧美乱极品 | 91高清视频免费 | 亚洲一区二区天堂 | 国产精品一区二区三区四区在线观看 | 日韩精品久久一区二区三区 | 97偷拍视频 | 国产精品a级 | 国产高清绿奴videos | 国产香蕉久久精品综合网 | 中文字幕电影一区 | 欧美日韩综合在线观看 | 久久综合九色综合久久久精品综合 | 在线免费观看欧美日韩 | 成人一区二区在线 | 亚洲欧美日韩精品一区二区 | 日韩精品一区二区三区免费观看视频 | 91传媒视频在线观看 | 中文字幕91 | 成人免费视频在线观看 | 亚洲电影久久 | 天天干天天做天天爱 | 久久公开免费视频 | 亚洲成年人在线播放 | 婷婷丁香六月 | 在线观看黄色av | 久色小说 | 色a网| 精品国产亚洲一区二区麻豆 | 国内精品中文字幕 | 欧美激情综合五月色丁香小说 | 久久国产亚洲 | 天天爱天天操天天干 | 久久av高清| 亚洲精品国产欧美在线观看 | 午夜久久网站 | 欧美精品久久久久久久 | 久久久久97国产 | 男女靠逼app | 日韩电影一区二区在线 | 国产精品高清av | 亚洲综合在线观看视频 | 成人小视频在线播放 | 麻豆免费看片 | 久久综合亚洲鲁鲁五月久久 | 欧美一区二区三区在线视频观看 | 一本一本久久a久久精品综合 | 综合网在线视频 | 狠狠干成人综合网 | 天天色天天 | 一级免费看 | 日韩a在线看| 久久久久国产一区二区三区 | 成人中文字幕在线 | 国产色a在线观看 | 婷婷开心久久网 | 国产在线观看高清视频 | 婷婷色社区| 色就色,综合激情 | 成人黄色av免费在线观看 | 三级黄在线 | 亚洲波多野结衣 | 一区二区三区四区免费视频 | 婷婷伊人综合亚洲综合网 | 亚洲第五色综合网 | 免费av大全 | 国产一区欧美在线 | 青草视频网 | 久久精品国产免费看久久精品 | 天天爽人人爽夜夜爽 | 免费在线一区二区 | 日本亚洲国产 | 色婷婷亚洲婷婷 | 激情五月视频 | 国产精品欧美 | www亚洲国产 | 91爱爱电影 | 中文字幕的 | 国产又黄又硬又爽 | 我要色综合天天 | 日本精品久久久久久 | 91av在线免费观看 | 婷婷色九月 | 天天色影院 | 在线观看中文字幕dvd播放 | 欧美色图一区 | 中文字幕网站视频在线 | 国产一级视频 | 国产91精品看黄网站 | 日韩伦理片hd | 日韩av进入 | 色欧美88888久久久久久影院 | 美女视频黄在线观看 | 久久一区精品 | 国产乱视频 | 成年人免费av网站 | 国产手机视频在线观看 | 黄色在线观看免费网站 | 少妇性aaaaaaaaa视频 | 欧美地下肉体性派对 | 国产精品18毛片一区二区 | 亚洲精品久久久久中文字幕二区 | 在线中文字幕一区二区 | 中文字幕国产 | 欧美日韩中文另类 | 十八岁免进欧美 | 亚洲a色| 特级毛片网站 | 国产1区2区3区精品美女 | 亚洲区视频在线 | 在线观看亚洲 | 国产99精品在线观看 | 美女网站黄免费 | 国产99中文字幕 | 一区 二区 精品 | 日韩av成人 | 免费看三片 | 91视频久久久 | 日韩毛片在线播放 | 日韩黄在线观看 | 一区在线免费观看 | 亚洲五月| 天天综合日日夜夜 | 日韩视频在线观看视频 | 黄色a三级 | 欧美怡红院 | 精产嫩模国品一二三区 | 久久爱影视i | 欧美91精品国产自产 | 国产视频色 | 美女久久久久久久久久久 | 国模精品在线 | 国产精品一区二区三区四 | 高清视频一区 | 日韩在线视频免费观看 | 黄色a视频免费 | 91麻豆精品国产91久久久久久久久 | 欧美日韩精品久久久 | 婷婷六月天在线 | 成年人免费看 | 免费精品视频 | 国产人免费人成免费视频 | 在线观看中文字幕2021 | 久久综合成人 | 久草在线高清视频 | avlulu久久精品 | 99中文字幕 | 毛片一二区 | 久久精品这里精品 | 欧美婷婷综合 | 色资源二区在线视频 | av女优中文字幕在线观看 | 国产精品videoxxxx | www.神马久久 | 精品国产视频在线观看 | 国产精品videossex国产高清 | 国产美女永久免费 | 人人干人人超 | 日韩在线视频线视频免费网站 | 精品视频9999 | 国模吧一区 | 国产精品久久视频 | 亚洲黄色一级电影 | 色噜噜狠狠狠狠色综合久不 | 国产在线v | 91福利区一区二区三区 | 在线黄av | 久久网页| 97在线观看视频国产 | 在线观看视频色 | 国产男女爽爽爽免费视频 | 日本精品久久久一区二区三区 | 色偷偷88888欧美精品久久 | 黄色网www | 天天操天天摸天天爽 | 国产精品乱码高清在线看 | 国产精品亚洲综合久久 | 成人午夜电影在线观看 | 国内外成人在线视频 | 国产精品视频全国免费观看 | 日韩av福利在线 | 久久资源总站 | 色综合久久天天 | 国产精品久久久久影院日本 | 欧美久久精品 | 日韩精品不卡 | 精品一区电影 | 国产h在线播放 | 国产午夜激情视频 | 成年人国产视频 | 国产精品自产拍在线观看中文 | av亚洲产国偷v产偷v自拍小说 | 久免费| 国产成人精品一区二区三区 | 狠狠色丁香婷婷综合基地 | 中文字幕电影在线 | 国产夫妻性生活自拍 | 国产精品欧美精品 | 中文字幕免费一区二区 | 欧美日韩视频免费看 | 九色视频网站 | 中文字幕日韩av | 天天碰天天操 | 欧美精品久久久久久久免费 | aaa毛片视频 | 国产高清视频在线免费观看 | 最近免费中文字幕大全高清10 | 五月婷激情 | 欧美日韩高清国产 | 五月天天在线 | 国产精品久久久久久久午夜片 | 视频直播国产精品 | 成年人视频在线观看免费 | 丁香婷婷电影 | 天堂网中文在线 | 天天av在线播放 | 亚洲精品99久久久久中文字幕 | 96精品高清视频在线观看软件特色 | 天天插天天 | 国产精品九九九 | 天天艹 | 五月天激情在线 | 国产精品久久久一区二区三区网站 | 久久这里只有精品视频99 | 欧美性色综合 | 亚洲观看黄色网 | 蜜桃视频在线观看一区 | 日日干综合 | 在线欧美最极品的av | 免费黄在线观看 | 97成人免费 | av观看在线观看 | 在线观看欧美成人 | av福利在线 | 久久精品老司机 | 日韩电影在线视频 | 一本色道久久精品 | 成人小视频在线观看免费 | 不卡的av在线| 久久精彩免费视频 | 欧美日韩精品网站 | 精品国产福利在线 | 日本大尺码专区mv | 国产香蕉视频在线播放 | 日日躁你夜夜躁你av蜜 | 久久这里只有精品1 | 欧美资源| 91av电影在线观看 | 四虎在线免费观看 | 欧美日韩高清一区二区 国产亚洲免费看 | 最近中文字幕视频网 | www.久久com | 日韩中文在线播放 | 91久久精| 成人在线视频观看 | 精品一区二区三区久久 | 日日夜夜综合网 | 超碰人人草 | 91九色网站 | 五月天婷婷在线播放 | 久久成人免费 | 久久精品一区二区 | 麻豆成人在线观看 | 欧美日韩免费视频 | 日本精品久久久久中文字幕5 | 在线播放第一页 | 日韩三级视频 | 亚洲第一av在线播放 | 国产在线观看国语版免费 | 91福利视频一区 | 亚洲综合五月 | 国产精品久久久久久久午夜片 | 日日噜噜噜噜夜夜爽亚洲精品 | 伊人五月天综合 | 中文字幕在线观看的网站 | 亚洲国产99 | 91亚洲精品国偷拍 | 国产美女黄网站免费 | www.一区二区三区 | 久热电影 | 又黄又爽又刺激的视频 | 国产成人精品aaa | 免费激情在线电影 | 欧美日本中文字幕 | 久久久黄色免费网站 | 91成人精品国产刺激国语对白 | 丁香婷婷综合激情 | 亚洲最新av网址 | 黄色成人在线 | 国内毛片毛片 | 亚洲激情综合 | av片中文| 精品黄色在线 | 日韩在线观看视频免费 | 超碰免费观看 | 99在线免费观看视频 | 欧美激情在线看 | 日韩特级黄色片 | 在线91视频| 国产 日韩 在线 亚洲 字幕 中文 | 精品国产一区二区三区四 | 91精品欧美一区二区三区 | a黄在线观看 | 成人免费视频网址 | 日日射天天射 | 日韩欧美中文 | 国产黄色免费看 | 欧美日韩一级视频 | 成人毛片一区 | 国内丰满少妇猛烈精品播 | 色视频 在线 | 视频成人 | 国产精品99久久久久人中文网介绍 | 亚洲精品中文字幕视频 | 碰超在线| 国产一区黄色 | 免费观看一区二区三区视频 | 欧美aa一级 | 精品视频区 | 国产九九在线 | 国产精华国产精品 | 婷婷色中文字幕 | 婷婷丁香自拍 | 国产高清黄 | 在线观看日韩专区 | 最近更新中文字幕 | 一级片观看 | 国产一级在线观看 | 国产精品成人一区二区 | 黄色亚洲大片免费在线观看 | 久久久私人影院 | 日韩中文字幕免费视频 | 日韩电影一区二区在线 | 成人av中文字幕 | 色永久免费视频 | 日韩网站在线免费观看 | 国产一及片 | 久久国产综合视频 | 精品国产1区2区 | 国产一区在线观看免费 | 欧美日韩亚洲第一页 | 中文字幕一区二区三 | 成人免费视频网站 | 日韩大片免费在线观看 | 国产一区二区手机在线观看 | 精品国产自在精品国产精野外直播 | 亚洲涩涩色 | 免费麻豆| 亚洲精品视频在线免费 | 久草资源在线 | 日本黄色黄网站 | 九九免费精品视频 | 天天躁日日躁狠狠躁av中文 | 91一区二区三区在线观看 | 中文字幕一区二区在线观看 | 中文字幕av免费观看 | 99精品亚洲 | 免费久久久久久 | 最新免费av在线 | 久久99国产综合精品免费 | 成人午夜电影网站 | 国产h在线播放 | 日韩国产精品久久 | 在线播放日韩av | 日韩免费电影网站 | 中文字幕在线影视资源 | 日韩av在线高清 | 一级久久精品 | 国产精品麻豆视频 | 日韩专区在线观看 | 欧美激情精品久久久久久免费印度 | av黄色免费看 | 亚洲成人精品国产 | 91在线91 | 最新av在线网站 | 一区二区欧美在线观看 | 午夜精品成人一区二区三区 | 欧美精品午夜 | 中文久草| 国产精品 日韩 欧美 | www日韩精品 | 成年人在线免费看片 | 国产女人18毛片水真多18精品 | 欧美人体xx | 日韩精品不卡 | 成人黄大片 | 六月丁香婷婷在线 | 男女激情片在线观看 | 在线观看91av | 超碰在线97免费 | 99精品免费视频 | 伊人资源视频在线 | 国产在线观 | 国产精品k频道 | 国产一区二区不卡视频 | 亚洲精品99久久久久中文字幕 | 精品视频99 | 日韩超碰 | 日韩丝袜| 精品久久久免费视频 | 91视视频在线直接观看在线看网页在线看 | 欧美a级成人淫片免费看 | 亚洲精品一区二区三区在线观看 | 成人午夜电影在线观看 | 美女视频是黄的免费观看 | 夜夜爽天天爽 | 亚洲精品国产自产拍在线观看 | 国产无遮挡猛进猛出免费软件 | 性色va| 欧美成人在线免费观看 | 亚洲三级av| 久热av在线 | 精品亚洲免费视频 | 天天摸夜夜操 | 日韩r级电影在线观看 | 麻豆av电影 | 天天操婷婷 | 亚洲在线a | 久av电影 | 免费网站v| 日韩大片在线看 | 国内一区二区视频 | 亚洲va综合va国产va中文 | 伊人激情综合 | 国产最新精品视频 | 成人av片在线观看 | 中日韩在线视频 | 狠狠做深爱婷婷综合一区 | 黄污网 | av超碰在线观看 | 99精品国产成人一区二区 | 一级黄色片在线免费观看 | 欧日韩在线视频 | 男女激情片在线观看 | 欧美在线观看视频一区二区三区 | 日韩精品91偷拍在线观看 | 亚洲精品乱码白浆高清久久久久久 | 久久免费精彩视频 | 精品在线播放视频 | 国产剧情av在线播放 | 毛片无卡免费无播放器 | 超碰在97 | 超碰99在线 | 黄色三级视频片 | 欧美疯狂性受xxxxx另类 | 美女黄视频免费 | 国产美女免费视频 | 久久精品视频中文字幕 | 中文字幕在线观看免费 | 天天干,天天操 | 久草在线久 | 亚洲日本va中文字幕 | 亚洲午夜久久久久 | 91在线免费播放视频 | 中文字幕制服丝袜av久久 | 亚洲国产影院av久久久久 | 插久久 | 免费看黄电影 | 青青草国产免费 | 国产精品电影一区 | 在线观看av中文字幕 | 久久精品官网 | 最新国产在线视频 | 国产精品久久一区二区三区不卡 | 久碰视频在线观看 | 久99精品| 日韩成人精品 | 中文字幕在线一区观看 | 天天射天天爱天天干 | 久草在线中文888 | 91精品国自产在线 | 久久久精品 | 久久久电影 | 91成年视频 | 亚洲国产精品电影在线观看 | 免费日韩一区二区三区 | 日本久久久久久科技有限公司 | 我要看黄色一级片 | 99久久www免费 | 99热在线免费观看 | 国产精品女同一区二区三区久久夜 | 在线视频a | 午夜精品久久久久久久久久久久 | 国产精品videossex国产高清 | av片一区二区 | 深夜精品福利 | 久艹在线播放 | 色视频网址 | 中文字幕一区二区三区四区视频 | 92av视频 | 国产精品成人a免费观看 | 国产色综合天天综合网 | 激情视频区 | 国产在线资源 | 欧美色综合久久 | 在线观看一区二区精品 | 日本乱视频 | 国产精品私人影院 | 久久精品九色 | 天天综合天天做天天综合 | 国产99久久九九精品免费 | 91九色视频导航 | 国产精品国产三级国产aⅴ无密码 | 日本h视频在线观看 | 国产在线观看国语版免费 | 日韩在线看片 | 久久97久久 | 久久久高清视频 | 91久久国产自产拍夜夜嗨 | 中文字幕在线播放日韩 | 国产黄色片一级三级 | 国产精品观看视频 | 国产v在线播放 | 九九色网 | 久久午夜免费视频 | www日韩在线观看 | 亚洲天堂精品视频在线观看 | 成人在线免费小视频 | 99久久久久久久 | 久操视频在线观看 | 亚洲一区二区高潮无套美女 | 久久九九国产视频 | 久久www免费人成看片高清 | 91激情在线视频 | av永久网址 | 91视频传媒 | 国产美女免费视频 | 免费av福利 | 91成人精品国产刺激国语对白 | 成年人国产精品 | 中文在线字幕免费观看 | 国产精品久久久久久一二三四五 | 久久久免费在线观看 | 操久久免费视频 | 日本精品一区二区三区在线播放视频 | 在线免费av播放 | 精品久久一级片 | 国产精品免费在线播放 | 国产在线国产 | 射射射综合网 | 国产精品午夜久久久久久99热 | 成人在线观看资源 | 日本黄色一级电影 | 黄色免费在线视频 | av网站地址 | 午夜视频在线观看一区二区三区 | 夜夜操狠狠操 | 日韩在线免费视频 | 国产美女免费观看 | 91精品国产综合久久福利 | 欧美综合色在线图区 | 亚洲视频免费视频 | 精品欧美日韩 | 91社区国产高清 | 日韩黄色免费电影 | 国产午夜三级 | 亚洲国产成人在线播放 | 狠狠狠狠狠狠狠狠干 | 亚洲国产精品传媒在线观看 | 国产精品va在线观看入 | 国产 一区二区三区 在线 | 一区二区久久久久 | 成人久久久久久久久久 | 日韩在线第一区 | 亚洲视频网站在线观看 | 亚洲色图色 | 免费午夜视频在线观看 | 久久99视频精品 | 国产a国产a国产a | 亚洲激情 在线 | 人人爽人人插 | 亚洲精品在线资源 | 麻豆小视频在线观看 | 黄色网www | 二区三区视频 | sm免费xx网站| 欧美激情精品久久久久久免费 | 亚洲欧美日本一区二区三区 | 波多野结衣久久资源 | 97日日碰人人模人人澡分享吧 | 久久免费国产精品1 |