Manchmal kann es vorkommen, dass wir Namen löschen wollen, die Sonderzeichen enthalten. Das führt unter normalen Umständen zu einem Problem:
test=# DELETE FROM t_person WHERE name = 'O'Reilly'; test'#
psql wartet auf weiteren Input, da wir eine ungerade Anzahl von Klammern verwendet haben. Das Problem kann wie folgt umschifft werden:
test=# DELETE FROM t_person WHERE name = 'O''Reilly'; DELETE 0
Klarerweise gibt es keine Person, die sich O'Reilly nett.
Viele Programmierer vergessen das sogenannte Escapen von Zeichen und erzeugen so eine wunderbare Sicherheitslücke, die Angreifer ausnutzen können:
test=# DELETE FROM t_person WHERE name = ' ' OR name = 'Peter' OR name = ' '; DELETE 0
Würde ein Angreifer in einem Programm, das nicht gegen Single Quotes geschützt ist, den String ...
' OR name = 'Peter' OR name = '
eingeben, hätten Sie ein echtes Problem. Stellen Sie daher sicher, dass die Parameter Ihres SQL Statements immer korrekt maskiert werden.