Skip to main content
CheckTown
Інструменти

Екранування рядків: Як обробляти спеціальні символи в коді

Опубліковано 6 хв читання
У цій статті

Що таке екранування рядків?

Екранування рядків — це процес додавання спеціальних символів, щоб символи з синтаксичним значенням оброблялися як буквальний текст. Кожна мова програмування та формат даних резервують певні символи — лапки в JSON, кутові дужки в HTML, знаки відсотка в URL.

Без належного екранування рядки зі спеціальними символами спричиняють помилки парсингу, вразливості безпеки як XSS та SQL-ін'єкції, або пошкоджений вивід.

Формати екранування

Різні контексти мають різні правила екранування:

  • Екранування JSON — екранує лапки (\"), зворотні слеші (\\) та керуючі символи (\n, \t, \r)
  • Екранування HTML — перетворює < на &lt;, > на &gt;, & на &amp;. Запобігає інтерпретації вмісту як 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-екрануйте.

Пов'язані інструменти