Détection des vulnérabilités d'injection SQL

VérifiéSûr

Détecter et analyser les vulnérabilités d'injection SQL dans le code applicatif et les requêtes de base de données.

Spar Skills Guide Bot
SecuriteIntermédiaire
22/07/2026
Claude CodeCodex
#sql-injection#static-analysis#owasp#secure-coding#code-review

Recommandé pour

Synthèse automatique

Analyse le code source d'une application pour détecter les vulnérabilités d'injection SQL en traçant les entrées utilisateur jusqu'à la construction des requêtes, puis produit un rapport de sécurité avec remédiations.

Points forts

  • Cartographie complète des surfaces d'entrée (paramètres HTTP, en-têtes, cookies, uploads, WebSocket) et traçage des flux de données
  • Détection multi-patterns : concaténation, f-strings, template literals, requêtes ORM brutes non paramétrées
  • Classement des findings avec score CVSS 3.1, type d'attaque (aveugle, UNION, second ordre) et impact métier
  • Génération de code corrigé idiomatique selon le framework et la base de données, plus recommandations de défense en profondeur

Limites

  • Analyse statique uniquement : pas d'exploitation réelle ni de validation dynamique des findings
  • Efficacité dépendante de l'identification préalable du framework et du SGBD par l'utilisateur
  • Nécessite les permissions d'écriture pour générer les rapports dans le répertoire de travail du skill
Quand l'utiliser

À utiliser lors d'un audit de sécurité du code, avant une mise en production, ou pour revoir des requêtes de base de données nouvellement écrites.

Quand l'éviter

Ne convient pas pour des tests d'intrusion dynamiques sur une application en cours d'exécution ni pour de l'analyse de binaires compilés.

Analyse de sécurité

Sûr
Score qualité88/100

This is a defensive static-analysis skill that scans local source code for SQL injection patterns and writes a remediation report. Allowed tools are Read/Grep/Glob/Edit/Write plus narrowly scoped Bash prefixes (code-scan:*, security-test:*); there are no destructive commands, no network calls, no secret/token exfiltration, and no obfuscated payloads. Output is confined to a security-reports directory. Residual risk is minimal and limited to edits/writes within the project tree.

Aucun point d'attention détecté

Comment cette analyse est faite

Exemples

Scan a Node.js API
Scan the Express app in ./src for SQL injection vulnerabilities, trace the request handlers into the query layer, and write a report with CVSS scores and parameterized fixes.
Review ORM raw queries
Detect SQLi risks in our Django models and any .raw() or .extra() calls, then show the parameterized equivalent for each finding.
Check input sanitization
Review how user input from HTTP headers and cookies reaches our SQL queries in this repository and flag every path that skips parameter binding.

name: detecting-sql-injection-vulnerabilities description: | Detect and analyze SQL injection vulnerabilities in application code and database queries. Use when you need to scan code for SQL injection risks, review query construction, validate input sanitization, or implement secure query patterns. Trigger with phrases like "detect SQL injection", "scan for SQLi vulnerabilities", "review database queries", or "check SQL security".

allowed-tools: Read, Write, Edit, Grep, Glob, Bash(code-scan:), Bash(security-test:) version: 1.0.0 author: Jeremy Longshore jeremy@intentsolutions.io license: MIT compatible-with: claude-code, codex, openclaw tags: [security, database, detecting-sql]

Detecting SQL Injection Vulnerabilities

Overview

Scan application source code for SQL injection vulnerabilities (CWE-89, OWASP A03:2021) by tracing user input from entry points through data flows into database query construction. Detect string concatenation, format string interpolation, and inadequate parameterization across raw SQL, ORM raw query methods, stored procedure calls, and dynamic query builders.

Prerequisites

  • Application source code accessible in ${CLAUDE_SKILL_DIR}/
  • Database query files, ORM models, and repository/DAO layers available
  • Framework and language identified (Django, Rails, Express, Spring, Laravel, ASP.NET, Go, etc.)
  • Database type known (MySQL, PostgreSQL, SQLite, MSSQL, Oracle) for syntax-specific detection
  • Write permissions for reports in ${CLAUDE_SKILL_DIR}/security-reports/

Instructions

  1. Discover database interaction code: search for SQL keywords (SELECT, INSERT, UPDATE, DELETE, EXEC) and ORM raw query methods (raw(), execute(), createNativeQuery(), $wpdb->query()) across all source files.
  2. Identify input surfaces: map all user-controllable data entry points -- HTTP parameters, request bodies, URL path segments, headers, cookies, file uploads, and WebSocket messages.
  3. Trace data flows: follow each input surface through the code to determine whether user data reaches a SQL query. Flag any path where input is not passed through parameterized query binding.
  4. Detect vulnerable patterns:
    • String concatenation: "SELECT * FROM users WHERE id=" + userId
    • f-string/format interpolation: Python f-strings embedding variables directly into SQL strings
    • Template literals: `SELECT * FROM users WHERE id=${req.params.id}`
    • ORM raw queries without bindings: Model.objects.raw("SELECT * FROM t WHERE x='" + val + "'")
  5. Classify each finding: assign CVSS 3.1 score, identify attack type (classic injection, blind boolean/time-based, UNION-based exfiltration, second-order/stored injection), and document exploitability (authentication required, network access).
  6. Assess impact per finding: determine data exposure scope (authentication bypass, data exfiltration, data modification, OS command execution via xp_cmdshell or LOAD_FILE()).
  7. Generate remediation code: provide parameterized equivalents for each vulnerable query. Use framework-idiomatic patterns -- %s placeholders for Python DB-API, ? for Node.js, $1 for PostgreSQL, named parameters for Spring JPA.
  8. Recommend defense-in-depth measures: input validation (allowlists over denylists), stored procedures with parameterized calls, least-privilege database accounts, WAF rules, and ORM-only data access policies.
  9. Produce the vulnerability report at ${CLAUDE_SKILL_DIR}/security-reports/sqli-scan-YYYYMMDD.md with per-finding severity, CWE-89 mapping, file path and line number, vulnerable code snippet, attack vector demonstration, and remediated code.

See ${CLAUDE_SKILL_DIR}/references/implementation.md for the detection pattern library. See ${CLAUDE_SKILL_DIR}/references/critical-findings.md for example vulnerability write-ups with attack demonstrations.

Output

  • Vulnerability Report: ${CLAUDE_SKILL_DIR}/security-reports/sqli-scan-YYYYMMDD.md with all findings classified by severity
  • Finding Details: per-finding file path, line number, vulnerable code, attack vector, CVSS score, and remediation code
  • Remediation Summary: parameterized query replacements grouped by language/framework
  • Defense Recommendations: input validation rules, database privilege changes, and WAF configuration

Error Handling

| Error | Cause | Solution | |-------|-------|----------| | Unknown ORM or database framework | Custom or uncommon data access library | Apply generic SQL injection pattern detection; note limited framework-specific guidance | | Cannot analyze compiled/minified code | Production bundles or bytecode instead of source | Request unminified source; document reduced detection accuracy | | False positive on sanitized input | Proper sanitization exists but not recognized | Trace sanitization implementation manually; whitelist verified-safe patterns | | Complex dynamic query builder logic | Multi-step query construction across modules | Trace full data flow manually; flag for manual security review | | Cannot analyze stored procedure definitions | SQL source files not available in ${CLAUDE_SKILL_DIR}/ | Request .sql files or database schema exports; focus on application-layer code |

Examples

  • "Scan the codebase for SQL injection risks in dynamic query construction, focusing on controllers and API handlers."
  • "Review these query snippets and propose parameterized equivalents with unit tests validating the fix."
  • "Detect second-order SQL injection in the user profile update flow where stored data is later used in admin queries."

Resources

  • OWASP SQL Injection Prevention Cheat Sheet: https://cheatsheetseries.owasp.org/cheatsheets/SQL_Injection_Prevention_Cheat_Sheet.html
  • CWE-89 Improper Neutralization of SQL Syntax: https://cwe.mitre.org/data/definitions/89.html
  • OWASP A03:2021 Injection: https://owasp.org/Top10/A03_2021-Injection/
  • CAPEC-66 SQL Injection: https://capec.mitre.org/data/definitions/66.html
  • ${CLAUDE_SKILL_DIR}/references/critical-findings.md -- example vulnerability write-ups with attack vectors
  • ${CLAUDE_SKILL_DIR}/references/errors.md -- full error handling reference
  • ${CLAUDE_SKILL_DIR}/references/examples.md -- additional usage examples
  • https://intentsolutions.io

Du fichier au premier essai

Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.

Consulter la source et ses fichiers annexes

Ce téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.

1. Télécharger le fichier

Télécharger SKILL.md

Depuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/detecting-sql-injection-vulnerabilities-mrwakcy7/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.

Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.

mkdir -p '.skill-downloads/detecting-sql-injection-vulnerabilities-mrwakcy7' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/detecting-sql-injection-vulnerabilities-mrwakcy7/download' --output '.skill-downloads/detecting-sql-injection-vulnerabilities-mrwakcy7/SKILL.md.part' && mv '.skill-downloads/detecting-sql-injection-vulnerabilities-mrwakcy7/SKILL.md.part' '.skill-downloads/detecting-sql-injection-vulnerabilities-mrwakcy7/SKILL.md'

2. Vérifier les prérequis

Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.

Outils déclarés par l’auteur (à vérifier dans votre agent) : Read, Write, Edit, Grep, Glob, Bash(code-scan:*), Bash(security-test:*)

Extrait original : Prerequisites
  • Application source code accessible in ${CLAUDE_SKILL_DIR}/
  • Database query files, ORM models, and repository/DAO layers available
  • Framework and language identified (Django, Rails, Express, Spring, Laravel, ASP.NET, Go, etc.)
  • Database type known (MySQL, PostgreSQL, SQLite, MSSQL, Oracle) for syntax-specific detection
  • Write permissions for reports in ${CLAUDE_SKILL_DIR}/security-reports/

Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.

3. Charger la skill

Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.

Claude Code
test -f '.skill-downloads/detecting-sql-injection-vulnerabilities-mrwakcy7/SKILL.md' && test -s '.skill-downloads/detecting-sql-injection-vulnerabilities-mrwakcy7/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/detecting-sql-injection-vulnerabilities' && cp -R '.skill-downloads/detecting-sql-injection-vulnerabilities-mrwakcy7' '.claude/skills/detecting-sql-injection-vulnerabilities'

Codex
test -f '.skill-downloads/detecting-sql-injection-vulnerabilities-mrwakcy7/SKILL.md' && test -s '.skill-downloads/detecting-sql-injection-vulnerabilities-mrwakcy7/SKILL.md' && mkdir -p '.agents/skills' && test ! -e '.agents/skills/detecting-sql-injection-vulnerabilities' && cp -R '.skill-downloads/detecting-sql-injection-vulnerabilities-mrwakcy7' '.agents/skills/detecting-sql-injection-vulnerabilities'

OpenSkills

OpenSkills doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.

Installation officielle d’OpenSkills
openskills install './.skill-downloads/detecting-sql-injection-vulnerabilities-mrwakcy7'

openskills read 'detecting-sql-injection-vulnerabilities-mrwakcy7'

La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.

Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.

openskills sync

Mode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.

4. Faire un premier essai

Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :

Lis .skill-downloads/detecting-sql-injection-vulnerabilities-mrwakcy7/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.

Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.

Skills similaires