Injektionen: eine Anweisung von Daten trennen
Das eine Prinzip
Die Engine sollte den Befehl und die Daten getrennt erhalten. Parametrisierte Abfragen, Systembefehle mit einem Argument-Array und Vorlagen-Engines, die unsicheren Inhalt markieren. Zeichenketten zu filtern ist ein Rennen, das man stets verliert.
Wo es auftaucht
Datenbanken, Betriebssystembefehle, Bibliotheksabfragen, Aufrufe an eine Suchmaschine und auch in dynamisch gebauten Adressen. Und ja — auch in Prompts an ein Sprachmodell, wo externer Inhalt als Anweisung ausgelegt werden kann.
Verteidigung in der Tiefe
Minimale Berechtigungen für den Datenbanknutzer, damit der Schaden begrenzt ist, selbst wenn etwas durchkam. Und Eingabevalidierung gegen ein Schema — nicht als Ersatz für die Trennung, sondern als zusätzliche Schicht, die absurde Eingabe von vornherein blockiert.
Im Detail
Führen Sie automatische Tests aus, die jedem Feld ungewöhnliche Eingabe zuführen — Sonderzeichen, extreme Länge, verschiedene Kodierungen — und prüfen, dass die Antwort ein geordneter Fehler und kein anomales Verhalten ist. Das fängt auch gewöhnliche Fehler, nicht nur Schwachstellen.