|
| Link Fra : Henrik Nielsen |
Dato : 08-12-08 14:37 |
|
Lidt db problemer.
Laver et udtræk til en table hvor jeg har navn, afdeling mm., i en asp fil
der hedder medlemmer.asp, ved navn laver jeg et link til person.asp på
følgende måde:
strNavn = rs("Fornavn") & " " & rs("Efternavn")
strLink = "<a href=""person.asp?id=" & _
rs("Id") & """>" & strNavn & "</a>"
Response.Write "<td class=""td"">" & strLink & "</td>" & vbcrlf
i person.asp har jeg følgende stående:
strSQL = "Select * From medlemmer Where Id = " & Request.Querystring("id")
Mit problem er at metoden med navn vil jeg også gerne lave med afdeling.
i medlemmer asp hvor jeg også havde link ved at klikke på navn til
person.asp, vil jeg nu lave link ved at klikke på afdeling til afdeling.asp
med følgende:
strNavn = rs("Afdeling")
strLink = "<a href=""afdeling.asp?afdeling=" & _
rs("Afdeling") & """>" & strNavn & "</a>"
Response.Write "<td class=""td"">" & strLink & "</td>" & vbcrlf
Det er så meningen at afdeling.asp skal vise personer fra samme afdeling
i afdeling.asp har jeg følgende:
strSQL = "Select * From medlemmer Where Afdeling = "' &
Request.Querystring("Afdeling")'""
jeg får denne fejl:
a.. Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl, fordi der
mangler en operator. i forespørgselsudtrykket "Afdeling =".
/afdeling.asp, line 99
denne linje:
Set rs = Conn.Execute(strSQL)
Kan det ikke lade sig gøre det jeg prøver på? eller er der nogen der kan
fortælle hvad jeg gør forkert.
Mvh.
Henrik
| |
Jørn Andersen (08-12-2008)
| Kommentar Fra : Jørn Andersen |
Dato : 08-12-08 16:18 |
|
On Mon, 8 Dec 2008 14:36:54 +0100, "Henrik Nielsen" <mahlhn@ft.dk>
wrote:
>i afdeling.asp har jeg følgende:
>
>strSQL = "Select * From medlemmer Where Afdeling = "' &
>Request.Querystring("Afdeling")'""
>
>jeg får denne fejl:
>
>a.. Fejltype:
>Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
>[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl, fordi der
>mangler en operator. i forespørgselsudtrykket "Afdeling =".
>/afdeling.asp, line 99
Byt rundt på anf. tegnene. Når du har en ' uden for " .. ", så virker
resten af linien som en kommentar.
Desuden mangler du en & til sidst.
strSQL = "Select * From medlemmer Where Afdeling = '" &
Request.Querystring("Afdeling") & "'"
Good luck!
--
Jørn Andersen,
Brønshøj
| |
Leif Neland (08-12-2008)
| Kommentar Fra : Leif Neland |
Dato : 08-12-08 20:29 |
|
Jørn Andersen skrev:
> On Mon, 8 Dec 2008 14:36:54 +0100, "Henrik Nielsen" <mahlhn@ft.dk>
> wrote:
>
>> i afdeling.asp har jeg følgende:
>>
>> strSQL = "Select * From medlemmer Where Afdeling = "' &
>> Request.Querystring("Afdeling")'""
>>
>> jeg får denne fejl:
>>
>> a.. Fejltype:
>> Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
>> [Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl, fordi der
>> mangler en operator. i forespørgselsudtrykket "Afdeling =".
>> /afdeling.asp, line 99
>
> Byt rundt på anf. tegnene. Når du har en ' uden for " .. ", så virker
> resten af linien som en kommentar.
> Desuden mangler du en & til sidst.
>
> strSQL = "Select * From medlemmer Where Afdeling = '" &
> Request.Querystring("Afdeling") & "'"
>
> Good luck!
>
Og vent spændt på hvor lang tid der går, før din database bliver
angrebet via sql-injects.
Således bør det gøres:
selmedSQL = "Select * From medlemmer Where Afdeling = ?"
Set objCommand = Server.CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConn
objCommand.CommandText = selmedSQL
'Dette kan gøres mange gange i scriptet.
objCommand.Parameters(0).value = Request.Querystring("Afdeling")
Set objRS = objCommand.Execute()
- - - - -
Leif
| |
Henrik Nielsen (08-12-2008)
| Kommentar Fra : Henrik Nielsen |
Dato : 08-12-08 21:07 |
|
>>
>> Byt rundt på anf. tegnene. Når du har en ' uden for " .. ", så virker
>> resten af linien som en kommentar.
>> Desuden mangler du en & til sidst.
>>
>> strSQL = "Select * From medlemmer Where Afdeling = '" &
>> Request.Querystring("Afdeling") & "'"
>>
>> Good luck!
>>
> Og vent spændt på hvor lang tid der går, før din database bliver angrebet
> via sql-injects.
>
> Således bør det gøres:
>
> selmedSQL = "Select * From medlemmer Where Afdeling = ?"
>
> Set objCommand = Server.CreateObject("ADODB.Command")
>
> objCommand.ActiveConnection = objConn
> objCommand.CommandText = selmedSQL
>
>
> 'Dette kan gøres mange gange i scriptet.
>
> objCommand.Parameters(0).value = Request.Querystring("Afdeling")
>
> Set objRS = objCommand.Execute()
> - - - - -
>
> Leif
Det forstod jeg ikke helt, db/asp er rimelig nyt for mig, prøvede din kode
uden held, hvad mener du med angrebet.
Henrik
| |
Jan Bachman (08-12-2008)
| Kommentar Fra : Jan Bachman |
Dato : 08-12-08 21:23 |
|
On Mon, 8 Dec 2008 21:07:16 +0100, "Henrik Nielsen" <mahlhn@ft.dk>
wrote:
>Det forstod jeg ikke helt, db/asp er rimelig nyt for mig, prøvede din kode
>uden held, hvad mener du med angrebet.
Problemet er at du bygger din SQL-streng op ved at indsætte elemeter
fra QueryString uden kontrol med indholdet. Det kan give væmmelige
resultater, hvis man manipulerer med indholdet i ID-værdien.
Læs lidt om "SQL injection". Start evt. på wiki:
http://en.wikipedia.org/wiki/SQL_injection
/Jan
| |
Henrik Nielsen (08-12-2008)
| Kommentar Fra : Henrik Nielsen |
Dato : 08-12-08 21:05 |
|
>>
>>strSQL = "Select * From medlemmer Where Afdeling = "' &
>>Request.Querystring("Afdeling")'""
>>
>>jeg får denne fejl:
>>
>>a.. Fejltype:
>>Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
>>[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl, fordi der
>>mangler en operator. i forespørgselsudtrykket "Afdeling =".
>>/afdeling.asp, line 99
>
> Byt rundt på anf. tegnene. Når du har en ' uden for " .. ", så virker
> resten af linien som en kommentar.
> Desuden mangler du en & til sidst.
>
> strSQL = "Select * From medlemmer Where Afdeling = '" &
> Request.Querystring("Afdeling") & "'"
>
> Good luck!
>
> --
> Jørn Andersen,
> Brønshøj
Tak
| |
|
|