Екранування рядків

Екрануйте або розекрануйте рядки для 8 форматів: HTML, XML, JavaScript, Java, .Net (C#), JSON, CSV і SQL.
Уся обробка відбувається локально у вашому браузері — ваші дані ніколи не надсилаються на жоден сервер.
Формат:
Напрямок:
⚠ Попередження щодо безпеки: екранування рядків не є заміною параметризованих запитів. Одне лише екранування НЕ запобігає ін'єкціям SQL. У виробничому коді завжди використовуйте параметризовані запити (підготовлені оператори).
Як користуватися: оберіть формат і напрямок (Екрануйте / Розекрануйте), потім введіть або вставте текст — вивід оновлюється автоматично. Натисніть Обробити, щоб запустити перетворення вручну.
Для режимів JSON, JavaScript, Java і .Net позначте Екранувати всі не-ASCII символи, щоб перетворити символи на кшталт китайських на послідовності \uXXXX.
Розекрануйте скасовує екранування: &lt; стає <, \n стає переносом рядка тощо.
HTML: Екрануйте перетворює & < > " ' на сутності HTML (&amp; &lt; &gt; &quot; &#39;). Використовуйте це, коли вбудовуєте текст, створений користувачем, в HTML, щоб запобігти атакам XSS.
Розекрануйте перетворює сутності HTML (&amp; &lt; &gt; &quot; &#39;) назад на початкові символи. Використовує нативний HTML-парсер браузера для надійного декодування всіх іменованих і числових сутностей.
XML: Екрануйте перетворює ті самі 5 символів, що й HTML (& < > " '), на безпечні для XML сутності. XML вимагає екранувати всі символи &, навіть у значеннях атрибутів.
Розекрануйте перетворює сутності XML назад на початкові символи. Обробляє 5 попередньо визначених сутностей XML плюс числові посилання на символи. Та сама логіка, що й у розекрановуванні HTML.
JavaScript: Екрануйте перетворює спеціальні символи на послідовності екранування JavaScript: \n \t \\ \" \' \xHH \uHHHH \u{H...}. Використовуйте це, коли динамічно генеруєте рядкові літерали JavaScript.
Розекрануйте перетворює послідовності екранування JavaScript (\n \t \xHH \uHHHH тощо) назад на літерні символи. Обробляє всі стандартні послідовності ECMAScript, включно з екрануваннями кодових точок \u{H...}.
JSON: Екрануйте перетворює \" \\ і керуючі символи на безпечні для JSON послідовності екранування за RFC 8259. Використовуйте це, коли вбудовуєте текст у рядкові значення JSON.
Розекрануйте перетворює послідовності екранування JSON (\" \\ \n \uXXXX тощо) назад на літерні символи. Дотримується RFC 8259: декодуються лише дійсні послідовності екранування JSON.
CSV: Екрануйте за RFC 4180: береться в подвійні лапки, якщо поля містять коми, подвійні лапки або розриви рядків. Внутрішні подвійні лапки подвоюються (" → "").
Розекрануйте скасовує екранування CSV за RFC 4180: знімає зовнішні подвійні лапки і знову відокремлює внутрішні ("" → "). Коректно обробляє багаторядкові поля та лапковані коми.
SQL: Екрануйте екранує одинарні лапки подвоєнням (' → ''), що працює в усіх основних базах даних (MySQL, PostgreSQL, SQL Server, SQLite). Це стосується лише екранування рядкових літералів — це не захищає від ін'єкцій SQL у динамічних запитах.
Розекрануйте перетворює подвоєні одинарні лапки ('' → ') назад на одинарні. Скасовує стандартне екранування рядкових літералів SQL.
Java: Екрануйте перетворює спеціальні символи на послідовності екранування Java: \n \t \r \\ \" \' \uXXXX тощо. Використовуйте це, коли генеруєте рядкові літерали Java.
Розекрануйте перетворює послідовності екранування Java назад на літерні символи. Обробляє всі стандартні послідовності екранування Java, включно з Unicode-екрануваннями \uXXXX.
.Net (C#): Екрануйте перетворює спеціальні символи на послідовності екранування C#: \n \t \r \a \v \0 \\ \" \uXXXX \UHHHHHHHH тощо. Використовуйте це, коли генеруєте рядкові літерали C#.
Розекрануйте перетворює послідовності екранування C# назад на літерні символи. Обробляє всі стандартні послідовності C#, включно з \UHHHHHHHH UTF-32 і шістнадцятковими екрануваннями змінної довжини \xHH....
Екранування залежить від контексту

Той самий текст потребує різного екранування залежно від того, куди потрапляє: тіло HTML потребує &lt; &amp; &gt;, атрибут у подвійних лапках додатково потребує &quot;, рядок JavaScript потребує екранування зворотною скісною рискою, а URL — відсоткового кодування. Екранування для хибного контексту — саме так виникають ін'єкції розмітки та XSS.

Правило великого пальця: екрануйте для призначення, а не для джерела — вирішуйте за тим, куди дані прямують, а не звідки вони прийшли.