| name | sql-injection-anti-pattern |
| description | Security anti-pattern for SQL Injection vulnerabilities (CWE-89). Use when generating or reviewing code that constructs database queries, builds SQL statements, or handles user input in database operations. Detects string concatenation in queries and recommends parameterized queries. |
SQL Injection Anti-Pattern
Severity: Critical
Summary
Attackers execute arbitrary SQL commands by manipulating user input. String concatenation in queries (frequently AI-generated from insecure training data) enables database compromise, data exfiltration, authentication bypass, and remote code execution.
The Anti-Pattern
The anti-pattern is concatenating user data into SQL statements, allowing attackers to break query structure and inject malicious SQL.
BAD Code Example
import sqlite3
def get_user(db_connection, username):
query = "SELECT * FROM users WHERE username = '" + username + "'"
cursor = db_connection.cursor()
cursor.execute(query)
return cursor.fetchone()
GOOD Code Example
import sqlite3
():
query =
cursor = db_connection.cursor()
cursor.execute(query, (username,))
cursor.fetchone()