Kom ihåg mig?
Home Menu

Menu


SQL Injections

 
Ämnesverktyg Visningsalternativ
Oläst 2005-03-15, 19:11 #1
insu insu är inte uppkopplad
Nykomling
 
Reg.datum: Jan 2004
Inlägg: 22
insu insu är inte uppkopplad
Nykomling
 
Reg.datum: Jan 2004
Inlägg: 22
Räcker det att använda

Text = Replace(Request.Form("Text"), "'", "''")
id = CLng(Request("id"))

för att motverka SQL Injections???



Vad är det för skillnad mellan

Text = Replace(Request.Form("Text"), "'", "''")

och

Text = Replace(Request.Form("Text"), "/", "//")

???
insu är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-03-16, 08:48 #2
JonasB JonasB är inte uppkopplad
Nykomling
 
Reg.datum: Oct 2004
Inlägg: 21
JonasB JonasB är inte uppkopplad
Nykomling
 
Reg.datum: Oct 2004
Inlägg: 21
Text = Replace(Request.Form("Text"), "'", "''")
Byter ut ' mot ingenting och det är, som jag förstår det, det viktigaste för att skydda sig.

Text = Replace(Request.Form("Text"), "/", "//")
Ser till att den som attackerar inte kan hoppa runt bland dina kataloger genom att lägga till en extra / till sökvägen

/JonasB
JonasB är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-03-16, 09:27 #3
insu insu är inte uppkopplad
Nykomling
 
Reg.datum: Jan 2004
Inlägg: 22
insu insu är inte uppkopplad
Nykomling
 
Reg.datum: Jan 2004
Inlägg: 22
Citat:
Originally posted by JonasB@Mar 16 2005, 09:48
Text = Replace(Request.Form("Text"), "'", "''")
Byter ut ' mot ingenting och det är, som jag förstår det, det viktigaste för att skydda sig.

Text = Replace(Request.Form("Text"), "/", "//")
Ser till att den som attackerar inte kan hoppa runt bland dina kataloger genom att lägga till en extra / till sökvägen

/JonasB
:huh: Så du menar att man ska skriva så här då:

Mess = Request.Form("Mess")
Mess = Replace(Mess, "'", "''")
Mess = Replace(Mess, "/", "//")

Då har man garderat sig mot injections?
insu är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-03-16, 10:54 #4
JonasB JonasB är inte uppkopplad
Nykomling
 
Reg.datum: Oct 2004
Inlägg: 21
JonasB JonasB är inte uppkopplad
Nykomling
 
Reg.datum: Oct 2004
Inlägg: 21
Jag är ju då inte någon ASP hacker, håller mig till PHP, men som jag förstår det så bör det räcka med Text = Replace(Request.Form("Text"), "'", "''")

Text = Replace(Request.Form("Text"), "/", "//") kommer göra att du inte kan skriva några webbadresser i texten.

/JonasB

ps
kollade lite noggrannare på Replace(Request.Form("Text"), "'", "''") och såg att den byter en ' mot två ''.
JonasB är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-03-16, 11:42 #5
insu insu är inte uppkopplad
Nykomling
 
Reg.datum: Jan 2004
Inlägg: 22
insu insu är inte uppkopplad
Nykomling
 
Reg.datum: Jan 2004
Inlägg: 22
Citat:
Originally posted by JonasB@Mar 16 2005, 11:54
ps
kollade lite noggrannare på Replace(Request.Form("Text"), "'", "''") och såg att den byter en ' mot två ''.
Nja, testade båda skripten och / blir dubbel... Men inte '


Alltså när man skriver detta:

Text = Request.Form("Text")
Text = Replace(Text, "'", "''")
Text = Replace(Text, "/", "//")

Vad gjör Text = Replace(Text, "'", "''") egentligen?
insu är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-03-16, 13:00 #6
mypay mypay är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Aug 2004
Inlägg: 528
mypay mypay är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Aug 2004
Inlägg: 528
om du t.ex i en sträng ska ha med ett " så ser strängen ut så här

myString = "jag vill ha med "" i min text..."

dvs dubbla för att få med ett enda.. när man sen skriver ut den strängen så får du faktiskt bara ett enda.. så '' i en sträng blir ett enda iaf..

luddig förklaring men jag kommer inte på nån annan just nu
mypay är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-03-16, 14:18 #7
eg0master eg0master är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2004
Inlägg: 898
eg0master eg0master är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2004
Inlägg: 898
Är jag dryg om jag tycker att:
Om man inte vet vad "Text = Replace(Text, "'", "''") " gör så är inte SQL injections ditt största problem.

Du behöver läsa på och bli en duktig programmerare först. Sedan kan du börja fundera på detaljer som hur inloggning skall bli säkert, hur du undviker SQL-injections, hur du bör designa din databas etc.

Det är ju uppenbart vad funktionen gör: Den byter ut en sträng mot en annan och syftet är att det i din SQL sträng skall inte ett " i input möjliggöra SQL-injections. Syftet är väl uppenbart om man vet hur den vanligaste SQL-injection attacken ser ut.

Och nej, inget av det du skriver är en garanti. Det finns fler saker som kan spela in hur en SQL injection skulle kunna lyckas. Men de replact du föreslagit räcker sannolikt.

Jag förstår att det är svårt att skydda sig mot något man inte förstår hur det görs. Det är därför jag tycker du ska fundera mer på hur SQL injections görs istället för att fråga "räcker det här".
eg0master är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-03-16, 16:54 #8
insu insu är inte uppkopplad
Nykomling
 
Reg.datum: Jan 2004
Inlägg: 22
insu insu är inte uppkopplad
Nykomling
 
Reg.datum: Jan 2004
Inlägg: 22
Citat:
Originally posted by mypay@Mar 16 2005, 14:00
om du t.ex i en sträng ska ha med ett " så ser strängen ut så här

myString = "jag vill ha med "" i min text..."

dvs dubbla för att få med ett enda.. när man sen skriver ut den strängen så får du faktiskt bara ett enda.. så '' i en sträng blir ett enda iaf..

luddig förklaring men jag kommer inte på nån annan just nu
Thnx... Jag förstod att något sådant hände men det skulle vara roligt att veta varför den försvinner när man skriver ut texten...
insu är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-03-16, 17:02 #9
eg0master eg0master är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2004
Inlägg: 898
eg0master eg0master är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2004
Inlägg: 898
Citat:
Originally posted by insu@Mar 16 2005, 17:54

Thnx... Jag förstod att något sådant hände men det skulle vara roligt att veta varför den försvinner när man skriver ut texten...
För att det är så VB(script) fungerar.
Alla språk har sitt sätt att escapa specialtecken.
eg0master är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-03-16, 17:07 #10
insu insu är inte uppkopplad
Nykomling
 
Reg.datum: Jan 2004
Inlägg: 22
insu insu är inte uppkopplad
Nykomling
 
Reg.datum: Jan 2004
Inlägg: 22
Citat:
Ursprungligen postat av eg0master
Citat:
Ursprungligen postat av insu
Thnx... Jag förstod att något sådant hände men det skulle vara roligt att veta varför den försvinner när man skriver ut texten...
För att det är så VB(script) fungerar.
Alla språk har sitt sätt att escapa specialtecken.
Ok, så innan det sparas i databasen så försvinner det dubbla tecknet... Thnx!
insu är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 18:59.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017