---
title: "Skydd mot \"sql-hack\""
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/66395-skydd-mot-sql-hack"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Jaar"
published: "2003-01-28T08:17:19.000Z"
updated: "2003-01-28T17:23:03.000Z"
replies: 9
views: 358
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/66395-skydd-mot-sql-hack"
---

# Skydd mot "sql-hack"

## #1 — Jaar, 2003-01-28T08:17Z

Det vanligast felet man gör är ju att man skapar sin sqlsats på detta vis:

```
sql = "select username from users where username = '" & request("username") & "' and password = '" & request("password") & "'"
```

genom att skriva in password = test' OR 'test' = 'test

så kommer slutet att bli så här

... and password = 'test' OR 'test' = 'test'

vilket alltid kommer valideras som sant, eller?
Iaf, ni känner nog de flesta till detta problem. I JSP/Java så har man preparedStatement som tar bort sådana problem, hur gör man i ASP?

Jag har inte testat det själv men jag har ju sett på många ställen att de varnar för liknande saker... Hur löser man det?

Permalänk: https://www.webforum.nu/p/66395

## #2 — @nders, 2003-01-28T08:18Z

Du använder replace för att byta en apostrof mot två, för att escapea.

```
sql = "select username from users where username = '" & replace(request("username"), "'", "''") & "' and password = '" & replace(request("password"), "'", "''") & "'"
```

Mvh,

Permalänk: https://www.webforum.nu/p/929026

## #3 — OveRRidE, 2003-01-28T12:36Z

SQL-injections (som den 'buggen' kallas) fungerar inte om man använder Stored Procedures i SQL-server, det kan vara värt att veta. Det är väl MS motsvarighet till JSP:S/Java:s preparedStatement (kan inte Java så bra).

Permalänk: https://www.webforum.nu/p/929203

## #4 — Jaar, 2003-01-28T12:50Z

Stored Procedures är för att få en rad sql-satser att snabbt exekverara på servern (inte belasta klienten)... Inte för att ta bort såna här små fulhack (även om den kanske gör det också) 
Store Procedures finns även i andra databaser, t.ex oracle...

Permalänk: https://www.webforum.nu/p/929214

## #5 — OveRRidE, 2003-01-28T13:46Z

> **Jaar skrev:**
>
> Stored Procedures är för att få en rad sql-satser att snabbt exekverara på servern

Jo, jag är ganska medveten om detta. ;)

Men jag sa inte att de *enbart* användes till det. Dessutom påverkar väl knappast en vanligt SQL-statement klienten, snarare servern. Stored Procedures är förbestämda och 'kompilerade' vilket innebär prestandavinst på *servern*, vid avancerade statements.

Permalänk: https://www.webforum.nu/p/929290

## #6 — @nders, 2003-01-28T13:48Z

OveRRidE, icke förglömma att webbservern är klient. Genom att använda stored procedures kan man alltså spara kräm på klienten, alltså webbservern, då man låter databasservern göra det den är bra på. 

Mvh,

Permalänk: https://www.webforum.nu/p/929292

## #7 — OveRRidE, 2003-01-28T13:52Z

@nders, givetvis. Men jag tänkte på 'klient-klienten', som jag trodde Jaar antydde.

Att generalisera detta begrepp med en klient-server (www-server) anser jag smidigare, än att krångla till det för mycket, även om det är värt att nämna ibland. Som nu. t.ex. ;)

RED. Nu skrev jag väl ändå fel, va? :l

Permalänk: https://www.webforum.nu/p/932219

## #8 — Jaar, 2003-01-28T14:07Z

I databassammanhang ser jag www servern som klient mot databasen och användaren mot wwwservern (så som det är).
Att påstå att webanvändaren är klient till databasen och att webanvändarens dators skulle slöas ner av ett sql statement skulle ju vara befängt ;)

Om du har tunga sql-frågor och speciellt om du kör många nästlade som ger ett svar (?) så är en storeprocedure bra mycke snabbare...

Permalänk: https://www.webforum.nu/p/932237

## #9 — OveRRidE, 2003-01-28T16:17Z

> Att påstå att webanvändaren är klient till databasen och att webanvändarens dators skulle slöas ner av ett sql statement skulle ju vara befängt

Ja. 

Och därav missuppfattningen av mig.

Permalänk: https://www.webforum.nu/p/932376

## #10 — LarsG, 2003-01-28T17:23Z

Det går att använda prepared statements i ASP mha command-object.

Permalänk: https://www.webforum.nu/p/932440

---

Tråden på webben: https://www.webforum.nu/amne/asp/66395-skydd-mot-sql-hack
