"Kenneth Andersen" <kenneth_andersen@vip.cybercity.dk> wrote in
news:9krp6b$1evm$1@news.cybercity.dk:
>> ... men der er (naturligvis) variationer
>
> Vil det sige at hvis man nu er i tvivl om hvilken værdi man får ind fra
> et request, så skal man tjekke på det inden man kalder sit SQL
> statement.?
>
Ja ... hvis dit website tillader at der overføres data fra formularer
direkte til SQL-forespørgsler, så bør man _altid_ checke dem inden de
flettes ind i din SQL-sætning. Specielt hvis der foregår DELETE/UPDATE -
forespørgsler er det et MUST at checke det.
Et eksempel er (frit fra leveren) dette, hvor der tilbydes at man ændrer sit
password:
intUserId = request.form("userID")
strPassword = request.form("password")
strSQL = "UPDATE table SET password = '" & strPassword & "' WHERE userId =
" & intUserId
I den ideelle situation vil det give noget i retning af dette:
UPDATE table SET password = 'Tjullahej' WHERE userId = 4543252
Men hvis der nu i feltet gives dette fra brugeren:
"4543252 OR 1=1"
vil din SQL komme til at se således ud
UPDATE table SET password = 'Tjullahej' WHERE userId = 4543252 OR 1=1
.... hvilket vil skifte samtlige passwords ud med "Tjullahej"
Det kan godt være, at der er indsneget sig en fejl i ovenstående, men om
ikke andet kan det give en idé om, hvor galt man kan komme afsted. Prøv at
tænke på konsekvenserne hvis det var en DELETE-operation.
:(
--
Do you also think survailance has gone too far ?
http://www.salon.com/comics/tomo/2001/07/09/tomo/index.html
- Jesper Stocholm -
http://Stocholm.dk