Downloads · Entwicklung
Code-Scanner
Sicherheitsprüfung für C#-, VB.NET- und T-SQL-Quellcode, vollständig offline. Derzeit: SQL-Injection – Stellen, an denen Werte in SQL-Text eingesetzt statt als Parameter übergeben werden.
Der Code-Scanner arbeitet vollständig offline. Quellcode, Zugangsdaten, Passwörter und andere Geheimnisse verlassen den eigenen Rechner nicht: Das Programm baut keine Internetverbindung auf, nutzt keinen KI-Dienst und sendet keine Telemetrie. Nur der Ko-fi-Link öffnet auf Klick den Browser.
Was das Programm macht
Der Scanner liest den Quellcode und meldet Stellen, an denen SQL-Text aus Variablen zusammengesetzt und ausgeführt wird – etwa ein Suchbegriff, der direkt in ein WHERE … LIKE '%…%' eingesetzt wird, ein Sortierfeld aus der Anfrage im ORDER BY oder dynamisches SQL mit EXEC(@sql) in gespeicherten Prozeduren.
Er arbeitet rein statisch: Es wird keine Datenbank verbunden und nichts ausgeführt. C# und VB.NET werden mit dem Roslyn-Compiler analysiert, T-SQL-Skripte mit dem SQL-Server-Parser von Microsoft. Dadurch erkennt der Scanner parametrisierte Abfragen, FromSql mit $"…", Zahlen, Guids und feste Auswahllisten und meldet sie nicht.
Zu jedem Fund zeigt das Programm Datei und Zeile, den Code-Ausschnitt, die Herkunft des eingesetzten Werts und eine Empfehlung. Geprüfte, unbedenkliche Stellen lassen sich mit einem Kommentar codescan:ignore samt Begründung als Ausnahme markieren.
Was geprĂĽft wird
- C# und VB.NET: ADO.NET (SqlCommand, CommandText, SqlDataAdapter, SqlDataSource), Dapper, Entity Framework (FromSqlRaw, ExecuteSqlRaw, SqlQueryRaw, EF6 SqlQuery)
- Auch alter Code: WebForms und WinForms, Request.QueryString, Textfelder, Verkettung mit & und _
- Verfolgt Variablen, StringBuilder, string.Format und eigene Hilfsmethoden wie ExecuteNonQuery(string sql) – auch über Sprachgrenzen (VB ruft C#)
- Erkennt Spalten- und Tabellennamen aus Variablen (ORDER BY, FROM, JOIN) gesondert
- T-SQL: EXEC(@sql) und sp_executesql mit eingesetzten Werten, Prozedur-Parameter, Cursor-Werte, QUOTENAME
- Schweregrad hoch, mittel, niedrig nach Herkunft des Werts
- Bericht als Markdown, JSON oder Text; Kommandozeile mit Exit-Code für den Build
Bitte beachten
Keine Software ist fehlerfrei – auch dieses Werkzeug nicht. Es gibt keine Gewähr, dass der Scanner alle Schwachstellen findet; ein Bericht ohne Funde bedeutet nicht, dass der Code frei von SQL-Injection ist. Er ersetzt kein Code-Review und keinen Sicherheitstest.
Im Build verwenden
codescan C:\Projekte\MeinProjekt --md bericht.md --fail-on mittel
Die Kommandozeile codescan.exe liegt im selben Paket. Exit-Code 0 ohne Funde, 1 bei Funden ab der gewählten Schwere, 2 bei Aufruffehlern – damit lässt sich die Prüfung in jeden Build einbauen.