Niewłaściwy encoding #4

Tego odcinka mogłoby właściwie nie być. W tym przypadku sytuacja jest praktycznie taka sama, jak w poprzednim przykładzie. Dobrze to widać poniżej:

?@[\]^_{|}~')">demo 3</a><br /> <a href="#" onclick="javascript:doStuff('!\"#$%25&\'()*+,-.\/:;<=>?@[\\]^_{|}~')“>demo 4

Jedyna różnica pojawia się przy znaku /, który w drugim przypadku zyskuje postać \/. Czy ma to jakieś znaczenie w tym konkretnym kontekście? Może w pewnym, niewielkim stopniu ma, ale przed XSS nie chroni, przykład:

“><foo bar=”

Różnica w stosunku do poprzedniego przykładu sprowadza się do tego, że w tym przypadku nie jestem w stanie uzyskać tagu:

ponieważ funkcja escapowania znaków spowoduje jego przekształcenie do postaci:

<\/script>

Użycie String.fromCharCode natomiast obchodzi drobną niedogodność związaną z brakiem znaków ', “ oraz / dostępnych w “czystej” postaci. Jak widać całkiem dobrze można sobie poradzić bez nich.

Oryginał tego wpisu dostępny jest pod adresem Niewłaściwy encoding #4

Autor: Paweł Goleń