Znak psujący polecenie do bazy MS SQL

0

Mam problem ze znakiem '. . Piszę program oparty o bazę danych MS SQL. Podczas napisanej wiadomości w moim programie, która zawiera ten znak, jest ona zapisywana do bazy danych. Lecz jeśli te dane, które chcę zapisać posiadają znak ', to pojawia się błąd w wykonywaniu programu. Naturalne, bo jeśli dodajemy dane tekstowe to polecenie posiada takie znaki.

com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near ...

Wie ktoś jak można temu zaradzić?

2

:D SQLInjection by desing :D
Należy nie kleić gołych stringów jako zapytania do bazy. Użyj prepared statements albo jakiegoś ORMa. Nie sklejaj na pałe stringów od użytkownika! Załóżmy że chcesz zalogować usera i sprawdzasz czy podane hasło jest poprawne np. przez select username, password from table where username='"+username+"' and password='"+password+"'
A teraz ktoś ci poda jako hasło dupa' or '1'='1. Zobacz co z takiego zapytania wyjdzie ;) Albo dupa' union select tajnedane, tajnedane2 from tajnatabela where '1'='1
Że już o klasycznym dupa'; drop database nie wspominam...

0

Wielkie dzięki. To co podałeś jest świetnym rozwiązaniem. Zastosuję prepared statements. Jeszcze raz dzięki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1