zoukankan      html  css  js  c++  java
  • 小事故合集

    1 resttemplate与close_wait

    背景,植入resttemplate请求对外数据,发现每次请求会新建一个连接,而且完了也不关,显示close_wait,显然,在1分钟establish状态后,对方发起fin,我方ack,然后没有发fin,到这四次挥手就中断了

     

    在以前的tcp实际中也有碰到过,客户端没有close导致不发fin包的经历 17tcp close端口占用 & setReuseAddress 【本地】

     解决方案,改连接池

    2 iframe 跨端口

    背景

    A.80 iframe 3个网站

    A.8080,A.8081,A.8082

    24netty(二十)http代理服务器【重点】背景一致

    先要证明iframe不能跨端口

    http://localhost:8080/wechat-demo/iframe.html

    http://localhost:8990/ss

    /Users/mac/work/netty-test/src/main/java/com/jds/test/http/BodyToResponseEncoder.java

    /Users/mac/work/netty-test/src/main/java/com/jds/test/websocket/WebSocketServerJob.java

    /Users/mac/Documents/apache-tomcat-8.5.11/webapps/wechat-demo/iframe.html

    小插曲,本地可以,线上不行,

    因为本地使用jetty,没有x-frame-options:SAMEORIGIN(注意,该x-frame-options对chrome大小写不敏感)

    而线上由tomcat/conf/web.xml统一打开了

    参考:https://blog.csdn.net/liangpingguo/article/details/86703284

    <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>
    

     

    看上去tomcat也没给机会

    解决方案

    生产:代理服务器

    P.80 ? app=A80 iframe

    P.80 ? app=A8080

    P.80 ? app=A8081

    P.80 ? app=A8082

    开发;

    fiddler篡改response,删掉X-Frame-Options

    3 接 当动态代理遇到ioc (四)真正的cglib

    interface A

    class A1 implements A

    class A2 implements A

    guice注入A1,A2,按名称

    在aop中控中,用getBeanByClass形式去拿,是拿不到的,反哺失败

    这里同事有个误区,A1,A2本身没有使用aop切面,直接注入原对象,为什么会报错

    如下:

    B {

      inject

      name(A_A1)

      private A A1's object

    };

    cglib B = cglib(new B)

    当反哺时,用A这个类型去取bean,是取不到的;考究的做法是,读取待反哺对象的name注解,如果有,则通过名称去bean里取

    当动态代理遇到ioc (四)真正的cglib 。10

    4 http response splitting

    https://blog.csdn.net/qq_35976271/article/details/103276682

    4.1 本地的jetty以

    reponse.setRedirect(url + " HACK:hh ")

    并不能完成攻击,根据抓包,发现jetty将 换为空格(%20)了

    4.2 URLEncode.encode(url) 会导致非法url,浏览器认不出,与30multipart/form-data和application/x-www-form-urlencoded的区别(二)urlencoded之自动deocde   结论一致,urlencode会encode :/?=,本质是为了将用户的数据转义,如果将正常的url也转义了,那么url也就不合法了,正确的做法是对url中的 替换为""

    4.3 sendredirect会组装一个http

    302

    Location:url 在response中植入一个Location头

    5 java与javac不一致

    java -jar时,发现用的是C:Program Files (x86)Common FilesOracleJavajavapath,32位的

    而用的jstack是64的,所以就不行了

    解决:在idea terminal中吧path设置到64的java

    6 iframe跨域cookie

    发现调试时(跨域,用fiddler篡改response报文,删除X-Frame-Options)网站能够被iframe嵌入(这可以理解)的同时,居然跨域带cookie

    发现该cookie勾选了Secure,SameSite为空

     

    经过调查,跨域设置SameSite=None和Secure时,谷歌浏览器才会发送Cookie

  • 相关阅读:
    asp.net笔记第一章
    数据库复习笔记
    tp5博客项目实战2
    springboot调整MybatisPlus全局的验证策略
    SpringBoot整合MybatisPlus,并实现新增、修改、删除、查看、分页
    springboot整合Apollo
    创建apollo项目,并发布配置
    Apollo部门管理
    搭建Apollo环境(Ubuntu-18.04.4)
    启动apollo时出现的问题,../demo.sh: 行 84: curl: 未找到命令
  • 原文地址:https://www.cnblogs.com/silyvin/p/14715123.html
Copyright © 2011-2022 走看看