| 
					
							
        
    
        
						
			 | 
			
			
					    
					
        
         
          
         
	
            | 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 
 
 
  
            
             |   |   
            
        
 
    
 
					
					 
			 | 
			
				
        
			 |