git配置、gitLab-ci自动配置、Charles抓包
git配置、gitLab-ci自动部署配置、cors跨域、登录验证码、Charles抓包
git配置及提交
命令行
- 1 设置用户名
git config --global user.name "username"
- 2 设置邮箱 (没有双引号)
git config --global user.email useremail@qq.com
- 3 . 查看用户名和密码
git config user.name
git config user.email
git clone 项目仓库
git checkout -b 你的分支
# 清理分支下的文件,一般仅保留.git目录和业务文件
tar -xzvf jhit-admin-vue3.tar.gz . # 解压
mv jhit-admin-vue3/* your-project-name/ # 将框架文件拷贝到项目目录
cd your-project-name
# 修改配置、移除测试文件、测试无误
git add --all
git commit -m "feat: 初始化项目"
git push -u origin 你的分支
git默认使用http/2.0协议,而github还是http/1.1 。
- git config --global http.version HTTP/1.1
分支
- 分支管理
- 由项目经理创建master及develop分支(省人大及地市人大项目上线保护分支可能有差异)。
- gitlab-ci使用develop分支。
- 开发功能及bug修复均创建个人分支,发布测试环境由开发人员自行将个人分支合并至develop分支 上线由开发人员发起Merge Request请求,项目经理进行code review,再合并。
- 分支命名
- 固定分支:master、develop
- 个人功能分支:feat-功能名称-姓名缩写
- 已上线功能BUG修复分支:fix-功能名称-姓名缩写
- 星火模型 提问:git分支命名+功能需求
代码提交
- 注释清晰,通过注释可以明确提交的代码完成的功能或修复的bug
- 为便于管理及项目统计,提交分为功能和bug修复(feat及fix)
- 若gitlab有相关issues,提交记录关联issues
commit with idea
注:必须安装插件、使用以上方式提交、否则changelog无法分析
提交示例
- bug修复(本项目issues)
- fix: 分页接口,退回留言无法查看的bug修复 #4
- 功能开发 (跨项目issues)
- feat: 流转明细提交步骤增加下一步审核人列表。#http://127.0.0.1:8433/shao
gitLab-ci、Dockerfile配置
文件可以从其他已部署项目中复制,添加完成后项目结构如下:
注:gitlab仓库目录与代码结构必须一致,否则ci不会生效
.gitlab-ci.yml配置
主要分为打包和部署两部分,配置文件中涉及的maven和docker命令自行百度
1. 指定部署服务器
注:可根据实际服务器内存占用情况选择
2. 指定打包和部署分支
# develop分支有变化时,自动打包和部署
only:
refs:
- develop
3、指定部署项目
一般情况是gitlab的项目名称,避免自定义时和其他项目冲突
4. 配置端口,文件上传路径等
# 主机端口:容器端口
# 主机端口不可和其他服务重复
-p 8002:8002
# 主机目录:容器目录
# 统一使用以下格式,最后一级目录以人大及项目名称区分,此路径即application.yaml配置的文件上传路径
-v /home/jhit/file/storage/sxrd-jzmdm:/home/jhit/file/storage/sxrd-jzmdm
# 主机和容器的时间映射,保持容器和主机时间一致
-v /etc/localtime:/etc/localtime
5. 配置容器标签
## 其中jhit_128标签,用于清理失效的容器
-d ${CI_PROJECT_NAME}:jhit_128-${CI_PIPELINE_ID}
variables: PRODUCTION_REMIND_TOTP: "http://188.3.10.92:9012/send/gitlab/zjrd-totp" PRODUCTION_GET_TOTP: "http://188.3.10.92:9012/send/code/zjrd-totp" stages: - package - deploy test-package: image: maven:3.8.5-openjdk-11 stage: package tags: - juhua cache: key: ${CI_PIPELINE_ID} paths: - target/ script: - echo "Packaging application..." - mvn clean && mvn -Dfile.encoding=UTF-8 -DskipTests=true install && mvn -Dfile.encoding=UTF-8 -DskipTests=true package - echo "Application successfully packaged." only: refs: - master test-deploy: image: docker:latest stage: deploy tags: - juhua cache: key: ${CI_PIPELINE_ID} paths: - target/ script: - echo "Deploying application..." - docker build . -t ${CI_PROJECT_NAME}:juhua-${CI_PIPELINE_ID} - docker stop ${CI_PROJECT_NAME} && docker rm ${CI_PROJECT_NAME} - docker run --name ${CI_PROJECT_NAME} -p 8044:8044 -v /home/web-files/${CI_PROJECT_NAME}:/home/web-files/${CI_PROJECT_NAME} -d ${CI_PROJECT_NAME}:juhua-${CI_PIPELINE_ID} - echo "Application successfully deployed." only: refs: - master
Dockerfile配置
# 该镜像需要依赖的基础镜像 FROM openjdk:11 # 命令在下面的文件夹下运行 WORKDIR /home # 复制文件 COPY /target/digital-0.0.1-SNAPSHOT.jar digital-0.0.1-SNAPSHOT.jar # 声明服务运行在8044端口 EXPOSE 8044 # 指定docker容器启动时运行jar包 ENTRYPOINT ["java","-Xms128m", "-Xmx128m", "-XX:MaxMetaspaceSize=128m", "-jar", "digital-0.0.1-SNAPSHOT.jar", "--spring.profiles.active=dev"] # 指定维护者的名字 MAINTAINER kjj
安全漏洞修复
cors跨域资源共享(中危)
- 存在问题:Origin为*和Credentials为true
- 风险描述:任何网站都可以发出使用用户凭据发出的请求,并读取对这些请求的响应
- 修复方法:修改项目中的CorsFilter过滤器
String originHeaderValue = httpServletRequest.getHeader(HttpHeaders.ORIGIN);
log.debug("origin:" + originHeaderValue);
// 生产环境(根据环境配置Origin,测试环境为了方便本地调试依然全部放行)
if(appProperties.isDocDisabled()){
// allowDomains中配置可以放行的域名
if (Arrays.asList(appProperties.getAllowDomains()).contains(originHeaderValue)) {
httpServletResponse.setHeader(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN, originHeaderValue);
}
} else {
httpServletResponse.setHeader(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN, "*");
}
注:域名配置需要考虑全,第三方需要调用的也需要放行
private String[] allowDomains = {"https://....", "https://......"};
登陆验证缺陷 (中危)
- 存在问题:登录处缺少验证码
- 风险描述:存在验证缺陷漏洞,容易造成被爆破的风险。
- 修复方法,添加动态验证码(短信或者图片验证码),由后端进行校验,或者取消登录页面,只能通过浙政钉扫码登录
Charles抓包使用指南
Charles是一个HTTP代理/ HTTP监视器/反向代理,使开发人员能够查看各种设备和Internet之间的所有HTTP和SSL / HTTPS流量。这包括请求,响应和HTTP标头(包含cookie和缓存信息)。
支持Linux、macOS、Windows平台
代理服务器:
提供代理服务的电脑系统或其它类型的网络终端称为代理服务器英语:Proxy Server。一个完整的代理请求过程为:客户端首先根据代理服务器所使用的代理协议,与代理服务器创建连接,接着按照协议请求对目标服务器创建连接、或者获得目标服务器的指定资源(如:文件)。在后一种情况中,代理服务器可能对目标服务器的资源下载至本地缓存,如果客户端所要获取的资源在代理服务器的缓存之中,则代理服务器并不会向目标服务器发送请求,而是直接传回已缓存的资源。一些代理协议允许代理服务器改变客户端的原始请求、目标服务器的原始响应,以满足代理协议的需要。
前后端开发debug
检查网页数据、接口数据是否按预期响应;检查cookie、请求头、响应头、请求body、响应body。
断点调试:修改请求头、修改请求参数。
信息收集和渗透
检查其他感兴趣应用查看它们的网址、应用的接口数据、图片数据等,起到网络安全里的信息搜集和渗透。
安全测试
修改referer测试跨站请求、修改token测试水平越权等等,不多赘述。有兴趣自己了解web应用安全相关知识。
工具栏介绍:抓包工具Charles,最全安装、工具栏介绍,及抓包实战教程 - 知乎 (zhihu.com)
安装
Charles的https抓包方法及原理/下载ssl/http证书 - 陈晓猛 - 博客园 (cnblogs.com)
1、Charles抓包配置
菜单->Proxy->Proxy Settings:设置http代理端口
2、查看本机ip
此时安装了charles的pc机器可以被认为是一台代理服务器。我们打开菜单->Help->Local IP Addresses
我们可能有多个网络适配器,找到需要抓包的设备和本机处于同一网段下的ip并记录下来
3、移动设备http抓包
我们以iOS 15为例。Android设备同理。注意,某个设备首次通过charles抓包需要点击allow允许一下。
打开:设置->无线局域网->已连接的Wi-Fi详细信息->配置代理->手动
配置好之后,打开需要抓包的应用即可。可以看到,http协议的数据可以直接显示出来,https协议的数据被上锁显示不出来。
4、https抓包配置根证书
HTTPS 协议是由HTTP 加上TLS/SSL 协议构建的可进行加密传输、身份认证的网络协议,主要通过数字证书、加密算法、非对称密钥等技术完成互联网数据传输加密,实现互联网传输安全保护。
故而如果我们要抓包https站点,必须在移动端设备上安装Charles提供的数字根证书,安装后再信任该证书,才能监听解锁https站点的数据。
Charles证书下载
菜单->Help->SSL Proxying->Install Charles Root Certificate on a Mobile Device or Remote Browser
其实就是在移动设备上打开浏览器,地址栏输入chls.pro/ssl,会自动下载根证书。
安装Charles根证书
iPhone手机:设置->VPN与设备管理->配置描述文件->安装刚刚下载的证书
Android手机:下载之后直接点安装就行了
信任Charles根证书
iPhone手机:设置-关于本机>证书信任设置->针对根证书启用完全信任
Android手机:同理类似
5、移动端设备https抓包实战
选择想要抓包的站点->开启focus(非必需)->Enable SSL Proxy
查看请求头、响应头、响应文本等等,非常方便
6、断点调试
右键url->Breakpoints->被抓包的设备重新发起请求->编辑请求参数->Exceute
7、本机网络http/https抓包监听
mac:菜单->Proxy->macOS Proxy
windows:菜单->Proxy->windows Proxy
同理,要在本机抓包https,同样需要下载Charles根证书、安装根证书、信任根证书。具体可在菜单->Help->SSL Proxying里查看
常见问题
1、正确配置好代理ip和端口,打开应用没反应或移动设备无法上网
- 尝试重新开关Wi-Fi按钮
- 确保手机和本机设备能正常通信
- 确保网络防火墙端口能正常联通
2、极个别设备会出现无法抓包问题
- 尝试重启Charles,重启android设备,移除已经信任allow的ip(菜单->Proxy->Access Controll Setting)
更多推荐
所有评论(0)