/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
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



Søg
Reklame
Statistik
Spørgsmål : 177549
Tips : 31968
Nyheder : 719565
Indlæg : 6408820
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste