WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   SQL Injections (https://www.wn.se/forum/showthread.php?t=6747)

insu 2005-03-15 19:11

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"), "/", "//")

???

JonasB 2005-03-16 08: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

insu 2005-03-16 09:27

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?

JonasB 2005-03-16 10:54

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å ''.

insu 2005-03-16 11:42

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?

mypay 2005-03-16 13: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

eg0master 2005-03-16 14:18

Ä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".

insu 2005-03-16 16:54

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...

eg0master 2005-03-16 17:02

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.

insu 2005-03-16 17:07

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!


Alla tider är GMT +2. Klockan är nu 22:37.

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