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ń