sql >> Database >  >> RDS >> Sqlserver

Hoe een speciaal teken voor SQL Server in de Java-app vast te leggen / coderen?

Ik vermoed dat je de SQL op de een of andere manier hebt geconstrueerd, zoals

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

Of zoiets? Als je dat doet, sta je open voor allerlei soorten exploits en zie je ook gedrag zoals je beschrijft, waarbij de resulterende string niet langer geldige SQL is. U moet eerst ontsnappen aan de door de gebruiker opgegeven parameter.

De beste oplossing is om PreparedStatements te gebruiken, dus dat doe je

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

Ik zie geen snelle manier om je probleem op te lossen zonder enige Java-code te wijzigen, maar misschien ontsnap je aan de invoer / reiniging voordat deze je code raakt (bijvoorbeeld javascript als je een webapp bent)



  1. Android-verbindingsfout java.lang.UnsupportedOperationException

  2. Duplicaat medewerker in tafel wegens overstap afdeling

  3. Hoe download ik een bestand met PHP en Mysql DB

  4. Hoe kan ik het maandnummer (geen maandnaam) van een datum in SQL Server krijgen?