文档彩票走势图>>自动化测试工具Parasoft功能对比>>Parasoft功能对比之Java测试篇(七):Parasoft VS Fortify
Parasoft功能对比之Java测试篇(七):Parasoft VS Fortify
本文是自动化测试工具Parasoft功能对比之Java测试篇之一,将介绍Parasoft Jtest和同类工具Fortify的功能对比,哪一款更强大一目了然。
Jtest 启用规则(136条) | Fortify | CWE说明 | 规则分类 | |||
合并CWE、PCI DATA的规则集并添加了部分重要规则 | 严重等级 | 是否有对应规则 | 对应的规则名称 | 是否在CWE中有要求 | ||
BD.CO.ITMOD | 不要在遍历集合时修改它 | 1 | 无 | 无 | 否 | 缺陷预防 |
BD.EXCEPT.NP | 避免空指针 | 1 | 有 |
API
Abuse-Missing Check against Null Code Quality-Null Dereference Code Quality-Redundant Null Check |
是 | 缺陷预防 |
BD.PB.ARRAY | 避免访问数组越界 | 1 | 无 | 无 | 是 | 缺陷预防 |
BD.PB.ARRAYINP | 避免输入未经验证的数组索引 | 1 | 有 |
Code
Quality--Code Correctness: Erroneous Negative Value Code Quality--Code Correctness: Erroneous Zero Value |
是 | 缺陷预防 |
BD.PB.CC | 避免总是为相同的值的条件 | 2 | 有 |
Code
Quality-Dead Code: Expression is Always false Code Quality-Dead Code: Expression is Always true |
是 | 缺陷预防 |
BD.PB.SWITCH | 避免不能到达的分支 | 2 | 无 | 无 | 否 | 缺陷预防 |
BD.PB.ZERO | 避免除零错误 | 1 | 无 | 无 | 是 | 缺陷预防 |
BD.RES.FREE | 不要使用已释放的资源 | 1 | 无 | 无 | 是 | 缺陷预防 |
BD.RES.LEAKS | 确保资源已释放 | 1 | 有 | Code Quality-Unreleased Resource: Streams | 是 | 缺陷预防 |
BD.SECURITY.CUSTOM | 防止安全漏洞(自定义规则) | 1 | 无 | 无 | 否 | 缺陷预防 |
BD.SECURITY.SENS | 防止敏感数据的曝露 | 1 | 有 |
Encapsulation-System
Information Leak Encapsulation-System Information Leak: Apache Axis Encapsulation-System Information Leak: Apache Axis 2 Encapsulation-System Information Leak: Overly Broad SQL Logging |
是 | 缺陷预防 |
BD.SECURITY.TDCMD | 防止命令注入 | 1 | 有 | Input Validation and Representation-Command Injection | 是 | 缺陷预防 |
BD.SECURITY.TDDIG | 防止 Jakarta Digester 注入 | 1 | 无 | 无 | 是 | 缺陷预防 |
BD.SECURITY.TDENV | 防止环境注入 | 1 | 无 | 无 | 是 | 缺陷预防 |
BD.SECURITY.TDFILES | 防止文件内容注入 | 1 | 无 | 无 | 否 | 缺陷预防 |
BD.SECURITY.TDFNAMES | 防止文件名注入 | 1 | 有 |
Input
Validation and Representation-Path Manipulation Input Validation and Representation-Often Misused: File Upload Input Validation and Representation-Dangerous File Inclusion |
是 | 缺陷预防 |
BD.SECURITY.TDJXPATH | 防止 JXPath 注入 | 1 | 无 | 无 | 是 | 缺陷预防 |
BD.SECURITY.TDLDAP | 防止 LDAP注入 | 1 | 有 |
Input
Validation and Representation-LDAP Injection Input Validation and Representation-LDAP Manipulation |
是 | 缺陷预防 |
BD.SECURITY.TDLIB | 防止 Library 注入 | 1 | 有 | Input Validation and Representation-Process Control | 是 | 缺陷预防 |
BD.SECURITY.TDLOG | 防止日志伪造 | 1 | 有 | Input Validation and Representation-Log Forging | 是 | 缺陷预防 |
BD.SECURITY.TDNET | 防止网络资源注入 | 1 | 有 | Input Validation and Representation-Resource Injection | 是 | 缺陷预防 |
BD.SECURITY.TDRESP | 防止HTTP响应拆分 | 1 | 有 | Input Validation and Representation-HTTP Response Splitting | 是 | 缺陷预防 |
BD.SECURITY.TDRFL | 防止映射注入 | 1 | 有 | Input Validation and Representation-Unsafe Reflection | 是 | 缺陷预防 |
BD.SECURITY.TDSQL | 防止SQL注入 | 1 | 有 |
Input
Validation and Representation-SQL Injection Input Validation and Representation-SQL Injection: JDO Input Validation and Representation-SQL Injection: Persistence Input Validation and Representation-SQL Injection: iBatis Data Map |
是 | 缺陷预防 |
BD.SECURITY.TDXML | 防止XML数据注入 | 1 | 有 | Input Validation and Representation-XML Injection | 是 | 缺陷预防 |
BD.SECURITY.TDXPATH | 防止XPath注入 | 1 | 有 | Input Validation and Representation-XPath Injection | 是 | 缺陷预防 |
BD.SECURITY.TDXSS | 防止 XSS 漏洞 | 1 | 有 |
Input
Validation and Representation-Cross-Site Scripting: DOM Input Validation and Representation-Cross-Site Scripting: External Links Input Validation and Representation-Cross-Site Scripting: Persistent Input Validation and Representation-Cross-Site Scripting: Poor Validation Input Validation and Representation-Cross-Site Scripting: Reflected |
是 | 缺陷预防 |
BD.TRS.LOCK | 不要抛弃未释放锁 | 1 | 无 | 无 | 是 | 缺陷预防 |
BD.TRS.TSHL | 在持有锁的同时,不要使用blocking方法 | 1 | 无 | 无 | 是 | 缺陷预防 |
EJB.AMSC | 不要访问或修改安全性配置对象。 | 2 | 无 | 无 | 是 | 安全 |
EJB.DPANY | 避免EJB方法的授权访问权限为 'ANYONE' 角色 | 3 | 有 | Environment-J2EE Misconfiguration: Weak Access Permissions | 是 | 安全 |
EJB.EJB3.PERMIT | 避免EJB 3没有安全注释的方法 | 3 | 无 | 无 | 是 | 安全 |
EJB.LNL | 避免在 Bean 类中加载本地库文件。 | 2 | 无 | 无 | 否 | 安全 |
EJB.SMSN | 在 EJB 中不要设置或创建一个新的 SecurityManager | 2 | 无 | 无 | 是 | 安全 |
GC.FCF | 从 'finalize()' 中调用 'super.finalize()'。 | 1 | 有 | API Abuse-Code Correctness: Erroneous finalize() Method | 是 | 规则规范 |
GC.FM | 不要使用'finalize ()'方法去注销监听。 | 1 | 无 | 无 | 否 | 安全 |
GC.IFF | 在 'finalize()' 方法的 "finally" 模块中调用 'super.finalize()'。 | 1 | 无 | 无 | 否 | 规则规范 |
GC.NCF | 不要明确地调用 'finalize ()'。 | 1 | 有 | API Abuse-Poor Style: Explicit Call to finalize() | 是 | 安全 |
HIBERNATE.CHS | 在 "finally" 块中关闭 Hibernate 会话 | 2 | 无 | 无 | 否 | 规则规范 |
HIBERNATE.CSF | 关闭所有 'SessionFactory' 对象。 | 3 | 无 | 无 | 是 | 规则规范 |
HIBERNATE.LHII | 避免在 'log4j.properties' 文件中记录与 Hibernate 相关的为 'info' 级别的敏感信息。 | 3 | 有 | Encapsulation-System Information Leak: Overly Broad SQL Logging | 否 | 安全 |
HIBERNATE.UPWD | 避免在 'web.xml' 文件中保存未加密的 Hibernate 用户名和密码。 | 1 | 有 |
Environment-Password
Management: Password in Configuration File Security Features-Password Management: Hardcoded Password |
是 | 安全 |
INTER.SEO | 避免调用不允许指定字节码选项的方法和构造函数 。 | 3 | 无 | 无 | 否 | 规则规范 |
JDBC.CDBC | 在 "finally" 块中关闭 JDBC 连接 | 1 | 有 | Database-Unreleased Resource | 是 | 安全 |
JDBC.RRWD | 在 "finally" 块中关闭 JDBC 资源 | 1 | 无 | 无 | 是 | 安全 |
OPT.CCR | 在 "finally" 代码块关闭所有的 "java.io.Closeable" 资源 。 | 3 | 无 | 无 | 是 | 规则规范 |
OPT.CIO | 在"finally"代码块中关闭输入输出资源 | 1 | 无 | 无 | 是 | 规则规范 |
OPT.SI | 如果可以,声明成员类为"static"。 | 1 | 无 | 无 | 否 | 规则规范 |
OPT.USC | 为常量字符串使用'String'而不是'StringBuffer' | 1 | 无 | 无 | 否 | 规则规范 |
OPT.USCL | 避免有问题地使用non-short-circuit逻辑。 | 1 | 无 | 无 | 否 | 规则规范 |
PB.CUB.RMO | 避免引用易变的字段 | 3 | 无 | 无 | 是 | 缺陷预防 |
PB.CUB.TOCTOU | 避免 Time-of-check Time-of-use (TOCTOU) 竞争条件 | 1 | 无 | 无 | 是 | 缺陷预防 |
PB.LOGIC.FLRC | 避免无限递归方法调用 | 1 | 无 | 无 | 是 | 缺陷预防 |
PB.NUM.AIC | 避免整型类型到浮点数据类型的强制转换. | 3 | 无 | 无 | 是 | 缺陷预防 |
PB.NUM.BBDCC | 不要传递浮点值给 'BigDecimal'构造函数。 | 3 | 无 | 无 | 否 | 缺陷预防 |
PB.NUM.BSA | 不要使用[0 31]范围外的整型作为移位操作的位数 | 1 | 无 | 无 | 是 | 缺陷预防 |
PB.NUM.CACO | 避免在可能会导致溢出的情况下使用符合赋值操作符 | 3 | 无 | 无 | 是 | 缺陷预防 |
PB.NUM.CLP | 不要把原始数据类型转换为较低的精度 | 2 | 无 | 无 | 是 | 缺陷预防 |
PB.NUM.DCF | 不要比较浮点类型 | 3 | 无 | 无 | 否 | 缺陷预防 |
PB.NUM.FPLI | 不要使用浮点类型变量作为循环的索引. | 1 | 无 | 无 | 否 | 缺陷预防 |
PB.NUM.ICO | 避免导致溢出或NaN的计算 | 2 | 无 | 无 | 是 | 缺陷预防 |
PB.NUM.IDCD | 不要将整数相除的结果赋值给一个浮点变量 | 1 | 无 | 无 | 是 | 缺陷预防 |
PB.NUM.IMOF | 避免整型的乘法结果转换成 "long" | 3 | 无 | 无 | 是 | 缺陷预防 |
PB.NUM.IOF | 当可能会溢出时使用无符号右移而不是除. | 3 | 无 | 无 | 是 | 缺陷预防 |
PB.NUM.NIA | 不要用负数来初始化数组的维数 | 1 | 有 |
Encapsulation-Unsafe
Mobile Code: Unsafe Array Declaration Code Quality--Code Correctness: Erroneous Negative Value Code Quality--Code Correctness: Erroneous Zero Value |
否 | 缺陷预防 |
PB.NUM.UBD | 如果需要确切的结果的话不要使用"float"和"double" | 3 | 无 | 无 | 否 | 缺陷预防 |
PB.NUM.UCM | 避免传递整形值给'Math.round()' | 3 | 无 | 无 | 否 | 缺陷预防 |
PB.RE.ACTI | 不要添加一个集合到它自己 | 1 | 无 | 无 | 否 | 缺陷预防 |
PB.RE.CAI | 参数被在数组访问使用前总是检查 | 4 | 无 | 无 | 是 | 缺陷预防 |
PB.TYPO.WT | 确保传递给ava包装器类的参数没有输写错误 | 1 | 无 | 无 | 否 | 缺陷预防 |
PB.USC.CC | 避免总是等于常量值的条件表达式 | 1 | 有 |
Code
Quality-Dead Code: Expression is Always true Code Quality-Dead Code: Expression is Always false |
否 | 缺陷预防 |
PORT.NATV | 不要使用用户自定义的"native"方法。 | 3 | 有 | Input Validation and Representation-Unsafe JNI | 是 | 安全 |
PROPS.PLAIN | 密码信息不应以明文形式包括在属性文件中 | 3 | 有 |
Security
Features-Password Management Environment-Password Management: Password in Configuration File |
是 | 安全 |
SECURITY.BV.DSSM | 不要在'main'函数外设置自定义安全管理。 | 2 | 无 | 无 | 是 | 安全 |
SECURITY.BV.ENFL | 确保所有的敏感方法调用被记录 | 2 | 无 | 无 | 否 | 安全 |
SECURITY.EAB.LDP | 限制每个类调用"AccessController.doPrivileged"的次数。 | 4 | 无 | 无 | 是 | 安全 |
SECURITY.EAB.MPT | 不要直接将某些特定类型传递给用户指定的可变对象 | 3 | 无 | 无 | 是 | 安全 |
SECURITY.EAB.PCL | 在"privileged"代码块中限制行数 | 4 | 无 | 无 | 是 | 安全 |
SECURITY.ESD.CONSEN | 没有机密日志或敏感信息 | 5 | 无 | 无 | 是 | 安全 |
SECURITY.ESD.PEO | 不通过异常消息转换成输出,以防止应用程序泄露敏感信息 | 2 | 无 | 无 | 是 | 安全 |
SECURITY.ESD.PLC | 避免在cookie中存储明文的敏感数据 | 3 | 有 | Security Features-Cookie Security: Persistent Cookie | 是 | 安全 |
SECURITY.ESD.UPCT | 凭证传输使用 'post' 而不是 'get' | 2 | 无 | 无 | 是 | 安全 |
SECURITY.IBA.AEAF | 不要从Struts 类 'ActionForm' 和 'DynaActionForm'继承。 | 3 | 有 | Input Validation and Representation-Struts: Form Does Not Extend Validation Class | 是 | 安全 |
SECURITY.IBA.CDBV | 验证之前,规范化的所有数据。 | 3 | 无 | 无 | 是 | 安全 |
SECURITY.IBA.UPS | 使用 'prepareCall' 或r 'prepareStatement' 而不是 'createStatement' | 3 | 有 | Input Validation and Representation-SQL Injection | 是 | 安全 |
SECURITY.IBA.VPPD | 封装所有危险数据返回给验证功能方法 | 2 | 无 | 无 | 是 | 安全 |
SECURITY.IBA.VRD | 封装了所有重定向和转发的URL与验证功能 | 1 | 无 | 无 | 是 | 安全 |
SECURITY.UEC.DSR | 避免在 'web.xml' 中定义具有相同名称的多种安全角色 | 2 | 无 | 无 | 是 | 安全 |
SECURITY.UEC.HTTPS | 在 'axis2.xml' 配置文件中使用 'https' 而不是 'http' 用于 'transportReceiver' 和 'transportSender' | 5 | 无 | 无 | 是 | 安全 |
SECURITY.UEC.LCA | 包括一个适当的 '<login-config>' 元素来指定在 'web.xml' 文件中要执行身份验证的类型 | 3 | 无 | 无 | 是 | 安全 |
SECURITY.UEC.PCCF | 避免在 Castor 的 'jdo-conf.xml' 文件中以纯文本格式存储用户名和密码 | 1 | 有 | Environment-Password Management: Password in Configuration File | 是 | 安全 |
SECURITY.UEC.PTPT | 避免在 Axis 'wsdd' 文件中使用纯文本密码 | 3 | 有 |
Environment-Axis
2 Service Requester Misconfiguration: Plain Text Password Environment-Axis Service Requester Misconfiguration: Plain Text Password |
是 | 安全 |
SECURITY.UEC.PWD | 确保密码不存储在纯文本中和足够长 | 1 | 有 |
Security
Features-Password Management Security Features-Password Management: Hardcoded Password |
是 | 安全 |
SECURITY.UEC.SRCD | 确保在 'web.xml' 文件中引用的每个安全角色有一个相对应的定义 | 3 | 无 | 无 | 是 | 安全 |
SECURITY.UEC.STTL | 确保在'web.xml'文件中配置会话超时时间在一个合理范围内。 | 3 | 有 |
Environment-J2EE
Misconfiguration: Excessive Session Timeout Security Features-Acegi Misconfiguration: Run-As Authentication Replacement |
是 | 安全 |
SECURITY.UEC.UTAX | 避免在 Axis2 配置文件中使用纯文本密码 | 3 | 有 | Environment-Password Management: Password in Configuration File | 是 | 安全 |
SECURITY.UEC.WCPWD | 避免在 WebSphere 的 'ibm-webservicesclient-ext.xmi' 文件中有未加密的密码 | 1 | 有 | Security Features-Password Management: Hardcoded Password | 是 | 安全 |
SECURITY.UEC.WELC | 确保所有 web 内容目录中有一个 "welcome file" | 1 | 无 | 无 | 是 | 安全 |
SECURITY.UEC.WPWD | 避免在 WebSphere 的 'ibm-webservices-ext.xmi' 文件中有未加密的密码 | 1 | 有 |
Environment-Password
Management: Password in Configuration File Security Features-Password Management: Hardcoded Password |
是 | 安全 |
SECURITY.UEHL.LGE | 确保所有的异常要么是一个标准的记录器要么被重新抛出 | 3 | 无 | 无 | 是 | 安全 |
SECURITY.WSC.ACPST | 不要调用 "Throwable"对象的'printStackTrace()'方法。 | 5 | 无 | 无 | 是 | 安全 |
SECURITY.WSC.AHCA | 避免硬编码的参数确定方法 | 3 | 无 | 无 | 是 | 安全 |
SECURITY.WSC.CACM | 保持所有访问控制方法集中强制执行的一致性 | 3 | 无 | 无 | 是 | 安全 |
SECURITY.WSC.CAM | 保持所有访问控制方法集中强制执行的一致性 | 3 | 无 | 无 | 是 | 安全 |
SECURITY.WSC.DNSL | 避免DNS查找进行决策 | 4 | 有 | API Abuse-Often Misused: Authentication | 是 | 安全 |
SECURITY.WSC.ENPP | 确保参数传递到某些预先定义的方法列表中的方法。 | 2 | 无 | 无 | 是 | 安全 |
SECURITY.WSC.HCCK | 避免使用硬编码密键 | 3 | 无 | 无 | 是 | 安全 |
SECURITY.WSC.HCCS | 避免传递硬编码的用户名/密码/URl到数据库连接方法. | 2 | 有 |
Security
Features-Password Management Security Features-Password Management: Hardcoded Password |
是 | 安全 |
SECURITY.WSC.ICA | 不要对密码学使用不安全算法。 | 2 | 有 | Security Features-Weak Encryption | 是 | 安全 |
SECURITY.WSC.PAC | 调用认证方法执行一致性 | 2 | 无 | 无 | 是 | 安全 |
SECURITY.WSC.PACC | 调用访问控制方法以执行一致性 | 2 | 无 | 无 | 是 | 安全 |
SECURITY.WSC.PPF | 不允许密码字段是自动完成的。 | 2 | 无 | 无 | 是 | 安全 |
SECURITY.WSC.SCF | 在设置或得到字段之前执行'SecurityManager'检测 | 2 | 无 | 无 | 否 | 安全 |
SECURITY.WSC.SCSER | 在可序列化类的方法中执行SecurityManager' 检测。 | 2 | 有 | Security Features-Missing SecurityManager Check: Serializable | 否 | 安全 |
SECURITY.WSC.SCSM | 确保 "public" 非"final" 敏感类型的构造函数中的SecurityManager检测 | 3 | 无 | 无 | 否 | 安全 |
SECURITY.WSC.SMSTR | 在 'Socket' transfers or retrievals转移或撤回之前确保SecurityManager检测。 | 4 | 无 | 无 | 是 | 安全 |
SECURITY.WSC.SRD | 使用 'java.security.SecureRandom' 而不是 'java.util.Random' 或 'Math.random()'. | 2 | 有 |
Security
Features-Insecure Randomness API Abuse-Obsolete: Deprecated by ESAPI |
是 | 安全 |
SECURITY.WSC.SSM | 确保设置了恰当的安全管理 | 3 | 有 | Security Features-Acegi Misconfiguration: Run-As Authentication Replacement | 是 | 安全 |
SECURITY.WSC.UOSC | 使用''getSecure()''和 ''setSecure()'' 方法执行安全cookies的使用. | 3 | 有 | Security Features-Cookie Security: Cookie not Sent Over SSL | 是 | 安全 |
SECURITY.WSC.USC | 可能的话使用类的SSL-enabled版本。 | 2 | 无 | 无 | 是 | 安全 |
SERVLET.CETS | 捕获所有可能在Servlet方法中抛出的异常 | 4 | 有 | Environment-Struts Misconfiguration: Missing Exception Type | 是 | 安全 |
SERVLET.UCO | 使用一个Context对象来管理HTTP请求参数 | 4 | 有 | Input Validation and Representation-Open Redirect | 是 | 安全 |
STRUTS.MLVP | 在'validation.xml'中为密码字段使用'minlength' 验证器 | 2 | 有 | Input Validation and Representation-Missing XML Validation | 否 | 安全 |
TRS.CHM | 如果可能尽量用使用 HashMap 的包装类 ConcurrentHashMap 来代替 Hashtable 和 "synchronizedMap"。 | 5 | 无 | 无 | 否 | 规则规范 |
TRS.CIET | 不要捕获InterruptedException异常除非是在扩展自线程的类中 | 4 | 无 | 无 | 否 | 安全 |
TRS.CMA | 避免复合同步破坏原子性的集合访问。 | 3 | 无 | 无 | 否 | 规则规范 |
TRS.DCL | 避免执行不安全的 "double-checked locking" 模式。 | 3 | 有 | Time and State-Code Correctness: Double-Checked Locking | 是 | 安全 |
TRS.IASF | 审查有权使用可能需要同步的 "static" 字段 | 2 | 无 | 无 | 是 | 安全 |
TRS.ILI | 保证延迟初始化的线程安全 | 4 | 无 | 无 | 是 | 安全 |
TRS.RUN | 对实现 'Runnable.run()'的方法使用同步。 | 5 | 无 | 无 | 否 | 规则规范 |
TRS.SOUF | 不要对 non-"final" 字段使用同步因为这样做会很难保证互斥。 | 3 | 无 | 无 | 否 | 规则规范 |
TRS.SSUG | 如果 set 方法是同步的那么也要保证 get 方法也是同步的 | 3 | 无 | 无 | 否 | 规则规范 |
TRS.UACS | 避免非同步访问 "Collections.synchronized" 的包装集合。 | 3 | 无 | 无 | 否 | 规则规范 |
TRS.UCM | 只有在安全的情况下才使用非同步的 Collections/Maps。 | 3 | 无 | 无 | 否 | 规则规范 |
UC.AURV | 避免从未被读取过的局部变量 | 1 | 有 | Code Quality-Poor Style: Value Never Read | 是 | 规则规范 |
UC.PF | 避免未使用的"private" 字段 | 1 | 有 | Code Quality-Poor Style: Value Never Read | 是 | 规则规范 |
UC.SNE | 避免空的 "synchronized" 语句。 | 1 | 有 | Code Quality-Poor Style: Empty Synchronized Block | 是 | 规则规范 |
(如有差错欢迎评论留言,小编虚心与大家共同探讨)
Parasoft——领先的自动化测试工具,满足绝大多数行业标准
Parasoft是一家专门提供软件测试解决方案的公司,帮助企业打造无缺陷的软件。
从开发到质量检查,Parasoft的技术通过集成静态和运行时分析,单元、功能和API测试,以及服务虚拟化,在不牺牲质量和安全性的情况下加快软件交付,节约交付成本。
强大的报告和分析功能可帮助用户快速查明有风险的代码区域,并了解新代码更改如何影响其软件质量,而突破性的技术将人工智能和机器学习添加到软件测试中,使组织更容易采用和扩展跨开发和测试团队的有效的软件测试实践。
Parasoft针对C/C++、Java、.NET和嵌入式的开发测试都有着30多年的深入研究,很多全国500强企业使用Parasoft的产品实现了软件快速、高质量的交付。