界: Code Quality

代码质量不佳会导致不可预测的行为。对于用户来说,通常表现为可用性差。对于攻击者来说,提供了以意外方式对系统施加压力的机会。

Portability Flaw: Native SQL

Abstract
使用 Native SQL 会导致可移植性问题。
Explanation
最初设计时,SAP 系统是独立于平台的。Open SQL(SAP 的可移植 SQL 语言)使应用程序可独立于特定数据库供应商的 JDBC 驱动程序。使用 Open SQL 可抽象化处理底层数据库的各种繁杂项,为所有数据库操作提供应用程序的通用接口。但是,Native SQL 特定于底层数据库,因此在其他平台上使用时可能会导致应用程序逻辑执行错误和拒绝服务。
示例 1:以下代码使用 Native SQL:


...
import java.sql.PreparedStatement;
import com.sap.sql.NativeSQLAccess;

String mssOnlyStmt = "...";
// variant 1
PreparedStatement ps =
NativeSQLAccess.prepareNativeStatement(
conn, mssOnlyStmt);
. . .
// variant 2
Statement stmt =
NativeSQLAccess.createNativeStatement(conn);
int result = stmt.execute(mssOnlyStmt);
. . .
// variant 3
CallableStatement cs =
NativeSQLAccess.prepareNativeCall(
conn, mssOnlyStmt);
. . .
References
[1] Standards Mapping - Common Weakness Enumeration CWE ID 474
desc.structural.java.portability_flaw_native_sql