Det ville være BETYDELIGT nemmere om du prøvede at få vist den SQL-sætning den kalder - det kan jo være fejlen ikke er i din SQL-syntax, men i stedet i dine variable.
Og når det er sagt, er det generelt en dårlig ide at smide en query direkte ind i et link - det afslører noget om databasens struktur, og din query kan være for lang til at kunne skrives ind i URL'en.
23/10-2005 20:04:51> Det er også en dårlig ide, idet det tillader folk at rette URL'et og gøre grimme ting med din database. Jeg kunne f.eks. lave min egen lille hacker-side og så inkludere:
...&refreshSQL=DELETE%20FROM%20tabel">
Hvis du bare bevistløs udføre den SQL-sætning, du får via dit URL, har jeg dermed slettet indholdet af din tabel.
Værre endnu, hvis den side der linkes til er beregnet til at vise en SELECT query, kunne man foretage en SHOW TABLES (lige den er vist nok specifik for MySQL, men meningen forstås forhåbentlig...) og derefter lave DROP TABLE på dem alle.
Og det er jo ikke engang nok at bare kigge på det første ord - hvad siger du for eksempel til inputtet SELECT * FROM tabel; DROP TABLE tabel?
Hvis du blot udføre rsSQL uden at lave yderligere tjek end det viste - JA! Pidgeot's og mine eksempler får begge to lov til at passere direkte igennem.
Under alle omstændigheder er det den forkerte strategi du lægger dig, at først introducere sårbarheden ved at angive en SQL sætning, for derefter at forsøge at lukke de huller dette skaber. I stedet skal du fjerne SQL'en helt og i stedet opbygge den fra argumenterne - efter at disse selvfølgeligt er blevet renset for forsøg på SQL-injection.
Ja, jeg kan sagtens godt hjælpe dig med at lave de ordentligt. :^)
Men lige først tilbage til dit oprindelige problem. Løsningen er netop den der er angivet i 23/10-2005 02:36:32. For at implementere den i din nuværende kode, så skal vi imidlertid se hvordan du laver din SQL-sætning. Forløbigt har du kun vist at du gemmer den i din session, men et eller andet sted må den jo komme fra til at starte med. Og det er der at rettelsen skal laves.
If statusQ <> "" Then strSQL = "select * from bem right join fly_status on bem.Bstel = fly_status.MOC_stelnr WHERE MOC_enhed = '" & esk & "' and MOC_sortering = '" & statusQ & "' order by " & sOrderBy & " " & sSort else strSQL = "select * from bem right join fly_status on bem.Bstel = fly_status.MOC_stelnr WHERE MOC_enhed = '" & esk & "' order by " & sOrderBy & " " & sSort end if
Umiddelbart ser det ud som om det er variablernes indhold den er gal med. Prøv enten at vise os et eksempel på hvad dine variable indeholder på det pågældende tidsounkt, eller får dit script til midlertidigt at udskrive den færdige SQL.
Bruger link der trykkes på: default.asp?mode=visstatus&esk=MA C&statusQ=1&OrderBy=MOC_stelnr&sort=ASC
placeres i følgende SQL: strSQL = "select * from bem right join fly_status on bem.Bstel = fly_status.MOC_stelnr WHERE MOC_enhed = '" & esk & "' and MOC_sortering = '" & statusQ & "' order by " & sOrderBy & " " & sSort
giver udskrevet: select * from bem right join fly_status on bem.Bstel = fly_status.MOC_stelnr WHERE MOC_enhed = 'MA C' and MOC_sortering = '1' order by MOC_stelnr ASC
brugerens site placering herefter, vil medføre en sortering at outputtet. Derfor har jeg oprettet nogen <a href ... > til dette: <a href="default.asp?mode=visstatus&esk=<%=Request.QueryString("esk")%>&skp=<%=Request.QueryString("skp")%>&aal=<%=Request.QueryString("aal")%>&statusQ=<%=Request.QueryString("statusQ")%>&orderby=<%=IndholdAll(arrCustom(i))%>,<%=sOrderBy%>&sort=<%=IsSort(IndholdAll(arrCustom(i)))%>&refreshSQL=<%=session("refreshSQL")%>">
som så ikke indeholder kvalitativ sikkerhed, men med en forsøgt sortering af flere kolonner (... orderby=<%=IndholdAll(arrCustom(i))%>,<%=sOrderBy%> ...) der dog ikke har en funktionel ASC / DESC dortering af de enkelte valgt kolonner.
... order by Felt1, Felt2, Felt3 ASC, ASC, DESC ...
Det skal de ikke; hvert led i sorteringen skal have sin egen ASC/DESC
... order by Felt1 ASC, Felt2 ASC, Felt3 DESC ...
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.