Kodowanie url to system który zamienia niektóre znaki na znak procentu + znacznik szesnastkowy. Stosowany jest głównie po to, by przesyłane znaki specjalne były odpowiednio zinterpretowane przez serwer odbierający żądanie.

RCF3986 określa dwie grupy znaków – niezastrzeżone i zastrzeżone.

Znaki niezastrzeżone to:

Znaki zastrzeżone to:

Lista znaków z odpowiadającym im kodowaniem:

Kodowanie url używa się w wielu przypadkach:

  • wysyłanie żądań do api
  • parsowanie adresów przed dodaniem do bazy danych
  • testowanie ( i omijanie) filtrów w aplikacjach wymagających interakcji

Pełną listę wszystkich znaków wraz z odpowiednim kodowaniem znajdziesz tutaj

Jak zakodować url?

Kodowanie url można wykonać na wiele sposobów , w zależności od używanego języka:

PHP

Kod:

Wynik:

PERL ( wymagany pakiet ​liburi-encode-perl )

Kod:

Wynik:

Python

Kod:

Wynik:

Kodowanie znaków niezastrzeżonych – możliwe?

Tak – zamieniamy znak na kod ASCII i dodajemy znak % na początku.

np. A to %41

Podwójne kodowanie

Podwójne kodowanie jest tym samym co pojedyńcze, z tym że dodatkowo zamieniamy znak % z pierwszego kodowania na jego odpowiedni, tj %25.

Przykładowo znak równości (=):
– kodowanie pojedyńcze: %3D
– kodowanie podwójne: %253D

Najczęściej jest stosowane w przypadku ataków LFI ( Local File Inclusion), lub chęci zmylenia filtrów jeśli wykrywają pojedyńcze kodowanie.
Największą “sławę” zdobyło w chwili ujawnienia istnienia tej luki w IIS 5.0 kilkanaście lat temu (CVE-2001-333)

Po(x)jne kodowanie

Kodowanie znaków można wykonać dowolną ilość razy – w kolejnych iteracjach zasada działania jest taka sama jak dla kodowania podwójnego.

Potrójne kodowanie dla znaku równości wynosić będzie więc %25253D , poczwórne %2525253D itp.

5 (100%) Ocen: 1