Teknobench

Kodifikatur u Dekodifikatur tal-URL

Kodifikatur u dekodifikatur tal-URL b’xejn. Għamel percent-encode ta’ parametri tal-query jew URLs sħaħ, iddekodifika sekwenzi %XX u ittratta + bħala spazju.

Mod

Kif tuża l-kodifikatur u d-dekodifikatur tal-URL

  1. Agħżel Kodifika biex tibdel test f’forma sigura għall-URL, jew Iddekodifika biex terġa’ tibdel test percent-encoded f’karattri li jinqraw.
  2. Meta tikkodifika, agħżel Mod: Komponent għal valur wieħed (bħal parametru tal-query jew segment tal-path), jew URL sħiħ biex tikkodifika indirizz sħiħ waqt li żżomm l-istruttura tiegħu intatta.
  3. Meta tiddekodifika data li ġejja minn formola HTML jew query string, ixgħel Ittratta + bħala spazju biex is-sinjali + isiru spazji.
  4. Waħħal it-test tiegħek u ikkopja r-riżultat. Jekk sekwenza ta’ percent hija malformata, l-għodda tirrapporta żball minflok tipprova tobsor.

X’inhu l-kodifikar tal-URL?

L-URLs jistgħu jkun fihom biss sett limitat ta’ karattri ASCII. Xi karattri, bħal /, ?, #, & u =, huma riżervati għax jissepparaw il-partijiet ta’ indirizz: il-path, il-query string u l-fragment. Oħrajn, bħal spazji, virgoletti, ittri b’aċċent jew emoji, ma humiex permessi. Il-kodifikar tal-URL, imsejjaħ ukoll percent-encoding, isolvi ż-żewġ problemi billi jissostitwixxi kull byte problematiku b’% segwit minn żewġ ċifri eżadeċimali.

It-test l-ewwel jinbidel f’bytes UTF-8, u kull byte jiġi kkodifikat separatament. Spazju jsir %20, ampersand isir %26, é (żewġ bytes f’UTF-8) isir %C3%A9, u l-emoji 😀 (erba’ bytes) isir %F0%9F%98%80. Il-karattri mhux riżervati, jiġifieri ittri, ċifri u - _ . ~, qatt ma jeħtieġu kodifikar.

Mod komponent kontra mod URL sħiħ

Li tagħżel il-mod it-tajjeb hija l-aktar deċiżjoni importanti, u li tiżbaljaha hija sors klassiku ta’ bugs.

Mod komponent jaħdem bħal encodeURIComponent ta’ JavaScript. Jikkodifika kull karattru riżervat, għalhekk ir-riżultat jista’ jitqiegħed b’mod sigur ġewwa parti waħda ta’ URL. Uża għal valuri ta’ parametri tal-query, segmenti tal-path jew kull ħaġa li utent kiteb. Per eżempju, it-terminu tat-tiftix rock & roll isir rock%20%26%20roll. Kieku ma kkodifikajtx l-&, is-server kien jaqra roll bħala l-bidu ta’ parametru ġdid.

Mod URL sħiħ jaħdem bħal encodeURI. Jassumi li d-dħul huwa diġà indirizz sħiħ u jippreserva l-karattri li jagħtuh l-istruttura, bħal : / ? # & u =, filwaqt li jikkodifika spazji u karattri mhux ASCII. Użah biex tnaddaf indirizz bħal https://example.com/café menu?q=tea f’https://example.com/caf%C3%A9%20menu?q=tea. Tużahx fuq valuri individwali: & ġewwa valur jibqa’ mhux ikkodifikat u jkisser il-query string.

Regola tajba: ibni l-URLs minn partijiet, ikkodifika kull valur f’mod komponent, u uża l-mod URL sħiħ biss għal indirizzi li tirċievi diġà assemblati.

Is-sinjal + u l-kodifikar tal-formola

Il-formoli HTML mibgħuta b’application/x-www-form-urlencoded jikkodifikaw l-ispazji bħala + minflok %20. Huwa għalhekk li l-URLs tat-tiftix spiss jidhru bħal ?q=hello+world. Id-dekodifikar standard tal-percent iħalli + kif inhu, għax f’path plus huwa sempliċement plus. Meta tiddekodifika query string jew data ta’ formola, ixgħel Ittratta + bħala spazju biex tikseb hello world. Ħallih mitfi għal paths u għal valuri fejn + litterali hu importanti, bħal numri tat-telefon jew data Base64. Sinjal plus veru f’data ta’ formola jintbagħat bħala %2B, għalhekk jiġi ddekodifikat sew fiż-żewġ każijiet.

Privatezza

Il-kodifikar u d-dekodifikar jaħdmu kompletament fil-brawżer tiegħek. Xejn minn dak li twaħħal, inklużi URLs li jistgħu jkun fihom tokens, session IDs jew data personali, ma jintbagħat lil server jew jinħażen.

Mistoqsijiet frekwenti

Għaliex id-dekodifikar jfalli b’żball “malformat”?

% irid jiġi segwit minn eżattament żewġ ċifri eżadeċimali, u l-bytes li jirriżultaw iridu jiffurmaw UTF-8 validu. Strings bħal 100%, %G1 jew sekwenza maqtugħa bħal %E2%82 ma jistgħux jiġu ddekodifikati b’mod affidabbli, għalhekk l-għodda tirrapporta l-problema minflok tipproduċi test żbaljat. Biex tinkludi sinjal tal-percent litterali, ikkodifikah bħala %25.

X’inhi d-differenza bejn %20 u +?

It-tnejn jistgħu jirrappreżentaw spazju, iżda f’kuntesti differenti. %20 huwa validu kullimkien f’URL. + ifisser spazju biss f’query strings kodifikati bħala formola; x’imkien ieħor huwa sinjal plus litterali.

Għandi nikkodifika URL sħiħ f’mod komponent?

Biss jekk l-URL kollu huwa stess valur ġewwa URL ieħor, per eżempju parametru redirect=. F’każ bħal dan, il-mod komponent huwa eżattament korrett: https://a.com/?x=1 isir https%3A%2F%2Fa.com%2F%3Fx%3D1.

Għaliex it-test tiegħi huwa kkodifikat darbtejn?

Id-double encoding iseħħ meta test diġà kkodifikat jerġa’ jiġi kkodifikat, u %20 isir %2520. Iddekodifika darba biex tiċċekkja, u kun żgur li kull valur jiġi kkodifikat biss fil-mument li jiddaħħal fl-URL.

Il-kodifikar tal-URL jaħbi jew jipproteġi d-data?

Le. Il-percent-encoding huwa kompletament riversibbli u ma jagħti ebda sigurtà. Valuri sensittivi fl-URLs jistgħu jispiċċaw fl-istorja tal-brawżer u fil-logs tas-server, għalhekk evita li tpoġġi sigrieti fl-URLs xejn.