界: Code Quality
コードの質が低いと、予測できない動作につながります。ユーザーの視点には、それがしばしば使い勝手の悪さとなって現れます。攻撃者にとっては、予期せぬ方法でシステムにストレスを与える機会となります。
Portability Flaw: Native SQL
Abstract
ネイティブ SQL を使用すると、移植に関する問題が引き起こされる可能性があります。
Explanation
SAP システムは、プラットフォームに依存しないように設計されています。SAP の移植性のある SQL 言語である Open SQL を使用すると、アプリケーションが特定のデータベース ベンダーの JDBC ドライバーに依存しなくなります。Open SQL を使用すると、基盤となるデータベースの複雑さを抽象化し、アプリケーション プログラムにすべてのデータベース操作に対する共通インターフェイスを提供することができます。しかし、ネイティブ SQL は基盤となるデータベースに固有であるため、他のプラットフォームで使用すると、アプリケーション ロジックが正しく実行されずサービスの妨害となる可能性もあります。
例 1: 次のコードは、ネイティブ SQL を使用しています。
例 1: 次のコードは、ネイティブ 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