Ett bättre HTMLencode för skydd mot cross-site scripting (XSS)
Detta är enbart för folk som gör hemsidor.
Cross site scripting kan vara riktigt otrevligt. Vid interaktion med en hemsida kan mindre snälla besökare skicka in kod som kan göra skada. I VBscript finns server.HTMLencode för att ersätta problematiska tecken med dess motsvarighet i HTML-kod, andra språk har sina motsvarigheter. Tyvärr brukar detta inte vara full tillräckligt. Läs på MicroSoft om server.HTMLencode och vilka tecken som ersätts.
Vad händer om man vill vara säkrare eller om man vill ha alternativ på vad som ersätts?
HTMLencode med alternativ
Jag använder följande:
‘//////////////////////////////////////////////////////////////
‘///
‘/// This script was created by Marcin Nowak and published at http://mnowak.se
‘/// Feel free to use this script as long as you include this disclaimer.
‘/// A link to http://mnowak.se is appriciated.
‘///
‘//////////////////////////////////////////////////////////////
function getHTMLencode(str,char)
dim temp, i
temp=”"
if len(str)=0 then
str=”"
else
if char=”all” then
for i=1 to len(str)
temp=temp&””&ascw(mid(str,i,1))&”;”
next
str=temp
elseif char=”nonletters” then
for i=1 to len(str)
if not instr(”abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ”,mid(str,i,1))>0 then
temp=temp&””&ascw(mid(str,i,1))&”;”
else
temp=temp&mid(str,i,1)
end if
next
str=temp
elseif len(char)>0 then
for i=1 to len(str)
if instr(char,mid(str,i,1))>0 then
temp=temp&””&ascw(mid(str,i,1))&”;”
else
temp=temp&mid(str,i,1)
end if
next
str=temp
else
str=server.HTMLEncode(str)
end if
end if
temp=empty
getHTMLencode=str
end function
str är strängen som ska utvärderas, char är ersättningsalternativ
char kan ha följande värden:
all - ersätter alla tecken med html-kod, perfekt för den paranoide/nogranne.
nonletters - ersätter alla tecken förutom engelska bokstäver
valfria tecken - du anger själv vilka tecken som ska ersättas. Ex: “abc” skulle ersätta endast bokstäverna a, b och c med HTML-kod.
“” - anger du bara en tom sträng så kör den traditionella server.HTMLencode.
Fungerar i UTF-8
Notera att denna funktion fungerar i UTF-8 tack vare ascW.
Som nämnt i skriptet, om du vill använda det så är en länk uppskattad.