---
title: "SQL Syntax"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/169010-sql-syntax"
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: 1
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 1 av 2._

## #1 — Jeppeweb, 2008-02-13T11:07Z

Vad är det för fel på den här kodsnutten?

```
<%
Set ObjRSGroup = ObjConn.Execute("SELECT * FROM groups WHERE id="& CLng(Request.Querystring("groupid")) &"")
Set ObjRSGrouptrad = ObjConn.Execute("SELECT * FROM group_tradar WHERE group_id="& Request.Querystring("groupid") &" AND klistrad=0")
Set ObjRSGroupklis = ObjConn.Execute("SELECT * FROM group_tradar WHERE group_id="& Request.Querystring("groupid") &" AND klistrad=1")
%>
```

Microsoft OLE DB Provider for ODBC Drivers error '80040e09' 

\[MySQL\]\[ODBC 3.51 Driver\]\[mysqld-5.0.45-log\]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND klistrad=0' at line 1 

/group_forumet.asp, line 25

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

## #2 — Jeppeweb, 2008-02-13T11:09Z

Klistrad är en typ "INT 11" i databasen

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

## #3 — @nders, 2008-02-13T11:10Z

1) Ställ frågor om SQL i SQL-forumet.
2) Skriv ut den färdiga SQL-frågan med response.write istället för att exekvera den. Då ser du om det saknas något eller om något värde ser konstigt ut.

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

## #4 — Jeppeweb, 2008-02-13T11:16Z

Och hur skulle den response.write se ut då? Jag gjorde en, men man kan ju varken sätta den före den kod jag skrev tidigare, eller under då man får error.

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

## #5 — @nders, 2008-02-13T11:17Z

Skriv ut istället för att exekvera - inte samtidigt.

```
strSQL = "SELECT * FROM group_tradar WHERE group_id="& Request.Querystring("groupid") &" AND klistrad=0"
Response.write strSQL
response.end
```

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

## #6 — Jeppeweb, 2008-02-13T11:30Z

nu fick jag fram

```
SELECT * FROM group_tradar WHERE group_id= AND klistrad=0
```

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

## #7 — @nders, 2008-02-13T11:35Z

Då ser du vad som är fel.

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

## #8 — Jeppeweb, 2008-02-13T11:40Z

Precis, hur kommer det sig att den inte får ett groupid ?

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

## #9 — @nders, 2008-02-13T11:41Z

Du har inte skickat något i querystring? :)

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

## #10 — aasah, 2008-02-13T11:42Z

> **Jeppeweb skrev:**
>
> Precis, hur kommer det sig att den inte får ett groupid ?

Därför att Request.Querystring("groupid") är tom.

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

## #11 — Jeppeweb, 2008-02-13T12:02Z

Självklart :P

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

## #12 — Troxy, 2008-02-13T12:06Z

Du bör söka efter "SQL-injection" och läsa på om det eftersom din kod lider av denna typ av säkerhetshål.

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

## #13 — Jeppeweb, 2008-02-13T12:08Z

Nej, det gör den inte? Jag kör skydd från en annan fil som inkluderas på varje sida.

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

## #14 — @nders, 2008-02-13T12:12Z

Det påverkar ju inte att du har säkerhetshål i dina SQL-frågor. Som sagt - sök på *SQL injection*.

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

## #15 — Jeppeweb, 2008-02-13T12:41Z

Googlade men blev inte så mycket klokare.

Har den här koden säkerhetshål?

```
<%
If not session("inloggad") = "ja" Then
Response.Redirect "?visa=start"
End If
%>

<%

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

		If ObjRS.Eof then
	
			Response.Redirect "?visa=start"
			
		End If
	
%>

<%
Set ObjRSCheckit = ObjConn.Execute("SELECT * FROM visitors WHERE fromid="& CLng(Session("id")) &" AND tillid="& CLng(ObjRS("id")) &"")
%>
<%If ObjRSCheckit.eof then%>
<%
ObjConn.Execute("INSERT INTO visitors (tillid, tillanv, fromid, fromanv, datum) VALUES ('"& ObjRS("id") &"', '"& ObjRS("anvnamn") &"', '"& Session("id") &"', '"& Session("anvnamn") &"', '"& now() &"')")
%>
<%Else%>
<%
ObjConn.Execute("UPDATE visitors set datum='"&now()&"' WHERE tillid="& CLng(ObjRS("id")) &" AND fromid="& CLng(Session("id")) &"")
%>
<%End If%>

<%
ObjConn.Execute("UPDATE medlemmar set online_tid='"&now()&"', online_act='Kollar in användaren "& ObjRS("anvnamn") &"' where anvnamn='"& session("anvnamn") &"'")
%>
<%

If DateDiff("n", ObjRS("online_tid"), Now) > 15 Then

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

End If
%>
```

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

## #16 — Jeppeweb, 2008-02-13T12:43Z

Skulle man kunna göra det här säkrare?

```
Function fixbug(strText)
strText = Replace(strText,"'","''")
strText = Replace(strText,"\","\\")
fixbug = strText
End Function

Function noHTML(ByVal text)

text = Replace(Server.HTMLEncode(text),vbCrlf,"")

noHTML = text
End Function
```

Och det här..?

```

<%
Function IsAnvnamn(strValue)
  With New RegExp
  .Pattern="^[0-9A-Za-z_-]+$"
  IsAnvnamn=.Test(strValue)
  End With
End Function 
%>

<%
Function IsEmail(strValue)
  With New RegExp
  .Pattern="^[^ ]+@[^ ]+\.[A-Za-z]+$"
  IsEmail=.Test(strValue)
  End With
End Function 
%>
```

Tacksam för hjälp

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

## #17 — @nders, 2008-02-13T12:44Z

Du har ju en funktion som heter fixbug() - varför använder du inte den?

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

## #18 — Jeppeweb, 2008-02-13T12:49Z

Okej, jadu. Hur skulle det se ut ifall jag använde den? Ha.

Uppenbarligen så var inte den koden skyddad heller? Vad ska jag ha för att få den bästa möjliga skyddad?

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

## #19 — aasah, 2008-02-13T12:49Z

> **Jeppeweb skrev:**
>
> Har den här koden säkerhetshål?
> 
>
>
> ```
> SELECT * FROM medlemmar where id="& Request.Querystring("userid")
> ```

Ja. För att ta första bästa enkla exempel. Ponera att Querystring innehåller följande:

```
"0 OR 1=1"
```

Nu får du ut alla medlemmar. Det kan bli avsevärt värre....

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

## #20 — Jeppeweb, 2008-02-13T12:54Z

Hur ska jag skydda mig då!?

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/169010-sql-syntax  
Nästa sida: https://www.webforum.nu/amne/asp/169010-sql-syntax/page2.md
