webForumDet fria alternativet

Cross Site Scripting och Reguljära uttryck

ASP

10 svar · 449 visningar · startad av medialabs

Medlem sedan mars 20023 686 inlägg
Frågan#1

Hej och glad påsk..

Hittade ett mindre kul Cross Site Scripting-hål som jag måste åtgärda nu. Problemet är att jag inte kan använda mig av Server.HtmlEncode då jag plockar fram text+htmlkod från en databas i samma veva som jag skickar tillbaka all info til besökaren+ dennes textsträng som han/hon matade in.

har förstått att Reguljära uttryck skulle kunna hjälpa mig en bit på vägen. Hur skriver man en sådan funktion för att bara tillåta alfabetets alla bokstäver, stora/små och siffror och utropstecknet och frågetecknet?

Hittade detta när jag sökte, men som jag förstod det så kollar den bara efter bokstäver och siffror, men inte efter utropstecknet och frågetecknet?

Går det att göra funktionen "mindre" och snabbare också?

set objRX = new RegExp

objRX.Global = true
objRX.IgnoreCase = true
objRX.Pattern = [^\w\dåäö]

if( objRX.Test( söksträng ) ) then
  något som inte ska vara där hittades
end if
Medlem sedan juni 20019 519 inlägg
#2

# \w Träffar vilket ord som helst, samma som [a-zA-Z_0-9]
# \W Träffar vilket icke-ord som helst, samma som [^a-zA-Z_0-9]

dvs:
skriv istället:

objRX.Pattern = "[\W]"

mellanslag också då eller? vilka tecken får du inte ha då? ¤#!#% tecken eller?

^ i din fråga menar att man inte få träffa något av dina val...
\s för space...

http://www.webeye.nu/default2.asp?que=asp/default.asp&exec=asp/artiklar/asp_11.asp

kan nog hjälpa dig med allt du behöver för ditt problem.

Medlem sedan aug. 20039 340 inlägg
#3
set objRX = new RegExp

objRX.Global = true
objRX.IgnoreCase = true
objRX.Pattern = "^[\w\dåäö?!]*$"

if( objRX.Test( söksträng ) ) then
  ' korrekt uttryck
else
  ' något som inte ska vara där hittades
end if
Medlem sedan mars 20023 686 inlägg
#4

nitro2k01 skrev:

set objRX = new RegExp

objRX.Global = true
objRX.IgnoreCase = true
objRX.Pattern = "^[\w\dåäö?!]*$"

if( objRX.Test( söksträng ) ) then
  ' korrekt uttryck
else
  ' något som inte ska vara där hittades
end if

Fungerar perfekt! Jag vill tacka voigtann1 också för artikeln och förklaringarna.

Glad påsk!

Medlem sedan juni 20019 519 inlägg
#5

\w\d är onödigt... då \w även ta emot 0-9 som \d är... även åäö är med i \w...

Medlem sedan maj 200010 687 inlägg
#6

åäö är inte med i \w. Däremot är _ det.

Medlem sedan juni 20019 519 inlägg
#7

konstigt erik för jag provade det i asp.net igår med åäö och då räcker det med \w...

Medlem sedan maj 200010 687 inlägg
#8

Det kanske är annorlunda i .NET, men i VBScript så matchar inte \w på åäö.

Medlem sedan juni 20019 519 inlägg
#9

såg det också.. synd :e... du menar _ på åäö? :D

Medlem sedan mars 20023 686 inlägg
#10

Så det är Ok om jag skriver på detta sätt för att tillåta mellanslag och punkt och tecknet: -

objRX.Pattern = "^[\w\s\dåäö?!-.]*$"
Medlem sedan juni 20019 519 inlägg
#11

precis.. fast \d finns i \w också :e

Webeye har grymma sidor:
http://www.webeye.nu/default2.asp?que=asp/regexptester.asp

270 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
131 ms — ändringar (db)