---
title: "Byta ut farliga tecken"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/119607-byta-ut-farliga-tecken/page2"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "calson"
published: "2005-01-08T11:00:38.000Z"
updated: "2005-01-19T22:20:52.000Z"
replies: 30
views: 1471
page: 2
pages: 2
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/119607-byta-ut-farliga-tecken"
---

# Byta ut farliga tecken

_Sida 2 av 2._

## #21 — @nders, 2005-01-10T18:56Z

> **voigtann1 skrev:**
>
> @nders kan inte ; göra saker? Har för mig jag läste om att man kunde tex:
> 
> SQL = "Select \* from data;drop data"
> 
> då ta man ju bort "data" lagringen...

Det är riktigt att i vissa dbms kan man utföra mer än SQL-fråga i ett anrop. Men då skulle jag vilja fråga dig; hur får du dit semikolonet (eller radbrytningen, eller vad man använder för att separera sina statements)?

Litet utklipp från informativ webbplats:

> 8\.0 How to avoid SQL Injection?
> Filter out character like single quote, double quote, slash, back slash, semi colon, extended character like NULL, carry return, new line, etc, in all strings from:
>  \- Input from users
>  \- Parameters from URL
>  \- Values from cookie
> 
> For numeric value, convert it to an integer before parsing it into SQL statement. Or using ISNUMERIC to make sure it is an integer.

 [Källa](http://www.securiteam.com/securityreviews/5DP0N1P76E.html)

Fina länkar:

[SQLSecurity](http://www.sqlsecurity.com/DesktopDefault.aspx)
[4GuysFromRolla](http://www.4guysfromrolla.com/webtech/061902-1.shtml)
[Finfin Google-sökning](http://www.google.com/search?hl=en&q=sql+injection)

mvh

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

## #22 — MAge, 2005-01-18T13:01Z

Vet inte om det är just ett vedertaget sätt att ändra ' till " men vill man fortfarande ha kvar tecknen som dom ser ut kan du ändra
' till & #39; och
" till & aqout;
(utan mellanrum)
Kan vara att de kanske inte är kompatibelt över alla teckenuppsättningar men då får man ändra efter behov

/Jonas

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

## #23 — @nders, 2005-01-18T13:04Z

> Vet inte om det är just ett vedertaget sätt att ändra ' till " men vill man fortfarande ha kvar tecknen som dom ser ut

Det är därför man ersätter en apostrof med två, för att lagra korrekt. Du ändrar ju ingenting, utan escapear bara tecknet i SQL-frågan så det lagras riktigt.

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

## #24 — Erik Juhlin, 2005-01-18T13:55Z

@nders: Ska man förenkla det så är det ju i stort sett allting som man hämtar med Request objektet som kan vara farligt. Alltså även t.ex. USER_AGENT och HTTP_REFERER.

När det gäller strängar så är det ju bara som sagt att byta ut ' mot ''. Men när det gäller t.ex. siffror, datum och booleans så kan det vara lite krångligare. Det kan vara bra att ta för vana att alltid göra om inparametrar till rätt dataformat. Alltså CLng för siffror, CDate för datum och CBool för booleans.
Då finns det ingen risk för att det kommer in nån konstig kod som ställer till det.

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

## #25 — @nders, 2005-01-18T13:57Z

> **Erik Juhlin skrev:**
>
> @nders: Ska man förenkla det så är det ju i stort sett allting som man hämtar med Request objektet som kan vara farligt. Alltså även t.ex. USER_AGENT och HTTP_REFERER.

Ja, egentligen alla request-samlingar, dvs form, querystring, cookies och servervariables.

Mvh

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

## #26 — Erik Juhlin, 2005-01-18T14:27Z

En fin sak med att använda COM-objekt är att man där enkelt kan sätta datatyp för alla inparametrar. Då får man automatiskt ett skydd mot många slags SQL-injections. Exempel:

```
Public Function GetProduct(ByVal lProductId As Long) As ADODB.Recordset
	Set GetProduct = ExecuteSQL("SELECT * FROM tblProduct WHERE ProductId = " & lProductId
End Function
```

Ingen risk att någon skickar in typ "123;DROP TABLE tblProduct". :)

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

## #27 — spango, 2005-01-18T14:31Z

> **Calevan skrev:**
>
> det var det jag hade för mig, att det inte räcker, någon som kan ge oss förslag på åtgärder för att stoppa allt?

Jag skulle väl rösta för renholms förslag, d.v.s. att inte använda vanliga SQL-frågor utan parametriserade frågor, prepared statements. SQL-frågan blir dessutom enklare att läsa, och man kan i viss mån strunta i hur den lokala SQL-dialekten beter sig.

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

## #28 — fredrik, 2005-01-19T07:20Z

Ett tips på en svensk sida med mycket information om olika säkerhetsämnen är [swesecure.com](http://www.swesecure.com)

Där hittar du bla. en artikel om [vad SQL-injection är](http://www.swesecure.com/?ID=dc6ea60a-12ae-4e7e-9e9c-59489ccafa90&IID=29a58b01-ca79-4877-b924-4f5da18d4a2a) samt en om hur du kan använda [parameteriserade frågor](http://www.swesecure.com/?ID=dc6ea60a-12ae-4e7e-9e9c-59489ccafa90&IID=d628e96e-f8fd-44ed-9537-4061c817e9b1)

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

## #29 — Erik Juhlin, 2005-01-19T07:40Z

Hur ser SQL-erna ut som körs mot databasen i en sån parametriserad fråga?

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

## #30 — spango, 2005-01-19T10:30Z

Som synes i fredriks länk så lägger man aldrig in värdena i SQL-strängen, de sätts in (på ett eller annat sätt) programmatiskt efteråt. Allt man gör är att byta ut värdet i sin SQL-sträng mot ett frågetecken, och sen säger man i sin kod därefter vad man vill att det EGENTLIGEN ska stå där. Man slipper escape:a strängar eller lista ut hur datumformat ska se ut. Dessutom kan man få en liten prestandavinst, åtminstone ska göra flera anrop till databasen där det bara är värden som byts ut och inte strukturen på själva frågan (t.ex. om man ska göra en bunt inserts i samma tabell, eller nåt).

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

## #31 — Erik Juhlin, 2005-01-19T22:20Z

Okej, den bygger alltså ihop en sån där EXEC pryl... :)

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/119607-byta-ut-farliga-tecken/page2  
Föregående sida: https://www.webforum.nu/amne/asp/119607-byta-ut-farliga-tecken.md
