zoukankan      html  css  js  c++  java
  • 关于解决绿盟科技安全评估报告中的web漏洞

    关于解决绿盟科技安全评估报告中的web漏洞

    3.1.1.Apache Tomcat 文件包含漏洞(CVE-2020-1938)

    方式一:升级tomcat版本,
    对于springboot项目,需要更换内置tomcat
    更换步骤:
    1 进入springboot共成的parent可以看到tomcat的版本
    01
    2 在自己的pom文件里覆盖掉内置的tomcat版本
    ::: details 点击查看代码

            <tomcat.version>9.0.31</tomcat.version>
    
                <dependency>
    				<groupId>org.apache.tomcat.embed</groupId>
    				<artifactId>tomcat-embed-core</artifactId>
    				<version>${tomcat.version}</version>
    			</dependency>
    			<dependency>
    				<groupId>org.apache.tomcat</groupId>
    				<artifactId>tomcat-juli</artifactId>
    				<version>${tomcat.version}</version>
    			</dependency>
                <!--排除依赖-->
                <dependency>
    				<groupId>org.springframework.boot</groupId>
    				<artifactId>spring-boot-starter-web</artifactId>
    				<exclusions>
    					<exclusion>
    						<groupId>org.springframework.boot</groupId>
    						<artifactId>spring-boot-starter-tomcat</artifactId>
    					</exclusion>
    				</exclusions>
    			</dependency>
    
    
    

    :::

    效果:
    02

    3 启动项目看一下
    03
    没有报错,修改成功

    若不需要使用Tomcat AJP协议,可直接关闭AJP Connector,或将其监听地址改为仅监听本机localhost。
    具体操作:

    (1)编辑 <CATALINA_BASE>/conf/server.xml,找到如下行(<CATALINA_BASE> 为 Tomcat 的工作目录):

    <Connector port="8009"protocol="AJP/1.3" redirectPort="8443" /> 
    

    (2)将此行注释掉(也可删掉该行):

    <!--<Connectorport="8009" protocol="AJP/1.3"redirectPort="8443" />-->
    

    (3)保存后需重新启动Tomcat,规则方可生效。

    3.1.2.检测到会话cookie中缺少HttpOnly属性

    由于在报告中明确的指出了是哪个接口 找到接口添加如下配置

    cookie.setHttpOnly(true);
    

    3.1.3.点击劫持:X-Frame-Options未配置

    tomcat配置

    进入tomcat目录下的conf,找到web.xml配置文件,搜索httpHeaderSecurity,
    找到如下配置:
    tu1
    tu2
    修改后结果:
    tu3
    tu4
    ::: details 点击查看代码

        <filter>
            <filter-name>httpHeaderSecurity</filter-name>
            <filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class>
            <async-supported>true</async-supported>
          <init-param>
            <param-name>antiClickJackingEnabled</param-name>
            <param-value>true</param-value>
          </init-param>
          <init-param>
            <param-name>antiClickJackingOption</param-name>
            <param-value>SAMEORIGIN</param-value>
          </init-param>
        </filter>
    
    

    :::

    修改之后,重启项目
    浏览器访问接口可以看到:
    tu5
    即配置成功
    这里有一个问题
    配置http的响应头信息:属性名X-Frame-Options。
    可以配置的参数有两个:

    DENY:浏览器拒绝当前页面加载任何Frame页面。
    SAMEORIGIN:页面只能加载入同源域名下的页面。

    我配置的是第二个 但是访问接口却是第一个,不知道是什么原因。

    springBoot项目

    对于springBoot项目,可以使用添加过滤器的方式解决
    ::: details 点击查看代码

    
    /**
    * @Description: 解决 点击劫持:X-Frame-Options未配置
    * @Param:
    * @return:
    * @Date: 2020/7/24
    */
    @Component
    public class CookieFrameFilter implements Filter {
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
    
        }
    
        @Override
        public void doFilter(ServletRequest request, ServletResponse response,
                             FilterChain filterChain) throws IOException, ServletException {
            HttpServletRequest req = (HttpServletRequest) request;
            HttpServletResponse resp = (HttpServletResponse) response;
            resp.addHeader("x-frame-options", "SAMEORIGIN");
            filterChain.doFilter(req, resp);
        }
    
        @Override
        public void destroy() {
    
        }
    }
    
    
    

    :::

    修改后重启项目
    tu5
    配置成功
    注意需要添加@Component注解,使改过滤器交由spring管理,否则不生效

  • 相关阅读:
    k8s service的DNS名称解析之CoreDNS
    k8s service负载均衡实现之iptables
    k8s 将项目暴露到互联网访问
    k8s 日志按体现分类与采集思路
    k8s ingressd的http对外暴露网站
    k8s 容器交付流程和项目部署流程
    k8s ingress使用DaemonSet部署
    Google Base与科学家数据共享 (Nature Vol 438|24 November 2005)
    总结:rdf:ID和rdf:about的区别(转载)
    一个元搜索引擎
  • 原文地址:https://www.cnblogs.com/kt-ting/p/13454882.html
Copyright © 2011-2022 走看看