Visa ett inlägg
Oläst 2004-10-16, 13:20 #5
Mikael Simonsson Mikael Simonsson är inte uppkopplad
Nykomling
 
Reg.datum: Jun 2004
Inlägg: 34
Mikael Simonsson Mikael Simonsson är inte uppkopplad
Nykomling
 
Reg.datum: Jun 2004
Inlägg: 34
Citat:
Originally posted by rille77@Oct 13 2004, 23:19
Fråga bara, varför bär man inte testa för SQL injections före SQL frågan???
(Ursäkta mitt lite sena svar.)

Jo, för att kunna hantera alla variabler under samma förutsättningar. Säg att du vill skriva ut det felaktiga användarnamnet eller fylla i ett formulär åt användaren, så att användaren kan rätta till sitt fel utan att behöva skriva om allt. Då måste du komma ihåg om du har bytt ut alla ' mot '' för att sen göra det motsatta när du ska skriva ut variablen.

Så en bra regel är att hantera alla variabler som "fientliga", oavsett om du hämtar data från en databas, cookies, Request objektet osv. När du bygger en SQL-fråga testar du mot SQL-injection och när du skriver ut en variabel använder du Server.HTMLEncode().

Exempel:
Kod:
strUser = Trim(Request.Form("user"))
intUserId = Request.Form("userid")

' Bygga en SQL-fråga (sträng)
strSql = "SELECT * FROM users WHERE username = '" & Replace(strUser, "'", "''") & "'"

' Bygga en SQL-fråga (tal)
strSql = "SELECT * FROM users WHERE userid = " & Int(intUserId)

' Skriva ut en variabel
Response.Write(Server.HTMLEncode(strUser))
Response.Write(Server.HTMLEncode(intUserId))
Mikael Simonsson är inte uppkopplad   Svara med citatSvara med citat