Ugrás a tartalomhoz
TextArray

A Base64 kódolás elmagyarázta: mi ez és mikor kell használni

Blog /

A Base64 mindenhol megtalálható a webfejlesztésben – e-mail fejlécekbe ágyazva, adat-URI-kba beépítve, hitelesítési tokenekben használják, és szöveges protokollokba csomagolva a bináris fájlok köré. De mi az igazából? És ha kódolja az adatokat, az nem teszi biztonságossá? A válasz nem: a Base64 kódolás, nem titkosítás. Ez egy módja annak, hogy a bináris vagy tetszőleges adatokat egyszerű ASCII-szövegként jelenítse meg, semmi több. Annak megértése, hogy mikor és miért kell használni, sok zavaró pillanatot tisztázhat a fejlesztés során.

Mi az a Base64?

A Base64 egy módszer a bináris adatok 64 biztonságos ASCII-karakteres kódolására – A–Z, a–z betűk, 0–9 számjegyek, pluszjelek és perjelek. Úgy működik, hogy bináris bemenetet vesz (legyen szó szövegről, képekről vagy nyers bájtokról), és 6 bites darabokra bontja. Minden egyes darab a Base64 ábécé indexévé válik, így a kimenet mindig olvasható szöveg. A "64" az ábécé méretére utal: 26 + 26 + 10 + 2 = 64 karakter.

Miért 64? Mert ezek a karakterek szinte minden rendszeren biztonságban vannak – e-mailben, régi terminálokon, XML-ben, JSON-ban és egyszerű szövegben. Egy bináris fájl megsérülhet az átvitel során, ha a speciális bájtokat rosszul értelmezik; A Base64 garantálja, hogy a kimenet változatlan marad bármely szöveges csatornán keresztül. Megteheti kódolja és dekódolja a Base64-et azonnal a böngészőben anélkül, hogy bárhová feltöltené adatait.

A Base64 nem titkosítás

Ez a kritikus különbség: a Base64 összezavarja az adatok megjelenését, de bárki megfordíthatja. Ha Base64-en kódolja a jelszót secret123, azzá válik c2VjcmV0MTIz - de ez nem biztonságos. A dekódolás ugyanolyan triviális. A Base64 az átvitel elhomályosítása, nem pedig a biztonság érdekében. Ha titokban kell tartania az adatokat, használja a titkosítást (például az AES-t), ne a Base64-et. A Base64 segítségével biztonságosan küldhet titkosított adatokat szöveges csatornán keresztül, de ez nem maga a titkosítás.

A Base64 általános használata

A Base64 számos valós forgatókönyvben szabványos:

  1. Adat URI-k. A képfájlra való hivatkozás helyett a képet közvetlenül beágyazhatja HTML-be vagy CSS-be adat-URI-ként: data:image/png;base64,iVBORw0KG…. Ezzel elkerülhető az extra HTTP-kérés, ami kis ikonok esetén hasznos, vagy ha az elemeket nem lehet külön tárolni.
  2. E-mail mellékletek. Az SMTP-t (e-mail protokoll) szöveges használatra tervezték. A bináris mellékletek Base64 kódolásúak küldés előtt, majd a levelezőkliens dekódolja a kézhezvételkor.
  3. Hitelesítési tokenek. Sok API a Base64-et használja a tokenekhez – nem a biztonság kedvéért, hanem azért, mert a tokenek gyakran bináris adatok, amelyeket olvasható szövegként kell továbbítani fejlécekben vagy URL-ekben.
  4. Fájlok beágyazása JSON-ba vagy XML-be. Ha egy bináris blobot (PDF-et, táblázatot, archívumot) kell belefoglalnia egy JSON API-válaszba, a Base64 karakterláncként kódolja azt, amely nem töri meg a JSON-struktúrát.

A méret többletköltsége: a Base64 növeli az adatokat

Hátránya: a Base64 kimenet körülbelül 33%-kal nagyobb, mint az eredeti bináris. Ennek az az oka, hogy 8 bites bemenetet 6 bites darabokba csomagol, és a kitöltésre akkor van szükség, ha a bemeneti hossz nem 3 többszöröse. Tehát ha egy 300 KB-os képet ágyaz be adat-URI-ként, a Base64 verzió nagyjából 400 KB-os – lassabb a betöltése és elemzése. Kis ikonok esetén ez a többletköltség megéri a mentett HTTP kérést; nagy fájlok esetén általában jobb, ha külön linkeljük őket.

Változatok és kapcsolódó kódolások

Szabványos Base64 használat + és /, amelyek speciális jelentéssel bírnak az URL-ekben és a fájlnevekben. URL-biztos Base64 helyettesítők - és _ ehelyett biztonságossá teszi a százalékos kódolás nélküli elérési utakban és lekérdezési karakterláncokban való használatát. Ha egyéni URL-kódolási sémát hoz létre, fontolja meg, hogy URL kódolás vagy az URL-biztos Base64 megfelel az Ön igényeinek.

A Base64 egyike azon számos kódolásnak, amelyek különféle problémákat oldanak meg. Hexadecimális kódolás A bináris karaktert bájtonként két olvasható karakterként ábrázolja (lassabb a dekódolás, de nincs kitöltés és ember által olvasható), gyakran hash-ekben és ellenőrző összegekben használatos. HTML entitások speciális karakterek kódolása, mint pl < és & így helyesen jelennek meg a weboldalakon – ez más probléma, mint az önkényes bináris átvitel. Minden kódolás egy adott feladat eszköze.

`,