Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak przechwycić/zakodować znak specjalny dla SQL Server w aplikacji java?

Zgaduję, że konstruujesz SQL w taki sposób, jak

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

Czy coś w tym stylu? Jeśli to zrobisz, będziesz otwarty na wszelkiego rodzaju exploity, a także zobaczysz opisane przez siebie zachowanie, w którym wynikowy ciąg nie jest już prawidłowym kodem SQL. Najpierw musiałbyś uciec przed parametrem podanym przez użytkownika.

Najlepszym rozwiązaniem jest użycie PreparedStatements, więc to robisz

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

Nie widzę jednak żadnego szybkiego sposobu rozwiązania problemu bez zmiany kodu Java, być może z wyjątkiem ucieczki/odczyszczenia danych wejściowych, zanim trafią one do kodu (np. JavaScript, jeśli jesteś aplikacją internetową)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mapowanie znaków / wyszukiwanie i zamiana znak po znaku w SQL Server 2008 R2

  2. Jak rozróżniać wielkość liter w kolumnie w sql 2005 lub 2008?

  3. Zaleta błędu odmowy dostępu do serwera połączonego SQL 2008

  4. Zwróć listę obliczonych kolumn w SQL Server

  5. Obcinane pole SQL Server