Ich muss eine Suche implementieren, wo Benutzer * als Platzhalter eingeben können. Die Datenbank, die sie suchen, ist ein SQL-Server. Ich dachte, nur die * mit einem% ersetzt:So verwenden Sie * als Platzhalter in SQL-Abfrage sicher
userInput = userInput.replace('*', '%');
Ich mache mir Sorgen, dass ich da mache die „von Hand“ Ich könnte einige Fehler oder Sicherheitslücken einzuführen. Siehst du irgendwelche Probleme dabei? Gibt es eine Bibliothek, um das für mich zu tun?
Ich verwende Hibernate als ORM-Mapper und Criteria-API, um die Abfrage zu erstellen, wenn es bei Antworten hilft.
Wenn Sie 'like' verwenden, möchten Sie auch die vorhandenen'% ',' _' und '[...]'. Dies * könnte * ein Duplikat sein von: [Escape eine Zeichenfolge in SQL Server, so dass es sicher ist, in LIKE-Ausdruck zu verwenden] (http://stackoverflow.com/questions/258757/escape-a-string-in-sql- server-so-dass-es-ist-sicher-zu-verwenden-in-like-expression) – Kobi
aber solange Sie eine PreparedStatement verwenden, werden Sie keine Sicherheitslücken induzieren. –
@Kobi Danke, ich wusste nichts über _ und []. Versuchen Sie, wie diese die Abfrage beeinflussen. Hibernate ermöglicht es mir, einen Escape-Charakter zu setzen, damit ich diese Frage mit mir aktualisieren kann, indem ich versuche, Dingen zu entkommen, die Benutzer nicht verwenden sollen. – palto