Oprettet man. d. 03. oktober 2011 kl. 16:56:41

carstenandersen
carstenandersen (3.135 point. Point ude: 200)

SQL injection

Hej eksperter

Vi har et mindre cms system, hvor alle vores kunder bruger samme database. De har deres eget domæne, og hver af deres sider får et Id. En kunde har f.eks. siden www.kundensdomæne.dk/side.asp?Id=27551324. Jeg er blevet gjort opmærksom på, at dette giver et sql hul! Hvad består hullet i? Hvad kan jeg gøre for at lukke det? Hvor kan jeg læse meget mere om dette?

Virkelig på forhånd tak !

Skrevet man. d. 03. oktober 2011 kl. 17:02:05| #1

hansepeter2
hansepeter2 (1.840 point)
I dette tilfælde skal du sikre dig, at id udelukkende består af tegnene [0-9], inden du bruger det i din database.

select * from tabel where id=x

Hvis du tillader alle værdier af x, så kan brugeren jo selv digte videre på din sqlsætning.


Læsestof: google + sql injection

Skrevet man. d. 03. oktober 2011 kl. 17:08:54| #2

hansepeter2
hansepeter2 (1.840 point)
Alle steder, hvor du byggger en sqlsætning med input udefra, skal du kontrollere/uskadeliggøre data inden du gør brug af det.

Skrevet man. d. 03. oktober 2011 kl. 17:09:12| #3

carstenandersen
carstenandersen (3.135 point)
hansepeter2, tak for dit svar :-)

Kunne godt tænke mig, at nogle kom med et noget mere detalteret svar - har nemlig søgt i google, men svært at overskue de forskellige forslag ;-)

Skrevet man. d. 03. oktober 2011 kl. 17:09:48| #4

arne_v
arne_v (1.016.169 point)
Generelt: brug parameters !

Skrevet man. d. 03. oktober 2011 kl. 17:10:31| #5


Skrevet man. d. 03. oktober 2011 kl. 17:22:21| #6

carstenandersen
carstenandersen (3.135 point)
arne_v, tak for svar :-) Har lige læst guiden, som virker noget svær ud fra min kunnen ;-) Har selv undersøgt nærmere - kan det løses ved blot at sikre mod pling, altså på en aller anden måde replace Id, ala "Replace(Request.Form("txtusername"),"'","''")"?

Skrevet man. d. 03. oktober 2011 kl. 17:55:18| #7

softspot
softspot (101.915 point)
www.softspot.dk
Jeg hjælper dig gerne videre, hvis min guide ikke er klar nok (det kunne jo være den skulle opdateres :-))...

Skrevet tir. d. 04. oktober 2011 kl. 08:40:03| #8

carstenandersen
carstenandersen (3.135 point)
Jeg er kommet videre og er blevet anbefalet løsningen på http://blogs.iis.net/ (...)

Jeg har endvidere tilføjet ' til kildekoden, og umiddelbart virket det rigtig godt. Hvis jeg f.eks. prøver at tilføje ' i en url, kommer der ikke:

[MySQL][ODBC 5.1 Driver][mysqld-5.1.41-3ubuntu12.10]You have an .....

men i stedet en fejlmeddelelse.

Hvad er jeres vurdering af denne metode? Er der noget, som den ikke tager højde for? Mit problem er, at jeg har rigtig mange sider, som er i "farezonen", så det vil være kanon blot at kunne includere en fil - i hvert fald som "brandslukning" i første omgang ;-)

Skrevet tir. d. 04. oktober 2011 kl. 09:39:04| #9

softspot
softspot (101.915 point)
www.softspot.dk
Umiddelbart ville jeg foretrække at benytte parameteriseringen, da du så undgår alle andre problemer. Hvis du vælger at lave white- eller blacklisting risikerer du at du stadig efterlader et hul (selvom det sandsynligvis vil være mindre end før), fordi du ikke har gennemskuet alle de måder man kan snyde systemet på...

Nu er det i sagens natur svært at forholde sig til opgavens omfang, så det er naturligvis en afvejning ifht. cost/benefit, men jeg vil tro kunderne foretrækker den sikre løsning frem for en mindre usikker løsning ;-)

En anden ting er naturligvis hvor godt den driver du benytter understøtter Command-objektet, men det kan du jo teste dig ud af. Jeg har ikke selv erfaring med at køre med Command-objekter op mod en MySQL, så der kan jeg desværre hjælpe med råd og vejledning...

Skrevet tir. d. 04. oktober 2011 kl. 12:42:33| #10

carstenandersen
carstenandersen (3.135 point)
Tusind tak for jeres svar, som jeg klart kan bruge i problemløsningen. Smid alle et svar og pointene fordeles ;-)

Skrevet tir. d. 04. oktober 2011 kl. 12:46:13| #11


Skrevet tir. d. 04. oktober 2011 kl. 12:46:33| #12


Skrevet tor. d. 06. oktober 2011 kl. 06:53:31| #13

carstenandersen
carstenandersen (3.135 point)
hansepeter2 og arne_v, vil I ikke have del i pointene? Smid et svar ;-)

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

ASP: formular udtræk med mulighed for at rette

Oprettet den 21. maj 2012 kl. 15.09
quarkb giver 200 point for svar | Giv et svar »

Sorter biblioteker efter dato i ASP

Oprettet den 17. maj 2012 kl. 16.52
4ks giver 60 point for svar | Giv et svar »

Simpel login-funktion (web) - behov for flere logins/brugere

Oprettet den 15. maj 2012 kl. 09.54
madx giver 75 point for svar | Giv et svar »



   




Tips & Tricks fra PC World

Teaser billede

Læserne: Her er vores værste it-indkøb

Det er ikke al it-udstyr, som er det rene guld. Her er nogle af læsernes skrækhistorier.


Anmeldelser fra PC World

Teaser billede

Test: Mobil med Ferrari-design - og en Trabant-motor

Motorola har begået endnu en smartphone med lækkert design og potentiale til at være blandt de bedste. Men den når ikke i mål. Se her hvorfor.


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Sådan siger du farvel til Facebook

Læs her, hvordan du dropper Facebook og i stedet anvender nogle brugervenlige alternativer, så du stadig kan være social på nettet.


Nyheder fra Computerworld

Teaser billede

Galleri: De fedeste håndholdte gennem 40 år

Her har du de mest banebrydende håndholdte computere gennem alle tider.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger