技术标签: JAVA Fortify扫描 Fortify安全扫描 静态代码扫描Fortify
移植性缺陷:地区依赖比较(代码质量,控制流)
if (tag.toUpperCase().equals("SCRIPT")){
return null;
}
if (tag.toUpperCase(Locale.ENGLISH).equals("SCRIPT")){
return null;
}
if (tag.equalsIgnoreCase("SCRIPT")){
return null;
}
访问说明符操作(输入验证和表示,语义)
field.setAccessible(true);
修改为使用spring提供的类
import org.springframework.util.ReflectionUtils;
ReflectionUtils.makeAccessible(field);
糟糕的风格:值从未使用(代码质量,结构)
构建错误配置:外部Maven依赖库(环境,配置)
这一 Maven 编译脚本依赖于外部数据源,这会导致攻击者能够将恶意代码插入最终产品中,或者控制编译计算机。
代码正确性:字节数组到字符串的转换(代码质量,语义)
public class ByteSerializerUtils extends JsonSerializer<byte[]>{
@Override
public void serialize(byte[] bytes, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
jsonGenerator.writeString(new String(bytes));
}
}
修改为
new String(bytes,"UTF-8")
代码正确性:错误字符串的比较(代码质量,结构)
死代码:表达式总是假的(代码质量,结构)
死代码:未使用的方法(代码质量,结构)
拒绝服务:解析Double(输入验证和表示,数据流)
HTML5: 过于宽松的CORS策略(封装、语义)
程序会定义过于宽松的跨源资源共享 (CORS) 策略。
J2EE Bad Practices:剩余的调试代码(封装,结构)
缺少对Null的检查(API滥用,控制流)
密码管理:密码在评论中(安全功能,结构)
以明文形式在系统或系统代码中存储密码或密码详细信息可能会以无法轻松修复的方式危及系统安全。
糟糕的错误处理:过于宽泛的捕获(错误,结构性)
不要捕获广泛的异常类,例如exception、Throwable、Error或RuntimeException,除非是在程序或线程的最高层。
访问控制:数据库(安全特性,数据流)
Rather than relying on the presentation layer to restrict values submitted by the user, access control should be handled by the application and database layers. Under no circumstances should a user be allowed to retrieve or modify a row in the database without the appropriate permissions. Every query that accesses the database should enforce this policy, which can often be accomplished by simply including the current authenticated username as part of the query.
访问控制应该由应用程序层和数据库层处理,而不是依赖表示层来限制用户提交的值。在任何情况下,都不允许用户在没有适当权限的情况下检索或修改数据库中的行。每个访问数据库的查询都应该执行此策略,通常只需将当前经过身份验证的用户名作为查询的一部分即可完成此策略。
报头操作(输入验证和表示,数据流)
空引用(代码质量,控制流)
未发布的资源:流(代码质量,控制流)
风险类型 | 原因 |
---|---|
Code Correctness: Erroneous String Compare | 字符串的对比使用错误方法 |
Cross-Site Scripting | Web浏览器发送非法数据,导致浏览器执行恶意代码 |
Dead Code: Expression is Always true | 表达式的判断总是true |
Dead Code: Unused Method | 没有使用的方法 |
HTTP Response Splitting | 含有未验证的数据 |
J2EE Bad Practices: Leftover Debug Code | 在部署的Web应用程序中建立了一些想象不到的入口点 |
Missing Check against Null | 有可能返回了null |
Poor Error Handling: Empty Catch Block | 有些异常备忽略,可能会导致程序无法发现意外状况 |
Poor Error Handling: Overly Broad Catch | Catch块可以处理的异常种类比较多,往往会过多的考虑不应该在此位置处理各种问题或故障而困扰 |
Poor Error Handling: Overly Broad Throws | Throws了一个过于笼统的异常,从而使调用者很难处理和修复发生的错误 |
Poor Error Handling: Return inside Finally | 可能会导致异常丢失 |
Poor Logging Practice: Use of a System output stream | 使用system.out或system.err不是专门的日志记录工具,会导致难以监控程序的运行状况 |
Poor Style: Value Never Read | 没有使用赋给变量的值 |
System Information Leak: HTML Comment in JSP | 注释所包含的任何信息都有可能帮助攻击者了解系统并制定相应的攻击方案 |
Unchecked Return Value | 忽略了某些方法的返回值 |
J2EE Bad Practices: Threads | 禁止在某些环境下使用Web应用程序的线程管理 |
JavaScript Hijacking: Ad Hoc Ajax | 使用Javascript符号传递敏感数据会存在漏洞 |
Denial of Service | 读取文件可能会使攻击者造成程序崩溃 |
System Information Leak | printstackTrace()来提示系统数据有助于攻击者制定攻击计划 |
Insecure Randomness | 产生的随机数不能抵挡加密攻击 |
Null Dereference | 引用了空指针 |
Unreleased Resource: Streams | 无法成功释放FileInputStream()函数分配的系统资源 |
Redundant Null Check | 引用了空指针 |
Dead Code: Unused Field | 没有使用的字段 |
Axis 2 Misconfiguration: Debug Information | 借助SOAP Monitor模块,攻击者可截取SOAP信息流 |
Poor Error Handling: Program Catches nullpointerexception | 可捕获NullPointException,通常来说不是一个好方法 |
Poor Style: Confusing Naming | 重复命名 |
Dead Code: Expression is Always false | 表达式的判断总是false |
J2EE Misconfiguration: Incomplete Error handing | 配置默认的错误页面,来处理那些未被捕获的异常 |
Path Manipulation | 攻击者可控制File路径参数,借此访问或修改其他受保护的文件 |
Poor Logging Practice: Logger Not Declared static final | 应该将日志记录器声明为固定且最终的记录器 |
Poor Style: Redundant Initialization | 没有使用赋给变量的值 |
Code Correctness: null Argument to equals() | 表达式obj.equals(null)将总是false |
Privacy Violation:Heap Inspection | |
J2EE Bad Practices:Leftover Debug Code | |
Poor Error Handling:Overly Broad Throws | |
Password Management Password in Configuration File | |
Build Misconfiguration:External Maven Dependency Repository |
#include &lt;cstdio&gt;#include &lt;iostream&gt;using namespace std;long long a[55] = {0,3,6};long long b[55] = {0,0,0,6};long long int fun(...
爸爸妈妈 - 李荣浩词:李荣浩 曲:李荣浩我曾经很想知道 同样的话要说多少次才好 那些再三强调的老套 长大了才知道是不是需要 很少主动拥抱 就算为了自豪 腼腆的笑 要强而又低调 穿的布料 我赠送的外套 过时也不丢掉还是一样 太多理所应当让人觉得平常 不算太小的房 冬暖夏凉的那间放着我的床 歌颂这种平凡 ,一两句唱不完 恩重如山 听起来不自然 回头去看 这是说了谢谢
Python入门从哪开始,90%以上的书上都是这样讲的:先介绍 Python 的基本语法规则、list、dict、tuple 等数据结构,然后再介绍字符串处理和正则表达式,介绍文件等IO操...
我相信使用了QPainter,但我不知道如何将两者结合起来。QLabel * imageLabel = new QLabel();QImage image(" c://image.png");imageLabel-> setPixmap(QPixmap :: fromImage(image));imageLabel-> setAlignment(Qt :: AlignCenter);Q...
tomcat8官网下载安装,配置环境以及启动,亲测有效,有疑问可留言
为什么80%的码农都做不了架构师?>>> ...
题目题目描述As everyone knows, bears love fish. But Mike is a strange bear; He hates fish! The even more strange thing about him is he has an infinite number of blue and red fish.He has marked nn distinc...
https://www.cnblogs.com/chenfulin5/p/6797756.html一、下载源码下载canutils和libsocketcanhttps://git.pengutronix.de/cgit/tools/canutils/ 这个地址git下来的有点问题。二、先编译libsocketcan//解压tar -jxvf libsocketcan-0.0.11.tar.bz2c...
#include <stdio.h>#define MAXCHAR 101 /*最大允许字符串长度*/int char_to_num(char ch); /*返回字符对应的数字*/ char num_to_char(int num); /*返回数字对应的字符*/long source_to_decimal(char temp[], int source); /*返回由原数转换成的10进制数*/int decimal_to_object(char temp[], long dec
0x00000001 蓝屏意味着APC状态指数存在不匹配。蓝屏错误代码0x00000001也可能在同一蓝色屏幕上显示“APC_INDEX_MISMATCH”。 0x00000002 这种蓝屏并不常见。蓝屏错误代码0x00000002也可能在同一蓝色屏幕上显示“DEVICE_QUEUE_N...
1、用u-boot打印内核信息,用u-boot读内存命令把flash上的内核信息打印出来启动u-boot,用mtd查看内核存储在nand flash的地址0x00060000处用nand dump 60000查看nand flash上地址为60000开始的数据,其中dump是指以16进制显示,一行是16字节,前面4行是头部信息,共64字节。开始是内核信息,打印出来是 e1 a0
<!-- ******************** 模糊查询的常用的3种方式:********************* --> <select id="getUsersByFuzzyQuery" parameterType="User" resultType="User"> select <include refid="columns"/&g...