SQL injection High

User-provided inputs must be sanitized before being used to generate a SQL database query. An untrusted input can be intentionally built by an attacker in order to run unwanted query statements, possibly allowing the attacker to read, modify, or delete database content.

Detector ID
kotlin/sql-injection@v1.0
Category
Common Weakness Enumeration (CWE) external icon

Noncompliant example

1// Noncompliant: User data is being used in SQL query
2fun noncompliant(connection: Connection): ResultSet {
3    print("Enter your userId:")
4    val userId = readLine()
5    val query = "SELECT * FROM users WHERE userId = '$userId'"
6    val statement = connection.createStatement()
7    return statement.executeQuery(query)
8}

Compliant example

1// Compliant: Hardcoded value is being passed to SQL query
2fun compliant(connection: Connection): ResultSet {
3    val userId = "hardcoded_value"
4    val query = "SELECT * FROM users WHERE userId = '$userId'"
5    val statement = connection.createStatement()
6    return statement.executeQuery(query)
7}