Avatar billede neander Nybegynder
23. juli 2004 - 17:15 Der er 10 kommentarer og
1 løsning

Sikkerhed på søgefunktion

Jeg har lavet en søgefunktion, som griber søgeordet fra en formular, og søger efter ordet i en database. Er nedenstående det eneste sikkerhedshul, som bør sikres, eller findes der flere tricks i den sammenhæng?

Dim ord
ord = Trim(Replace(Request.QueryString("soegeord"),"'","''"))
Avatar billede bufferzone Praktikant
23. juli 2004 - 17:22 #1
det bør du bestemt. Du bøør lave indput validering, så man kun kan søge inden for ganske bestemte grændser. F.eks. kun på ord af en vis max længde, kun et ord af gangen, dvs ingen mellemrum. f.eks. ikke på tal og specialtegn, især bør du ikke tillade ' da dette kan bruges til at indsætte kode.
Avatar billede neander Nybegynder
23. juli 2004 - 17:24 #2
bufferzone >
Men allerede med Trim(Replace(Request.QueryString("soegeord"),"'","''")) har jeg da sikret mig mod koder med pling (') har jeg ikke?
Avatar billede neander Nybegynder
23. juli 2004 - 17:38 #3
Hmm... jeg har flettet det sammen med denne funktion:

Function ValidateString(strRE)
  Dim re
  Set re = new RegExp

  re.IgnoreCase = false
  re.global = false
  re.Pattern = "^[a-zA-Z]{1,30}$"

  ValidateString = re.Test(strRE)
End Function

if NOT(ValidateString(Request.QueryString("soegeord"))) then
response.redirect "links.asp"
Else

Dim ord
ord = Trim(Replace(Request.QueryString("soegeord"),"'","''"))

Det virker fint, men jeg vil gerne have at funktionen yderligere godtager mellemrum, punktum, spørgsmåltegn og katteøjne... er det muligt?
Avatar billede neander Nybegynder
23. juli 2004 - 17:40 #4
NB: også tal fra 1-9 forresten...
Avatar billede bufferzone Praktikant
23. juli 2004 - 17:43 #5
neander>det kan jeg ikke svare dig på, jeg er ikke programmeringshaj, jeg kender principperne og ved hvordan man injecte og ved hvad der skal valideres for, ikke hvordan. Derfor en kommentar og ikke et svar
Avatar billede squashguy Nybegynder
23. juli 2004 - 17:43 #6
apostrofferne definerer start og slut på din streng. Det betyder, at alle tegn mellem disse vil blive fortolket som en streng og ikke andet. Det uanset længe på ord og specielle tegn etc.

De eneste specieltegn er apostroffer i input, som du tager højde for.

Så hvis input kun kommer i form af strenge, har du sikret dig..
Avatar billede neander Nybegynder
23. juli 2004 - 17:45 #7
hamderpolle > Så er funktionen udenom altså ikke nødvendig i min søgefunktion?
Avatar billede squashguy Nybegynder
23. juli 2004 - 17:47 #8
nej, den er ikke nødvendig i forhold til sql injektion.

du har sikret dig med denne:

Request.QueryString("soegeord"),"'","''")
Avatar billede neander Nybegynder
23. juli 2004 - 17:51 #9
okay, så er det jo ikke så svært at sikre min søgefunktion som jeg troede.
Avatar billede neander Nybegynder
23. juli 2004 - 17:59 #10
læg et svar hamderpolle :o)
Avatar billede squashguy Nybegynder
25. juli 2004 - 17:31 #11
det er så i orden :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester