sql >> Databáze >  >> RDS >> Sqlserver

Jak zachytit/kódovat speciální znak pro SQL Server v aplikaci Java?

Hádám, že vytvoříte SQL nějakým způsobem jako

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

Nebo něco podobného? Pokud to uděláte, budete otevřeni všem druhům exploitů a také uvidíte chování, které popisujete, kdy výsledný řetězec již není platný SQL. Nejprve byste museli escapovat parametr zadaný uživatelem.

Nejlepším řešením je použít PreparedStatements, takže to uděláte

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

Nevidím žádný rychlý způsob, jak vyřešit váš problém, aniž bych změnil jakýkoli kód Java, zablokujte možná escapování/dezinfekci vstupu před tím, než narazí na váš kód (např. javascript, pokud jste webová aplikace)



  1. Postgres Query Plan, proč je odhad řádku tak špatný

  2. Aktualizace ResultSets s typy SQL Array v JDBC / PostgreSQL

  3. Oracle INSTR zpětně v Oracle SQL

  4. Jak odkazovat na klíče JSON, které obsahují speciální znaky při používání OPENJSON, JSON_QUERY a JSON_VALUE (SQL Server)