Wie kann man mit LIKE in PostgreSQL maskierte Zeichenfolgen sicher abgleichen?

DDD
Freigeben: 2024-11-19 07:50:02
Original
703 Leute haben es durchsucht

How to Safely Match Escaped Strings Using LIKE in PostgreSQL?

Übereinstimmende Escape-Zeichenfolgen in PostgreSQL

In PostgreSQL kann die Verwendung des LIKE-Operators zum Abgleichen von Mustern problematisch werden, wenn es um Sonderzeichen wie „_“ geht. ' Und '%'. Diese Zeichen können mit Platzhaltern übereinstimmen und zu unbeabsichtigten Ergebnissen führen. Um eine wörtliche Übereinstimmung sicherzustellen, ist es wichtig, sie richtig zu maskieren.

Das für LIKE verwendete Escape-Zeichen ist normalerweise der Backslash (), der zweimal wiederholt werden sollte, um ein einzelnes Escape-Zeichen im Muster darzustellen. Beispielsweise würde „rob_“ das Zeichen „_“ maskieren, sodass nur Zeichenfolgen gefunden werden können, die buchstäblich mit „rob_“ beginnen. In PostgreSQL 9.1 kann sich das Standard-Escape-Zeichen jedoch abhängig von der Einstellung „standard_conforming_strings“ ändern.

Um potenzielle Probleme zu vermeiden, wird empfohlen, die REPLACE-Funktion zu verwenden, um Sonderzeichen serverseitig durch ihre maskierten Entsprechungen zu ersetzen. Dieser Ansatz ist sicherer als die Handhabung des Escapezeichens auf der Clientseite, da keine zusätzliche Validierung der Benutzereingaben erforderlich ist.

Zum Beispiel würde die folgende Abfrage alle Instanzen von „_“ und „%“ durch ersetzen ihre entkommenen Gegenstücke und führen dann den LIKE-Vergleich durch, um sicherzustellen, dass das Muster wörtlich übereinstimmt:

SELECT * FROM users WHERE name LIKE replace(replace(replace(,'^','^^'),'%','^%'),'_','^_') ||'%' ESCAPE '^'
Nach dem Login kopieren

Durch die Verwendung serverseitiger Ersetzungen können Sie genaue und eindeutige Muster sicherstellen Matching unter Vermeidung potenzieller Sicherheitslücken.

Das obige ist der detaillierte Inhalt vonWie kann man mit LIKE in PostgreSQL maskierte Zeichenfolgen sicher abgleichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage