sql >> Databáze >  >> RDS >> Mysql

Jak uniknout znakům uvozovek v MySQL a Java

Dovolte mi to zkusit a pochopit...

Příchozí soubor obsahuje uvozovky. Chcete jej odeslat do databáze. Když to získáte zpět z databáze, stále chcete, aby tam ty uvozovky byly.

Máte tedy problém pouze do/z databáze?

Pokud ano, pak velice máte podezření, že děláte něco na příkaz:(Zabalím to do prohlášení o vyloučení odpovědnosti, aby nic netušící lidé neporozuměli a nestříhali/vkládali do svých vlastních aplikací.;))

Špatné – nedělejte to

String sql = "insert into foo (bar,baz) values(" +myValue1 + ", " + myValue2 + ")";
Statement stmt = connection.createStatement();
stmt.executeUpdate(sql);

Špatné – nedělejte to

Pokud ano, měli byste skutečně používat minimálně parametry připraveného příkazu. a) budete méně zranitelní vůči škodlivému odpadu, když smažete všechny své tabulky, a b) nebudete mít žádné problémy s únikem.

String sql = "insert into foo (bar, baz) values( ?, ? )";
PreparedStatement stmt = connection.prepareStatement(sql);
stmt.setString(1, myValue1);
stmt.setString(2, myValue2);
stmt.executeUpdate();

Všimněte si, že je to také bezpečnější v případě věcí, jako jsou CLOB a specifika různých implementací databází (myslím na vás, Oracle>))

Pokud se jedná o nějaký jiný druh úniku, tedy do/z XML nebo do/z HTML, pak je to jiné, ale je to dobře zdokumentováno na celém webu.

Nebo poskytněte nějaký příklad kódu, pokud jsem úplně mimo.



  1. MySQL porovnejte now() (pouze datum, nikoli čas) s polem datetime

  2. MySQL mění typ autentizace ze standardního na caching_sha2_password

  3. Výpočet celkové doby trvání v MySQL

  4. 2 způsoby, jak zřetězit řetězce a čísla v MariaDB