계: 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