java代码审计思维导图_SDL中fortify代码审计各种坑和处理办法

java代码审计思维导图_SDL中fortify代码审计各种坑和处理办
系统平台开发评估法
fortify扫描代码的前置问题:
1)在使⽤foritfy的过程中很多⼈会发现他在windows下默认使⽤gbk访问代码以及⽣成报告,这样会有好多乱码,其实解决⽅案很简单。
添加环境变量  JAVA_TOOL_OPTIONS  这个变量的值为  -ding=UTF-8
或者在bin⽬录下的d 和 d ⽂件中第⼀个set环境变量之后,添加环境变量的值如图
set JAVA_TOOL_OPTIONS=-ding=UTF-8
这样就能保证主界⾯进程和⽣成报告的进程都使⽤utf-8编码(现在的项⽬极少数是gbk的了,基本都是utf-8编码的)
2)maven编译扫描的使⽤,很多⼈不是很明⽩,其实也很简单。⾸先在主⽬录下的plugins\maven⽬录中到maven-plugin-bin.zip这个压缩包并解压缩。直接运⾏install.bat这个脚本(前提是已经配置好了maven以及配置了maven国内的加速镜像),执⾏完脚本后可以使⽤bin⽬录下的d这个脚本进⾏编译扫描了,编译扫描请看下⾯的操作。
1: 代码审计的java⼯程编译问题
在代码审计中,你会发现有些⼯程的依赖jar包不完整或者物理隔离导致的java⼯程⽆法编译
最好的办法就是到编译通过的开发⼯程师把他的maven仓库完整的复制到进⾏代码审计的电脑中的maven仓库⽂件夹中
例如:
那就把开发⼯程师的maven仓库⽂件夹覆盖到图⽚中路径的⽂件夹中
并且删掉⾥⾯所有的
_positories
这个⽂件(别问为什么,就这么⼲)
然后使⽤命令
mvn -o clean install
钴盐-o 这个参数代表离线模式,可以保证只在本地的maven仓库进⾏查依赖,这样就能保证编译通过了
中国电镀信息网这样编译通过后,fortify扫描就是能按照bin⽬录中d的maven编译式扫描⽅式进⾏扫描,下⾯看操作步骤:
下图这⾥选中这个enable选项也是要仔细观察是不是⼯程的主l⽽不是⼦⽬录中的l,⼦⽬录中的l是编译不能通过的
别忘记在扫描的⾃定义参数中使⽤mvn -o
如果扫描环境可以连接到maven仓库并且编译通过,则上述中复制maven⽂件夹、删除_positories⽂件和使⽤-o参数编译的操作就可以不使⽤了,直接就可以编译扫描
公民与法2:代码审计的问题管理和追溯问题unixlinux
代码审计必须追溯到⼈,也就是代码最后提交⼈,只有这样才能保证代码的持续改进,之前遇到过由
项⽬组组长管理代码改进,⼀旦出现项⽬进度很赶,账号公⽤,最终项⽬的修改⼈就会出现混乱,互相推诿扯⽪。
gitlab的代码提交⼈是依照邮箱为追溯标准的
⾸先打开git gui的选项
关注⼀个如下图的地⽅⼀个就是编码要改成utf8 还有就是gitlab所记录的提交⼈以邮箱为准:
这⾥的邮箱也就是命令⾏⾥⾯的
git config --ail "zhangsan2@qq"
gitlab中记录的代码提交⼈与控制⾯板中的凭据管理器中的凭据是⽆关的
然后⽤⾃动化的代码审计⼯具进⾏分析后,就能把问题定责到个⼈,保证代码审计的落地。
但是同时在开发过程中要注意⼀个细节:
如下图参照gitlab在合并代码的时候不要选择合并提交, 如果合并提交的话代码提交⼈会变成合并⼈的⾝份,导致代码实际提交⼈的记录⽆法追溯
3. git⼏个要统⼀化的参数避免隐蔽的坑
# 保证长⽂件名可⽤
git config --global core.longpaths true
# 使⽤core.autocrlf 保证不同操作系统的换⾏符号兼容性
# ide能⾃适应换⾏符 所以最好把代码的换⾏进⾏统⼀化
git config --global core.autocrlf input
4.fortfiy的⾼级java代码扫描需要把所有的maven依赖都导出来,⽽且要做到jar包⼀个不多⼀个不少。可以使⽤以下的脚本把⼯程中的dependency导出到集中的⼀个⽂件夹中,设置为fortify⾼级扫描的classpath,以下d得代码就是C:\Java\MVN_REPO中所有的jar包导出到C:\Java\mvn⽬录中。在使⽤雳鉴扫描代码时保证代码审计的时候能到对应的依赖jar包上传到雳鉴服务器⾥,也可以使⽤下⾯的脚本。
@echo off
set work_path=C:\Java\MVN_REPO
cd %work_path%
for /R %work_path% %%a in (*.jar) do (
copy "%%a" C:\Java\mvn
)
区间套定理pause
如果有些⼈提供的代码没有删除target⽬录,可以使⽤以下的bat删掉⼯程⽬录中所有的target⽬录以避免扫到垃圾代码。@echo off
for /r /d %%i in (target) do (
echo %%i
rd /s /q %%i
)
然后这样使⽤foritfy
打开后最好设计如下的⽬录结构,其中maven2⽬录就是我们⽤脚本导出的jar包
当然单纯的这样⽬录设计是不够的,还需要将maven2这个⽬录设置为classpath⽬录
点击next后,对扫描的规则可以做设置
剩下就执⾏扫描就可以了
⽣成报告的模式如下才能和ide中⼀致
禁⽌转载!

本文发布于:2024-09-22 23:23:35,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/256547.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:代码   扫描   编译   审计
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议