… are belong to us!
(Nej, vi er ikke blevet hackede!)
I går aftes tumlede jeg blot kortvarigt (igen) med et af de mest fejl-skabende områder inden for programmeringsverdenen; encoding.
Base64 encoding og decoding er smart til overførsel og delvist til lagring af binære data over ikke binære forbindelser / lagerdestinationer. Eksempelvis som HTTP POST data eller svar data på et HTTP GET request, og ligeledes til lagring i en cookie, eller en flash variabel og så videre.
Problemet opstår når et led i data-kæden misforstår base64 og urlencoder det “bare for at være sikker” og fordi “det plejer man da at gøre”. Urlencoding anvendes ofte på streng data for at sikre at disse data kan overleve at indgå som en parameter i en URL adresse. Her vil man typisk omforme mellemrum, specialtegn med videre, til gyldige URL adresse tegn (se kapitel 2 i RFC3986).
Problemet var nemt løst, men som altid med encoding-problemer, handler fejlsøgningen mest af alt om at forstå/gennemskue hele vejen dataene rejser fra start til slut og tilbage igen.
All your base64 YXJlIGJlbG9uZyB0byB1cw==