Percent-Encoding ni nini na kwa nini ni ya lazima?
Percent-encoding ni nguzo ya msingi katika miundombinu ya kisasa ya wavuti, inayoelekeza jinsi data inavyotumwa kwenye mtandao. Katika msingi wake, mtandao unategemea Uniform Resource Identifiers (URIs) kupata rasilimali. Hata hivyo, maelezo ya URI (RFC 3986) yanazuia kabisa wahusika wanaoweza kutumika kwa usalama ndani ya URL. Wahusika wanaoruhusiwa, wanaojulikana kama 'unreserved characters', wametengwa kwa herufi kubwa na ndogo za nambari (A-Z, a-z, 0-9), vistari (-), nukta (.), alama za chini (_), na tilde (~). Kila mhusika mwingine anachukuliwa kuwa 'si salama' au 'ametengwa' kwa sababu wana maana maalum ya kimfumo katika muundo wa URL. Kwa mfano, ampersand (&) inatumiwa kutenganisha vigezo vya hojaji, alama ya sawa (=) inapeana thamani, na mshazari (/) unafafanua njia za saraka. Ikiwa unahitaji kutuma mhusika '&' kama sehemu ya data badala ya kitenganishi cha kimfumo, lazima utumie percent-encoding.
Wakati mhusika anapohitaji percent-encoding, kwanza hubadilishwa kuwa thamani ya byte kulingana na kiwango cha usimbaji cha UTF-8. Kila byte kisha inawakilishwa na nambari ya hexadecimal ya tarakimu mbili, ikitanguliwa na alama ya asilimia (%). Kwa mfano, nafasi iliyo wazi (space) inalingana na thamani ya byte 32 katika desimali, au 20 katika hexadecimal. Kwa hivyo, nafasi inakuwa '%20'. Alama ya 'at' (@) inakuwa '%40', na koma (,) inakuwa '%2C'. Ubadilishaji huu wa kimfumo unahakikisha kuwa seva za wavuti, vichuja mizigo (load balancers), na vivinjari vinaweza kutafsiri mipaka ya URL bila utata wowote au uharibifu wa data. Bila percent-encoding, kupitisha hojaji tata iliyo na data ya mtumiaji ingeharibu muundo wa URL, na kusababisha makosa ya 400 Bad Request, viungo vilivyovunjika, au hata udhaifu mkubwa wa usalama kama HTTP Parameter Pollution.
Kihistoria, mifumo tofauti ilishughulikia URL encoding kwa njia mbalimbali, wakati mwingine ikisababisha matatizo makubwa ya utangamano. Kwa mfano, data ya fomu iliyowasilishwa kupitia aina ya maudhui ya application/x-www-form-urlencoded kiasili inasimba nafasi kama alama ya kujumlisha (+), wakati RFC 3986 inasisitiza matumizi ya '%20'. Mifumo ya kisasa ya uundaji wa wavuti na lugha za programu mara nyingi zinaficha maelezo haya, lakini kuwa na zana thabiti, ya kuaminika, na 100% Bure ya kusimba maandishi kwa mkono inabaki kuwa hitaji la lazima kwa majaribio, ukaguzi wa API, na uundaji wa viungo tata. Kwa kuelewa mfumo wa msingi wa percent-encoding, wasanidi wanaweza kuhakikisha programu zao ni imara dhidi ya ingizo mbalimbali za wahusika, zikishughulikia kila kitu kuanzia maandishi ya kawaida ya ASCII hadi emojis tata za Unicode.