Reino: Code Quality

Códigos de baixa qualidade levam a comportamentos imprevisíveis. Da perspectiva do usuário, isso normalmente se manifesta como usabilidade ruim. Para um invasor, trata-se de uma oportunidade para atacar o sistema de formas imprevistas.

Portability Flaw: Native SQL

Abstract
O uso de SQL nativo causa problemas de portabilidade.
Explanation
Os sistemas SAP são projetados para serem independentes de plataforma. Open SQL, o dialeto SQL portátil do SAP, torna os aplicativos independentes do driver JDBC de um fornecedor de banco de dados específico. A utilização do Open SQL abstrai os meandros do banco de dados subjacente e fornece uma interface comum para programas de aplicativo para todas as operações de banco de dados. No entanto, o SQL nativo é específico do banco de dados subjacente e, portanto, o uso dele em outras plataformas pode provocar a execução incorreta da lógica do aplicativo e, potencialmente, uma negação de serviço.
Exemplo 1: O seguinte código usa SQL nativo:


...
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 - CIS Azure Kubernetes Service Benchmark 1
[2] Standards Mapping - CIS Amazon Elastic Kubernetes Service Benchmark 5
[3] Standards Mapping - CIS Amazon Web Services Foundations Benchmark 1
[4] Standards Mapping - CIS Google Kubernetes Engine Benchmark normal
[5] Standards Mapping - Common Weakness Enumeration CWE ID 474
desc.structural.java.portability_flaw_native_sql