SQL escape/unescape označuje proces očištění textového vstupu, aby mohl být bezpečně vložen do příkazů SQL.
Escaping upravuje speciální znaky (jako jsou uvozovky nebo zpětná lomítka) způsobem, který zabraňuje syntaktickým chybám nebo spuštění škodlivého kódu.
Unescapeing převádí escapované znaky zpět do jejich původní podoby, obvykle pro zobrazení nebo další zpracování.
Aby se zabránilo útokům SQL injection, kdy škodlivý vstup může změnit logiku SQL dotazu.
Aby se vyhnuli syntaktickým chybám v dotazech, když data obsahují znaky jako ', " nebo \.
Aby se zachovala integrita dat, je třeba zajistit, aby byl uživatelský vstup uložen a načten přesně tak, jak byl zadán.
Escaping se provádí pomocí:
Zdvojnásobení jednoduchých uvozovek v řetězcích (např. 'O'Brien' se stane 'O''Brien').
Použití vestavěných databázových funkcí nebo knihoven pro správné escaping vstupů.
K unescapingu dochází při načítání dat, často automaticky zpracované databází nebo aplikační vrstvou.
V moderním vývoji je to obvykle řízeno parametrizovanými dotazy nebo ORM (mapovači objektově-relačních znaků), které bezpečně a automaticky zvládají unescaping.
Při vkládání nebo dotazování na uživatelský vstup přímo do nezpracovaného SQL (nedoporučuje se, pokud není správně escapován).
Při práci se zastaralými systémy nebo nezpracovanými řetězci SQL, kde není zavedena automatická ochrana.
Vždy escapujte vstupy, pokud nepoužíváte připravené příkazy nebo parametrizované dotazy, které jsou preferované a bezpečnější alternativy.