webForumDet fria alternativet
Logga in / Bli medlem

utf8_decode() och tillbaka igen?

PHP

3 svar · 505 visningar · startad av Oddish

Medlem sedan apr. 200624 inlägg
Trådstart#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?

Medlem 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.

Medlem 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.

Medlem 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å.

2783 ms totalt · 4 externa anrop · v20260731065814-full.81e7e81c
1645 ms — deklarationer (db)
0 ms — hämta statistik (cache)
1114 ms — hämta tråd, inlägg och bilagor (db)
1643 ms — ändringar (db)