Avatar billede prologic Nybegynder
13. februar 2004 - 17:15 Der er 9 kommentarer og
1 løsning

Sikkerhedshul i ASP og sql.

Hvordan undgår man at folk kan bruge ' or '' = ' e.lign. i en sql statement, hvor der indgår asp der er delt op som fx.

select * from tabel where record = '"&request.form("navn")&"' order by record ASC

Håber i kan hjælpe..
Avatar billede eagleeye Praktikant
13. februar 2004 - 17:17 #1
Huske altid at replace et ' med to '' når du bruger en tekst kolonne:

select * from tabel where record = '"& replace(request.form("navn"),"'","''")&"' order by record ASC
Avatar billede eagleeye Praktikant
13. februar 2004 - 17:20 #2
Og bruger du tal så fjern ' så du undgår fejl:

navn = replace(request.form("navn"),"'","''")
id = replace(request.form("id"),"'","")
sql = "select * from tabel where record = '" & navn & "' AND id = " & id

Så undgår du SQL fejl og folk kan udnytte det me ' or '1'='1
Avatar billede prologic Nybegynder
13. februar 2004 - 17:21 #3
Shit.. det er lidt svært at se hvad der er ' og hvad der er "
Avatar billede eagleeye Praktikant
13. februar 2004 - 17:22 #4
Ja du kan evt kopier det i i notepad så det lettere at se :)
Avatar billede eagleeye Praktikant
13. februar 2004 - 17:23 #5
Eller som tekst:

navn = replace(request.form("navn"),Gåseøje SingleQuate Gåseøjne,Gåseøje SingleQuate SingleQuate Gåseøjne)
Avatar billede prologic Nybegynder
13. februar 2004 - 17:27 #6
Hvis nu det er både tal og bogstaver, altså "tegn" også kaldet varchar i mysql, hører det så under din
id = replace
eller
navn = replace
?
Avatar billede prologic Nybegynder
13. februar 2004 - 17:30 #7
Og er det kun et hul der kan udnyttes ved fx. login, eller kan det udnyttet andre steder?
Avatar billede eagleeye Praktikant
13. februar 2004 - 17:32 #8
Hvis det at typen varchar så skal man replace en ' med to '', eller fjerne dem hvis man ikke ønsker folk må skrive '.

Hvis der er typen INT skal man fjerne ' da INT kun kan indeholde tal.

En huske regel, hvis der er ' omkring i SQL sætnignen skal man lave en om til to. Er der ikke ' omkring i SQL sætningen skal de fjernes.

Det kan udnyttes alle stedet og har man lidt forstand på SQL kan man meget mere en bare logge ind med en anden navn.
Så derfor skal man altid huske at fjerne ' eller lave en ' om til to ''.
Avatar billede prologic Nybegynder
13. februar 2004 - 19:00 #9
Takker.. Kan desværre ikke give kommentarer point :)
Avatar billede eagleeye Praktikant
13. februar 2004 - 20:10 #10
Ok, så laver jeg bare lige et svar :))
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