一切福田,不離方寸,從心而覓,感無不通。

部署与使用 Squid 正向代理

  目录 背景 解决方案: Squid 正向代理       在 Nginx 服务器上部署 Squid             使用 Docker 安装与运行 Squid             squid.conf 配置文件示例 在应用服务器上配置和使用 Squid       环境变量/系统设置       现有 Docker 容器的适应性 总结   背景 在医院项目中,由于安全性和其他网络策略的考虑,经常会遇到某些服务器无法直接访问公网的情况。而 Nginx 服务器,因为充当了公网用户和后端服务器之间的媒介(反向代理),是可以与公网进行通信的。为了克服这种局限性,使得相关的服务器(如应用服务器)能访问到互联网,我们一般会引入正向代理的解决方案,也就是在 Nginx 服务器上安装其他透明的正向代理软件,以避免业务上出现异常。 有人可能会问,为什么不直接用 Nginx 服务器上的 Nginx 进行正向代理呢?其实,Nginx 做 HTTP 的正向代理是完全没问题的,配置起来也非常简单。只是,它无法很好地支持 HTTPS 请求的正向代理。 这里展开讲一下正向代理 HTTPS 流量的机制—— 客户端使用明文 HTTP 协议,向代理发送CONNECT请求,请求与目标服务器建立一个 TCP 隧道

  代理尝试与目标服务器建立 TCP 连接 一旦连接建立,代理告诉客户端连接已建立(返回 200 状态码,跟常见的 200 OK 不一样哦)

  然后,客户端开始与目标服务器进行 TLS 握手,以此建立加密的连接 此后,所有流量(已加密)只是通过代理传输,而代理不会(也不能)查看其内容,除非你配置它们为“中间人”攻击模式(Man-in-the-Middle, MITM) Nginx 就麻烦在它默认不支持 CONNECT 方法,因为 Nginx 的设计初衷主要是作为 HTTP 服务器和反向代理来用的,而不是作为正向代理。 所以,通常我们会使用 Squid 来做正向代理,毕竟人家是专业干这个的~ 解决方案: Squid 正向代理 Squid 是一款流行的、高性能的正向代理和缓存服务器,非常适合我们的问题场景。 在 Nginx 服务器上部署 Squid 使用 Docker 安装与运行 Squid […]

龙生   27 Dec 2023
View Details

Java 4种校验注解(值校验、范围校验、长度校验、格式校验)

1 Maven依赖

  2 值校验 2.1 @Null注解 被注解的元素必须为null

  2.2 @NotNull注解 被注解的元素必须不为null

  2.3 @NotBlank注解 验证注解的元素值不为空(不为null、去除首位空格后长度为0) ,并且类型为String。

  2.4 @NotEmpty注解 验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0) ,并且类型为String。

  2.5 @AssertTrue注解 被注解的元素必须为true,并且类型为boolean。

  2.6 @AssertFalse注解 被注解的元素必须为false,并且类型为boolean。

  3 范围校验 3.1 @Min注解 被注解的元素其值必须大于等于最小值,并且类型为int,long,float,double。

  3.2 @Max注解 被注解的元素其值必须小于等于最小值,并且类型为int,long,float,double。

  3.3 @DecimalMin注解 验证注解的元素值大于等于@DecimalMin指定的value值,并且类型为BigDecimal。

  3.4 @DecimalMax注解 验证注解的元素值小于等于@DecimalMax指定的value值 ,并且类型为BigDecimal。

  3.5 @Range注解 验证注解的元素值在最小值和最大值之间,并且类型为BigDecimal,BigInteger,CharSequence,byte,short,int,long。

  3.6 @Past注解 被注解的元素必须为过去的一个时间,并且类型为java.util.Date。

  3.7 @Future注解 被注解的元素必须为未来的一个时间,并且类型为java.util.Date。

  4 长度校验 4.1 @Size注解 被注解的元素的长度必须在指定范围内,并且类型为String,Array,List,Map。

  4.2 @Length注解 验证注解的元素值长度在min和max区间内 ,并且类型为String。

  5 格式校验 5.1 @Digits注解 验证注解的元素值的整数位数和小数位数上限 ,并且类型为float,double,BigDecimal。

  […]

龙生   27 Dec 2023
View Details

MyBatis Generator

Mybatis Generator简称 MBG,是一个专门为 MyBatis和 ibatis框架使用者提供的代码生成器。也可以快速的根据数据表生成对应的pojo类、Mapper接口、Mapper文件,甚至生成QBC风格的查询对象。

一般在项目中,根据MyBatis Generator的XML配置文件设置生成简单的CRUD,但是复杂的查询或者有关关联的操作还是需要我们写SQL完成。

龙生   27 Dec 2023
View Details

Java去除完全闭合html标签、去除部分未闭合的html标签的几种方式

完全闭合的标签推荐使用正则表达式,因为是轻量级的。
如果是从数据库中查出截断的html文本,最好使用Jsoup组件,支持去除未闭合的标签。

龙生   27 Dec 2023
View Details

通过freemarker与itext实现html转pdf

因一些合同、发票等单据需要生成pdf文档,并且审核通过后需给该pdf文档盖章,所以需要生成pdf的解决方案。

龙生   18 Dec 2023
View Details

js保留两位小数总结

var num =2.446242342;
num = num.toFixed(2); // 输出结果为 2.45

龙生   18 Dec 2023
View Details

k8s配置中的port、targetPort、nodePort和containerPort区别

port port是k8s集群内部访问service的端口,即通过clusterIP: port可以访问到某个service nodePort nodePort是外部访问k8s集群中service的端口,通过nodeIP: nodePort可以从外部访问到某个service。 targetPort targetPort是pod的端口,从port和nodePort来的流量经过kube-proxy流入到后端pod的targetPort上,最后进入容器。 containerPort containerPort是pod内部容器的端口,targetPort映射到containerPort。 ———————————————— 版权声明:本文为CSDN博主「满天星河」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/GuXiaoyan12/article/details/103751227

龙生   18 Dec 2023
View Details

使用sqlmap 对接口进行json格式参数传入

sqlmap进行注入时,如果接口post方式,body是json方式时,有2种方式 方式1:文件方式 可以通过burp suite 来抓 接口请求的数据,将数据保存到 文件中。 然后使用 sqlmap来执行注入,举例:

  当然也可以通过 postman 当中将请求转换成 http请求方式,将数据保存到文件中。 举例: 拷贝 请求内容,保存到文件 方式2:sqlmap --data参数 正常来说,请求参数是 -u 表示请求url地址。 –date 表示body参数。 注意 json结构体 前后 需要加入 单引号

  要求: 接口请求的参数都正常,可以正常进入 到 业务逻辑中。 在windows上跑命令时, 发现无法扫描出结果 结果排查了很久,通过抓包 发现使用此格式进行请求时:

  接口数据请求会被改掉,导致 服务端不能正常处理这个数据。 然后试了下 将json 数据进行转义,发现这个可以正常请求了。。。。:

  好嘞,接着我总不能一直在windows上跑吧,得放在linux跑,好,采用格式:

  发现跑不通,服务端又出错了。 接着使用 没有转义的结构体, 就又可以跑通了。。。 不过这个限制也有可能是 我们的服务端的问题,并不通用。 总结 post请求时如果发送json数据,2种方式: -r 文件 -u 地址 --data=’{}’ windows上跑,需要把 json 进行转义 from:https://blog.csdn.net/cagezxy/article/details/120570403

龙生   04 Dec 2023
View Details

SQLmap JSON 格式的数据注入

现在越来越多的网站开始使用 RESTFUL 框架,数据传输使用 JSON,那么这种情况下我们如何使用 SQLmap 进行自动化注入呢? 能使用 * 指定注入点吗? 先说结论:对于 JSON 数据的 SQL 注入使用 * 是错误的! 首先需要着重强调一下,网上有很多文章说可以使用*来指定注入点,但经过我的实测,SQLmap 发送的数据包会被强制转换为普通格式。 我们可以使用-vvv参数来查看 SQLmap 发送的测试数据:

如上图所示,可以看到使用*时,JSON 格式的 POST 数据被强制转换为普通格式,如此发送到服务端当然是没办法识别的。 正确的用法: -r 参数 对于 JSON 格式的注入,正确用法是: 将 BurpSuite 中的数据包保存到本地 sql.txt 2. 使用 -r 参数来注入,SQLmap 会自动识别 JSON 格式并发现注入点:

此时,如果使用-vvv参数查看,你会发现发送的测试数据包仍然是 JSON 格式: 这种用法才是正确的. 两个比较容易采坑的点 如果是 HTTPS站点,需要手动在 Host 字段后加上 443 端口,就像下面这样: 手动在 Host 字段添加 :443 端口 2. 如果要指定 POST 数据中 JSON 参数注入点,-p参数是不支持的,需要手动添加*: from:https://zhuanlan.zhihu.com/p/265405012

龙生   04 Dec 2023
View Details

渗透测试工具Burp Suite详解

Burp Suite 的安装 Burp Suite是一款集成化的渗透测试工具,包含了很多功能,可以帮助我们高效地完成对Web应用程序的渗透测试和攻击。 Burp Suite由Java语言编写,基于Java自身的跨平台性,使这款软件学习和使用起来更方便。Burp Suite不像其他自动化测试工具,它需要手工配置一些参数,触发一些自动化流程,然后才会开始工作。 Burp Suite可执行程序是Java文件类型的jar文件,免费版可以从官网下载。免费版的Burp Suite会有许多限制,无法使用很多高级工具,如果想使用更多的高级功能,需要付费购买专业版。专业版与免费版的主要区别有以下三点。 Burp Scanner 工作空间的保存和恢复 拓展工具,如Target Analyzer、Content Discovery和Task Scheduler burp suite就是一个抓包、改包工具 Burp的安装一共分为三步: 1、java的安装 2、环境变量的配置 3、运行burp burp的安装与基本使用 java环境 从java官网进行下载:搜索java jdk 安装完成之后,配置环境变量:将C:\Program Files\Java\jdk1.8.0_201复制到 点击确定 然后打开bin目录,再将目录C:\Program Files\Java\jdk1.8.0_201\bin复制到 点击确定 现在可以用cmd指令输入javac输入java也可以 出现如图情况,说明环境变量配置成功。 下载burp 下载地址:https://portswigger.net/burp 我这里安装的是exe文件 双击安装,一直next——》finish 打开——》I accept——》弹框选delete——》next——》start burp 免费版本没有Scanner Burp Suite入门 设置代理 burp suite代理工具是以拦截代理的方式,拦截所有通过代理的网络流量,如客户端的请求数据、服务端的返回信息等。burp suite主要拦截HTTP和HTTPS 写协议的流量,通过拦截,burp以中间人的方式对客户端的请求数据、服务端的返回信息做各种处理,以达到安全测试的目的。 在日常工作中,最常用的web客户端就是web浏览器,我们可以通过设置代理信息,拦截web浏览器的流量,并对经过burp代理的流量数据进行处理。burp运行之后,Burp Proxy默认本地代理端口为8080。如图: HTTP的代理 以Firedox浏览器为例: 打开菜单——》选项——》网络代理——》设置——》手动配置代理 127.0.0.1端口是8080 如上图所示,设置HTTP代理为127.0.0.1,端口为8080,与burp Proxy中的代理一致 端口在0~65535之间设置 手动代理:代理到本机,因为想让浏览器通过本机把流量发送到这个端口,再由burp监听到,把包拦下来(端口的选择要和burp一样) HTTP代理(因为抓的是http的包) 设置完后,burp就可以抓包了。 重新打开: SSL看做HTTPS就行了 HTTPS的代理 我们要怎么做才能抓HTTPS的包呢? 如果要抓HTTP的包要用HTTP代理 如果要抓HTTPS的包,要用HTTPS代理(SSL proxy) HTTP默认走的是80端口,HTTPS走的是443端口。两者端口不一样,要代理HTTPS就一定要用SSL去代理 设置完代理就可以了吗?不行 HTTPS(S表示security),多添加了一套SSL层(在TCP和HTTP中间),作加密的。 burp suite有一个证书:http://burp/(输入的是http,所以一定要代理http 才可以访问http的网站,代理的是https就可以访问https的网站) 安装证书后就可以解密百度传回的数据 导入刚刚下载的证书 这个证书的名字叫PortSwigger CA 导入后弹出的弹框(选第一个也行,都选中也行) 导入这个证书就可以解密https协议里面的乱码数据了 现在抓一个百度的包吧! 若只设置了SSL proxy,能不能抓http是包?不能 因为没有代理http的,只代理了https的,SSL就理解为HTTPS,所有要抓http,要设置https代理。 总结:抓https的包 抓https就代理ssl,抓http就代理http […]

龙生   04 Dec 2023
View Details