文檔金喜正規買球>>自動化測試工具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的產品實現了軟件快速、高質量的交付。