Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie erfasst/codiert man Sonderzeichen für SQL Server in der Java-App?

Ich vermute, Sie konstruieren die SQL in irgendeiner Weise wie

String sql = "Select Column from tab where column='" + StringParm + "'"; 

Oder so ähnlich? Wenn Sie das tun, sind Sie offen für alle Arten von Exploits und Sie werden auch ein Verhalten wie das von Ihnen beschriebene sehen, bei dem die resultierende Zeichenfolge kein gültiges SQL mehr ist. Sie müssten zuerst den vom Benutzer angegebenen Parameter maskieren.

Die beste Lösung ist die Verwendung von PreparedStatements, also tun Sie es

Statement stmt = conn.prepareStatement("Select Column from tab where column=?");
stmt.setString(1,StringParam);

Ich sehe jedoch keine schnelle Möglichkeit, Ihr Problem zu lösen, ohne Java-Code zu ändern, außer vielleicht die Eingabe zu maskieren/zu bereinigen, bevor sie auf Ihren Code trifft (z. B. Javascript, wenn Sie eine Webanwendung sind)