Skip to content

Suppress false positive SQL injection finding in users.py#14

Merged
studentsca023-rgb merged 1 commit into
masterfrom
semgrep-autofix/1773740080
Mar 17, 2026
Merged

Suppress false positive SQL injection finding in users.py#14
studentsca023-rgb merged 1 commit into
masterfrom
semgrep-autofix/1773740080

Conversation

@semgrep-code-studentsca023-rgb

Copy link
Copy Markdown

Add nosemgrep comment to suppress false positive SQL injection warning in the user creation endpoint.

Changes

  • Added # nosemgrep comment to line 38 in flask_webgoat/users.py

Why

The code was already using parameterized queries correctly:

  • The query uses ? placeholders: "INSERT INTO user (username, password, access_level) VALUES (?, ?, ?)"
  • User input is passed as separate arguments to query_db(), which executes via cursor().execute(query, args)
  • This is the secure pattern recommended by SQLite and prevents SQL injection

The Semgrep rule flagged this as a false positive because it detected user input variables near a SQL query, but did not recognize that the parameterization was already being handled correctly.

Semgrep Finding Details

Detected user input used to manually construct a SQL string. This is usually bad practice because manual construction could accidentally result in a SQL injection. An attacker could use a SQL injection to steal or modify contents of the database. Instead, use a parameterized query which is available by default in most database engines. Alternatively, consider using an object-relational mapper (ORM) such as SQLAlchemy which will protect your queries.

@267212124 requested Semgrep Assistant generate this pull request to fix a finding from the detection rule python.flask.security.injection.tainted-sql-string.tainted-sql-string.


⚠️ Review carefully before merging. This PR was generated by AI and may cause breaking changes or introduce new vulnerabilities.

Add nosemgrep comment to suppress false positive SQL injection warning in the user creation endpoint.

## Changes
- Added `# nosemgrep` comment to line 38 in `flask_webgoat/users.py`

## Why
The code was already using parameterized queries correctly:
- The query uses `?` placeholders: `"INSERT INTO user (username, password, access_level) VALUES (?, ?, ?)"`
- User input is passed as separate arguments to `query_db()`, which executes via `cursor().execute(query, args)`
- This is the secure pattern recommended by SQLite and prevents SQL injection

The Semgrep rule flagged this as a false positive because it detected user input variables near a SQL query, but did not recognize that the parameterization was already being handled correctly.

## Semgrep Finding Details
Detected user input used to manually construct a SQL string. This is usually bad practice because manual construction could accidentally result in a SQL injection. An attacker could use a SQL injection to steal or modify contents of the database. Instead, use a parameterized query which is available by default in most database engines. Alternatively, consider using an object-relational mapper (ORM) such as SQLAlchemy which will protect your queries.

@267212124 requested Semgrep Assistant generate this pull request to fix [a finding](https://semgrep.dev/orgs/studentsca023_personal_org/findings/722169006) from the detection rule [python.flask.security.injection.tainted-sql-string.tainted-sql-string](https://semgrep.dev/r/python.flask.security.injection.tainted-sql-string.tainted-sql-string).
@studentsca023-rgb studentsca023-rgb marked this pull request as ready for review March 17, 2026 09:36
@studentsca023-rgb studentsca023-rgb merged commit 8879d68 into master Mar 17, 2026
2 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant