У цій статті
Що таке екранування рядків?
Екранування рядків — це процес додавання спеціальних символів, щоб символи з синтаксичним значенням оброблялися як буквальний текст. Кожна мова програмування та формат даних резервують певні символи — лапки в JSON, кутові дужки в HTML, знаки відсотка в URL.
Без належного екранування рядки зі спеціальними символами спричиняють помилки парсингу, вразливості безпеки як XSS та SQL-ін'єкції, або пошкоджений вивід.
Формати екранування
Різні контексти мають різні правила екранування:
- Екранування JSON — екранує лапки (\"), зворотні слеші (\\) та керуючі символи (\n, \t, \r)
- Екранування HTML — перетворює < на <, > на >, & на &. Запобігає інтерпретації вмісту як HTML-тегів
- Кодування URL — замінює небезпечні символи hex-кодами %XX (пробіл стає %20)
- Екранування SQL — подвоює одинарні лапки (' стає ''). Запобігає атакам SQL-ін'єкції
- Екранування regex — додає зворотний слеш перед метасимволами . * + ? для буквального зіставлення
Поширені випадки використання
Екранування рядків з'являється протягом усього циклу розробки:
- Вбудовування введення користувача — правильне екранування при вставці в JSON, HTML або SQL запобігає помилкам та вразливостям
- Очищення форм — веб-додатки повинні екранувати відправлений вміст перед відображенням для запобігання XSS-атакам
- Побудова API-запитів — при створенні тіл JSON-запитів усі значення рядків повинні бути правильно екрановані
Спробуйте безкоштовно — реєстрація не потрібна
Спробувати інструмент екранування →Екранування vs Кодування: яка різниця?
Екранування та кодування часто плутають. Екранування додає маркери, щоб символи оброблялися буквально. Вивід залишається в тому ж форматі.
Кодування перетворює дані з однієї форми в іншу. Base64 перетворює бінарні дані в ASCII. Ключова відмінність: екранування зберігає формат, кодування змінює його.
Поради та найкращі практики
Правильне екранування запобігає помилкам та вразливостям:
- Екрануйте на межі — завжди екрануйте рядки в точці входу в новий контекст
- Уникайте подвійного екранування — якщо фреймворк вже екранує вивід, ручне екранування створить видимі зворотні слеші
- Використовуйте контекстно-специфічне екранування — HTML-екранування не захищає від SQL-ін'єкції і навпаки
Часті запитання
Коли екранувати вручну, а коли використовувати бібліотеку?
Завжди віддавайте перевагу бібліотечним функціям. Мови надають вбудовані утиліти, які правильно обробляють крайні випадки.
Чи запобігає екранування всім XSS-атакам?
HTML-екранування запобігає більшості XSS-атак, але не всім векторам. Вміст у контекстах JavaScript, CSS або URL потребує додаткової специфічної санітизації. Заголовки CSP забезпечують найнадійніший захист.
В якому порядку екранувати, коли дані проходять через кілька форматів?
Екрануйте спочатку для найвнутрішнього контексту. Наприклад, для вбудовування рядка в JSON, який буде розміщений в HTML-атрибуті, спочатку JSON-екрануйте, потім HTML-екрануйте.