cwe - 576: EJB坏实践:使用Java I / O
描述
产品违反Enterprise javabean (EJB)通过使用java规范。io包。
扩展描述
Enterprise JavaBeans规范要求每一个bean提供者遵循一组编程指南,旨在确保bean将便携式和行为始终在任何EJB容器。在这种情况下,EJB产品违反下列指南:“不得使用java企业bean。io包试图访问文件系统中的文件和目录”。The specification justifies this requirement in the following way: "The file system APIs are not well-suited for business components to access data. Business components should use a resource manager API, such as JDBC, to store data."
的关系
模式的介绍
不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
常见的后果
这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
示范例子
示例1
以下Java示例是一个简单的无状态的企业JavaBean,检索点的数量的利率抵押贷款。在这个例子中,不同的利率从本地文件系统上的XML文档检索,和EJB使用Java I / O API来从本地文件系统检索XML文档。
@Stateless
公共类InterestRateBean实现InterestRateRemote {
私人文档interestRateXMLDocument =零;
私人文件interestRateFile =零;
公共InterestRateBean () {
尝试{
/ *从本地文件系统获取XML文档* /
interestRateFile =新文件(Constants.INTEREST_RATE_FILE);
如果(interestRateFile.exists ())
{
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance (); DocumentBuilder db = dbf.newDocumentBuilder (); interestRateXMLDocument = db.parse (interestRateFile);
}
}捕捉(IOException特异){…}
}
公共BigDecimal getInterestRate(整数点){
返回getInterestRateFromXML(点);
}
/ *成员函数来检索XML文档利率从本地文件系统* /
私人BigDecimal getInterestRateFromXML(整数点){…}
}
这个用Java I / O API的任何类型的企业内JavaBean违反使用Java的EJB规范。io包用于访问本地文件系统中的文件。
企业JavaBean应该使用一个资源管理器API来存储和访问数据。在下面的例子中,私有成员函数getInterestRateFromXMLParser使用XML解析器API来检索利率。
@Stateless
公共类InterestRateBean实现InterestRateRemote {
公共InterestRateBean () {
}
公共BigDecimal getInterestRate(整数点){
返回getInterestRateFromXMLParser(点);
}
/ *成员函数来检索利率从XML文档中使用XML解析器API * /
私人BigDecimal getInterestRateFromXMLParser(整数点){…}
}
潜在的缓解措施
实施阶段:
不使用Java I / O在编写ejb。
会员资格
这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
分类法映射
映射分类名称
节点ID
适合
映射节点名
软件故障模式
SFP3
使用不当的API