dedlfix: SQL: Injections verhindern bei Verwendung von Perl und DBI

Beitrag lesen

echo $begrüßung;

"Das datenbankunabhängige Datenbankmodul DBI unterstützt [zur Verhinderung von SQL-Injections] eine „prepare“-Syntax [...].
Kann ich mit dieser Maßnahme eine über $ENV{'QUERY_STRING'} ausgelesene Variable unbehandelt in das SQL-Statement einfügen oder sollte ich vorher noch weitere Vorsichtsmaßnahmen beachten?

Bei Prepared Statements werden keine Daten in das Statement eingefügt. Deshalb muss da auch weder was quotiert noch maskiert werden. Das Statement mit den Platzhaltern und die Daten gehen getrennte Wege zum DBMS. Wenn DBI die Prepared Statements nur simuliert, dann ist es selbst dafür verantwortlich, die Daten korrekt in das Statement einzusetzen.

Wenn du allerdings keinen Platzhalter verwendest, sondern selbst veränderliche Daten in das Statement einfügen möchtest, dann ist das zum einen eine schlechte Idee, und hat zum anderen zur Folge, dass du dich wieder selbst um die korrekte Notation kümmern musst.

echo "$verabschiedung $name";