Powrót do bloga
Poradniki

Kodowanie i szyfrowanie tekstu online — ważne różnice

Base64, kodowanie URL, HTML i skróty: zastosowania oraz granice ochrony danych. Dlaczego zwykły SHA-256 nie służy do przechowywania haseł.

Weboteka17 marca 20262 min czytania

Kodowanie, szyfrowanie i skróty to różne operacje

Kodowanie zmienia reprezentację danych, aby dało się je przenieść lub zapisać w danym formacie. Szyfrowanie chroni poufność przy użyciu klucza. Funkcja skrótu wylicza skrót danych; sama nie ukrywa skutecznie łatwych do odgadnięcia wartości i nie jest „szyfrowaniem asymetrycznym”.

Base64 i adresy URL

Base64 jest odwracalne bez tajnego klucza. Każde trzy bajty wejścia zapisuje zwykle czterema znakami, z dopełnieniem zależnym od długości. Base64url używa wariantu alfabetu odpowiedniego dla URL; nie należy bez sprawdzenia zamieniać tych formatów. RFC 4648.

Base64 Encoder/Decoder przydaje się do eksperymentów z danymi testowymi. Zakodowane hasło nadal jest hasłem, które odbiorca może łatwo odczytać. Dodanie kodowania URL ani rozdzielenie tekstu między email i SMS nie zamienia go w bezpieczny protokół przekazywania sekretów.

Przy budowaniu zapytania URL używaj parsera i koduj wartości parametrów. Znak & może oddzielać kolejne parametry; przecinek nie jest takim separatorem. Nie koduj całego gotowego adresu jak pojedynczej wartości. MDN: URLSearchParams.

HTML: kodowanie zależy od kontekstu

Aby wyświetlić znak < jako tekst w HTML, można użyć encji &lt;. Nie oznacza to, że ta sama transformacja zabezpiecza JavaScript, atrybut URL i cały fragment HTML. Używaj bezpiecznych API wyświetlania tekstu oraz mechanizmów frameworka; nie wstawiaj niezaufanych danych jako wykonywalnego HTML. OWASP: zapobieganie XSS.

SHA-256, hasła i integralność

SHA-256 jest przydatny do porównywania skrótów, ale zgodność z sumą kontrolną potwierdza oczekiwaną treść tylko wtedy, gdy sama suma pochodzi z zaufanego źródła. Atakujący może podmienić plik i niezabezpieczony skrót obok niego.

Nie przechowuj haseł jako zwykłego SHA-256. Do tego służą algorytmy z solą i kosztem obliczeń, np. Argon2id w sprawdzonej bibliotece. Dwie poprawnie posolone reprezentacje tego samego hasła mogą być różne. Skrót adresu email nie jest gwarancją anonimizacji, ponieważ możliwe wartości da się odgadywać. OWASP: przechowywanie haseł.

JWT i kodowanie znaków

Zdekodowany JWT nie jest zweryfikowanym poświadczeniem. Podpisany JWS i szyfrowany JWE mają odmienne struktury; weryfikacja wymaga odpowiedniego algorytmu, klucza i sprawdzenia ograniczeń tokenu. RFC 7519.

ASCII obejmuje 128 wartości, nie wszystkie znaki świata. Do polskiego tekstu typowo używa się Unicode zakodowanego np. w UTF-8. Wymieniaj dane wraz z informacją o kodowaniu. Szyfr Cezara traktuj jako ćwiczenie edukacyjne, nigdy jako ochronę poufnych informacji.

Udostępnij artykuł

Powiązane narzędzia

Powiązane artykuły