webForumDet fria alternativet

utf8_decode() och tillbaka igen?

3 svar · 503 visningar · startad av Oddish

OddishMedlem sedan apr. 200624 inlägg
#1

Denna artikel är en bland många som råder oss att köra utf8_decode() på input innan strip_tags() eller htmlspecialchars() m.m. Detta för att förhindra att någon elaking ändå lyckas smyga in html eller javascript genom att skicka taggarna som utf8.

Mitt problem är att texten pajar när jag gör på det viset. Å, Ä, Ö och andra unicode-tecken blir bara en massa frågetecken. Så, hur använder jag utf8_encode()-skyddet mot XSS-attacker utan att förstöra texten?

MatteMedlem sedan aug. 20002 975 inlägg
#2

Du skulle överhuvudtaget taget inte använda utf8_encode() för det, utan utf8_decode() på det som kommer från GET, POST och cookies.

Sedan är jag tveksam om det har någon betydelse ifall du kör sidan med charset iso-8859-1. Men det kanske någon annan vet bättre.

OddishMedlem sedan apr. 200624 inlägg
#3

Matte skrev:

Du skulle överhuvudtaget taget inte använda utf8_encode() för det, utan utf8_decode() på det som kommer från GET, POST och cookies.

Jag skrev ju faktiskt utf8_decode() både i rubriken och i första stycket, sedan blev det lite fel. Naturligtvis menar jag utf8_decode(). :)

Matte skrev:

Sedan är jag tveksam om det har någon betydelse ifall du kör sidan med charset iso-8859-1.

Nope, det har ingen betydelse. Jag kör iso-8859-1 på de sidor där problemet uppstår.

MatteMedlem sedan aug. 20002 975 inlägg
#4

Jag gjorde lite test på kod som var UTF8-kodad, och den gick alldeles utmärkt att köra htmlentities(), strip_tags() eller andra kontroller på, så koden i länken du visade på hade ingen betydelse av den anledning de pekar på.

133 ms totalt · 3 externa anrop · v20260731065814-full.cf67ef55
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)