界: API Abuse
API 是调用方和被调用方之间的约定。最常见的 API 滥用是由于调用方未能遵守此约定的终止导致的。例如,如果某个程序在调用 chroot() 后未能调用 chdir(),则违反了用于指定如何安全地更改活动根目录的约定。库滥用的另一个典型示例是期望被调用方向调用方返回可信的 DNS 信息。在这种情况下,调用方通过对被调用方行为做出某种假设(返回值可用于身份验证目的)滥用其 API。另一方也可能违反调用方-被调用方约定。例如,如果编码器子类化 SecureRandom 并返回一个非随机值,则将违反此约定。
EJB Bad Practices: Use of java.io
Abstract
程序使用了
java.io
包,这违反了企业级 JavaBeans 编程规范。Explanation
企业级 JavaBeans 编程规范要求每个 bean 提供者都必须遵守一系列编程规范,以确保 bean 在任何 EJB 容器 [1] 中的可移植性与行为的一致性。
在这里,程序违背了以下 EJB 指导原则:
“当使用 Java I/O 包尝试访问文件系统中的文件和目录时,企业级 bean 应加以小心。”
制定该规范理由如下:
“文件系统 API 不太适合供业务组件访问数据。文件可能无法从所有实例中访问,或者文件的内容在不同的实例上可能有所不同,而且文件更新的协调工作也很困难。业务组件应当使用资源管理器 API(例如 JDBC)来存储数据。”
在这里,程序违背了以下 EJB 指导原则:
“当使用 Java I/O 包尝试访问文件系统中的文件和目录时,企业级 bean 应加以小心。”
制定该规范理由如下:
“文件系统 API 不太适合供业务组件访问数据。文件可能无法从所有实例中访问,或者文件的内容在不同的实例上可能有所不同,而且文件更新的协调工作也很困难。业务组件应当使用资源管理器 API(例如 JDBC)来存储数据。”
References
[1] Jakarta Enterprise Beans 4.0 Eclipse Foundation
[2] Standards Mapping - Common Weakness Enumeration CWE ID 576
desc.structural.java.ejb_bad_practices_use_of_java_io