Utilia

Екраниране и деекраниране на низове

Екранирайте или деекранирайте низ за JSON, JavaScript, шаблонни литерали, SQL, CSV, HTML атрибути, регулярни изрази и URL адреси направо във вашия браузър.

Как да екранирате или деекранирате низ

  1. Изберете целта в Формат: JSON низ, JavaScript низ, JavaScript шаблонен литерал, SQL низов литерал, CSV поле, стойност на HTML атрибут, регулярен израз или компонент на URL.
  2. Въведете или поставете текста във входното поле.
  3. Щракнете върху Екранирай, за да превърнете обикновен текст в безопасен литерал, или върху Деекранирай, за да превърнете литерал обратно в обикновен текст. Резултатът се обновява, докато пишете, в последно избраната посока.
  4. Настройте опциите, показани за формата: Добави обграждащи кавички, Екранирай знаците извън ASCII или Интервалите като + (данни от форма).
  5. Щракнете върху Копирай или Използвай резултата като вход, за да обърнете операцията и да проверите двупосочното преобразуване.

Броят знаци преди и след е показан под бутоните. Всичко се изпълнява във вашия браузър; нищо не се качва.

Какво прави всеки формат

  • JSON низ: екранира ", \ и управляващите знаци (\n, \t, \u0000…), точно като JSON.stringify. С Екранирай знаците извън ASCII всеки знак над U+007E става \uXXXX (емотиконите стават суррогатна двойка като 😀). Деекранирането приема текста със или без двойните му кавички и толерира сурови нови редове.
  • JavaScript низ (‘…’): екранира обратната наклонена черта, апострофа, новите редове и управляващите знаци, плюс U+2028 и U+2029, които чупят по-старите машини. Деекранирането разбира \x41, A, \u{1F600}, остарели осмични екранирания като \101 и продължения на ред.
  • JavaScript шаблонен литерал (`…`): екранира обратните апострофи, обратните наклонени черти и ${, така че никакъв израз да не се изчислява; новите редове и табулациите остават, защото шаблонните литерали ги позволяват.
  • SQL низов литерал (‘…’): удвоява апострофите (O'Brien → 'O''Brien'), както в стандартния SQL. Деекранирането отказва апостроф, който не е удвоен. Обратните наклонени черти се оставят: MySQL в режима си по подразбиране също третира \ като екраниращ знак, затова проверете правилата на вашата база данни.
  • CSV поле (RFC 4180): обгражда полето в двойни кавички и удвоява вътрешните кавички, когато съдържа запетая, точка и запетая, табулация, кавичка, нов ред или начален/краен интервал. Добави обграждащи кавички налага кавичките.
  • Стойност на HTML атрибут: заменя &, <, >, " и ' със символни обекти (entities), което е безопасно както в атрибути с единични, така и с двойни кавички. Деекранирането декодира числовите препратки и &amp;, &lt;, &gt;, &quot;, &apos; и &nbsp;.
  • Регулярен израз (буквален текст): екранира с обратна наклонена черта . * + ? ^ $ { } ( ) | [ ] \ /, плюс новите редове и табулациите, така че шаблонът да съвпада с текста буквално. Резултатът е валиден със или без флага u.
  • Компонент на URL (процентно кодиране): работи като encodeURIComponent, като кодира всичко освен букви, цифри и - _ . ! ~ * ' ( ) като UTF-8 байтове. Интервалите като + (данни от форма) използва конвенцията application/x-www-form-urlencoded.

Екранирането не е граница на сигурността за SQL

Когато изберете SQL, инструментът показва напомняне, което заслужава да се повтори: истинското решение срещу SQL инжекция е параметризираната заявка (prepared statement), при която стойността се изпраща отделно от SQL текста. Ръчното екраниране е крехко: зависи от базата данни, набора знаци на връзката и настройки като обработката на обратната наклонена черта в MySQL. Използвайте този резултат за четене на логове, писане на тестови данни или отстраняване на грешки в заявка, никога за съставяне на заявки от въведени от потребител данни.

За CSV инструментът предупреждава и когато стойност започва с =, +, - или @: електронна таблица може да я изпълни като формула (CSV инжекция). Кавичките не го предотвратяват; обичайното смекчаване е да се добави апостроф или интервал пред стойността.

Често задавани въпроси

Каква е разликата между JSON низ и JavaScript низ?

JSON позволява само двойни кавички и малък набор екранирания (\" \\ \/ \b \f \n \r \t \uXXXX). JavaScript приема и единични кавички, обратни апострофи, \x41, \u{…}, \v и \0. Валидните JSON екранирания са валидни в JavaScript, но не и обратното.

Защо деекранирането не успява с „невалидна екранираща последователност“?

Текстът съдържа обратна наклонена черта, следвана от нещо, което форматът не позволява, например \u12 с по-малко от четири шестнадесетични цифри или самотна обратна наклонена черта накрая. Съобщението за грешка показва проблемната последователност.

Нуждае ли се CSV от кавички около всяко поле?

Не. RFC 4180 изисква кавички само когато полето съдържа запетая, двойна кавичка или нов ред. Този инструмент слага кавички и около точка и запетая, табулации и начални или крайни интервали, защото много електронни таблици ги използват като разделители или ги изрязват.

Достатъчно ли е екранирането на HTML атрибут, за да се предотврати XSS?

Правилно е за текст, поставен в стойност на атрибут в кавички. Не е достатъчно за атрибути, които сами по себе си са код или адреси, като onclick или href="javascript:…"; те изискват валидиране, а не само екраниране.

Изпраща ли се текстът ми на сървър?

Не. Всички преобразувания се изпълняват локално във вашия браузър, така че можете безопасно да поставяте конфигурационни стойности или данни, които не бихте споделили.