---
title: "SQL Syntax"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/169010-sql-syntax/page2"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Jeppeweb"
published: "2008-02-13T11:07:44.000Z"
updated: "2008-02-13T14:10:35.000Z"
replies: 35
views: 1025
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/169010-sql-syntax"
---

# SQL Syntax

_Sida 2 av 2._

## #21 — @nders, 2008-02-13T12:56Z

Alltså - du kan ha hur många funktioner som helst i include-filer, men om du inte kallar på funktionen så körs den ju inte. Exempel:

```
strSQL = "SELECT * FROM foo WHERE id = " & fixbug(Request.Querystring("userid"))
```

Jag vet inte om du måste escape:a backslash som du gjort i funktionen fixbug(), det skulle i så fall vara något som är specifikt för MySQL.

Använd funktionen fixbug() (och byt gärna namn på funktionen) på de värden som skall in i SQL-frågor.

Man kan också titta på parametriserade sql-frågor, men det kan ju vara nästa steg.

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

## #22 — voigtann1, 2008-02-13T12:56Z

tal = Clng(Request.QueryString("UserId"))
sträng: fixbug(Request.Querstring("text"))

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

## #23 — Jeppeweb, 2008-02-13T13:07Z

Blir lite förvirrad nu.
Så det här skulle vara korrekt?

```
Set ObjRS = ObjConn.Execute("SELECT * FROM medlemmar where id="& fixbug(Request.Querystring("userid") &""))
```

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

## #24 — aasah, 2008-02-13T13:16Z

> **Jeppeweb skrev:**
>
> Blir lite förvirrad nu.
> Så det här skulle vara korrekt?
>
>
> ```
> Set ObjRS = ObjConn.Execute("SELECT * FROM medlemmar where id="& fixbug(Request.Querystring("userid") &""))
> ```

Nej, det är bara Querystringen som ska in till fixBug(). Det är ju bara i den delen du inte vet vad det står...

```
Set ObjRS = ObjConn.Execute("SELECT * FROM medlemmar where id="& fixbug(Request.Querystring("userid")) &"")
```

(Flyttat ett ')'.)

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

## #25 — Jeppeweb, 2008-02-13T13:17Z

För ni säger olika, voigtann, Clng på Userid, och @nders, fixbug på Userid..

Gah.

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

## #26 — aasah, 2008-02-13T13:24Z

> **Jeppeweb skrev:**
>
> För ni säger olika, voigtann, Clng på Userid, och @nders, fixbug på Userid..
> 
> Gah.

Kolla ovanför ditt citerade inlägg. :)

vo1gtanns förslag var att du skulle hantera siffror på ett sätt och strängar på ett annat. **MEN** då måste du först veta att användaren skrivit in en siffra där du förväntar dig det. Vilket blir ytterligare en koll... som måste in före. (Såvida inte Clng fixar biffen om det kommer in en sträng? Jag kan inte ASP.) Så det blir enklare att behandla allt som strängar. Dock är du inte lika säker på att du får in vettig indata.

MySQL blir inte glad om den får fel typer att jämföra med... Så du riskerar databasfelmeddelanden om man kan stoppa in en sträng där det borde vara en siffra. (Tror jag... själv kollar jag om det är siffror där det ska vara det...)

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

## #27 — voigtann1, 2008-02-13T13:25Z

Nej.. jag säger att Om det är ett tal så Kontrollera/konvertera det till ett tal. Och Fixbug använder du på strängar. Jag har ingen aning om ditt UserId är ett tal eller inte.. jag kan bara gissa att det är ett tal. Jag kan ha fel.

Den kommer att crashar men din databas är iallafall inte öppen mot "attacker".

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

## #28 — Jeppeweb, 2008-02-13T13:25Z

Okej.

Hur ska det här se ut då?

```
<%
Set ObjRSCheckit = ObjConn.Execute("SELECT * FROM visitors WHERE fromid="& CLng(Session("id")) &" AND tillid="& CLng(ObjRS("id")) &"")
%>
```

Alla Querystringar ska bytas ut som du skrev aasah, då är jag någorlunda skyddad eller?

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

## #29 — @nders, 2008-02-13T13:25Z

Syftet är ungefär detsamma. Tänk efter lite vad koden gör.
Clng konverterar någonting till ett tal. Skickar man in en konstig sträng kraschar den typkonverteringen och sql-frågan ställs inte - därmed är användarid-variabeln säkrad.
Fixbug-funktionen escapear apostrof-tecken och gör därmed så inte elaka människor kan kapa dina SQL-frågor.

Det är inte heller fel att göra **både** typkonvertering **och** escape:a strängar. 

Det finns hur mycket vettigt som helst att läsa så man förstår hur och varför. Börja till exempel på [wikipedia](http://sv.wikipedia.org/wiki/SQL_injection) och följ länkarna där.

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

## #30 — aasah, 2008-02-13T13:30Z

> **Jeppeweb skrev:**
>
> Alla Querystringar ska bytas ut som du skrev aasah, då är jag någorlunda skyddad eller?

Ta till dig det @nders skrev, och ja - så fort du plockar in info som en användare på något sätt har tillgång till i en SQL-fråga, måste du säkra indatat.

"Info som en användare på något sätt har tillgång till" inkluderar Querystring och Cookies.

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

## #31 — Jeppeweb, 2008-02-13T13:33Z

Okej, tack då är jag någorlunda med känner jag.

```
ObjConn.Execute("UPDATE medlemmar set online='0' where anvnamn='" & fixbug & ObjRS("anvnamn") &"'")
```

Är det där korrekt?

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

## #32 — @nders, 2008-02-13T13:35Z

njäe... Funktioner kallar du ju på med parenteser.

```
ObjConn.Execute("UPDATE medlemmar set online='0' where anvnamn='" & fixbug(ObjRS("anvnamn")) &"'")
```

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

## #33 — Jeppeweb, 2008-02-13T13:42Z

Jaha, okej. :)
Du tyckte jag borde bytta namn på fixbug också? Why's that?

Hur står hashning/kryptering utav lösenord på en skala utav säkerhet? Är det jättebra att ha?

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

## #34 — voigtann1, 2008-02-13T13:44Z

Fixbug säger inte så mycket vad den gör... fix what bug? SecureSqlString eller något liknande kanske?
Kryptering är alltid bra för dina användare. Du får utveckla lite vad du menar med det? Vill du kryptera all data så måste du på något sätt kunna backa tillbaka datan igen. Lösenord  / Personnummer osv är aldrig bra att lagra i klar text.

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

## #35 — @nders, 2008-02-13T13:46Z

> **Jeppeweb skrev:**
>
> Du tyckte jag borde bytta namn på fixbug också? Why's that?

För att jag hatar funktioner som är felaktigt namngivna. Funktionen fixar inga buggar överhuvudtaget, utan säkrar input till SQL-frågor. Funktionen kanske skulle kunna heta *EscapeStringForSQL* eller *SQLSafe* om man vill ha lite kortare namn.

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

## #36 — Jeppeweb, 2008-02-13T14:10Z

Okej, jag hade tänkt att kryptera lösenord. Ska fixa det.

Okej, har döpt om fixbug till SQLSafe på @nders begäran. Du har rätt, det klingar bättre. :)

Uppskattar verkligen hjälpen man får här.

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/169010-sql-syntax/page2  
Föregående sida: https://www.webforum.nu/amne/asp/169010-sql-syntax.md
