SQL escape/unescape odnosi się do procesu oczyszczania tekstu wejściowego, aby można go było bezpiecznie osadzić w instrukcjach SQL.
Eskapowanie modyfikuje znaki specjalne (takie jak cudzysłowy lub ukośniki odwrotne) w sposób, który zapobiega błędom składniowym lub wykonywaniu złośliwego kodu.
Unescaping konwertuje znaki ucieczki z powrotem do ich oryginalnej formy, zwykle w celu wyświetlenia lub dalszego przetwarzania.
Aby zapobiegać atakom typu SQL injection, w których złośliwe dane wejściowe mogą zmienić logikę zapytania SQL.
Aby uniknąc błędów składniowych w zapytaniach, gdy dane zawierają znaki takie jak ', " lub \.
Aby zachować integralność danych, zapewniając, że dane wejściowe użytkownika są przechowywane i pobierane dokładnie tak, jak zostały wprowadzone.
Eskapowanie odbywa się poprzez:
Podwajanie pojedynczych cudzysłowów w ciągach znaków (np. „O'Brien” staje się „O''Brien”).
Używanie wbudowanych funkcji bazy danych lub bibliotek do prawidłowego uciekania danych wejściowych.
Unescaping występuje podczas pobierania danych, często obsługiwane automatycznie przez bazę danych lub warstwę aplikacji.
We współczesnym rozwoju jest to zazwyczaj zarządzane przez parametryzowane zapytania lub ORM (Object-Relational Mappers), które obsługują escaping bezpiecznie i automatycznie.
Podczas wstawiania lub wykonywania zapytań dotyczących danych użytkownika bezpośrednio w surowym SQL (niezalecane, chyba że odpowiednio escapingowane).
Podczas pracy ze starszymi systemami lub surowymi ciągami SQL, w których nie ma automatycznej ochrony.
Zawsze escapuj dane wejściowe, chyba że używasz przygotowane oświadczenia lub sparametryzowane zapytania, które są preferowanymi i bezpieczniejszymi alternatywami.