Just nu i M3-nätverket
Gå till innehåll

Order by '" & Request.QueryString("order") & "'


Yepzy

Rekommendera Poster

Har lite problem, hämtar ett antal poster ifrån en databas med SQL-satsen

 

SQL = "SELECT * FROM lista WHERE kategori = '" & kat & "' ORDER BY '" & Request.QueryString("order") & "'"

 

Tanken är alltså att man med hjälp av ett par länkar ska kunna sortera efter sitt eget tycke.

Ett exempel på en sådan länk är:

 

lista.asp?kat=kat1&order=namn

 

Vad som händer är att tabellen mycket väl hämtar rätt information och så vidare, däremot så listar den inte efter "namn" över huvudtaget. Om jag däremot skriver "namn" direkt i SQL-satsen (istället för Request...) så fungerar det, problemet är ju att jag inte vill ha en statisk SQL-sats...

 

Vore väldigt tacksam för hjälp!

Länk till kommentar
Dela på andra webbplatser

En säkerhets notis bara, man bör aldrig "släppa igenom" Request.QueryString på det sättet.

 

Nu skulle man kunna köra in vad som helst genom "order" i query string.

 

 

Länk till kommentar
Dela på andra webbplatser

Håller lite med. Du kan börja med att ändra följande:

SQL = "SELECT * FROM lista WHERE kategori = '" & kat & "' ORDER BY " & Replace(Request.QueryString("order"), "'", "")

 

/JANspeed

 

Länk till kommentar
Dela på andra webbplatser

Inte bara det allt bakom ";" bör nog tas bort också, eller åtminstone ta bort just ";"

 

Annars kan jag ju skicka in något i stil med:

 

" namn; DROP TABLE lista"

 

Visserligen är det inte säkert att den tillåter flera frågor på det sättet och man kan ju köra med begränsad användare i SQL Server till exempel men man bör ändå inte släppa igenom en sån greja.

 

Men det var lite överkurs på frågan, jag ville bara nämna det för många verkar missa det när de startar med databaser och sen gör de på samma sätt hela tiden utan att tänka på riskerna.

 

 

Länk till kommentar
Dela på andra webbplatser

Hej igen.

 

Vill först och främst tacka för era svar, när det gäller "säkerheten" är jag inte helt säker på vad ni menar.

 

Om ni menar att man i princip kan fylla i vad som helst i adressfältet och därmed sortera efter eget tycke, så är det egentligen löst tidigare i och med en if-sats... men jag har väl antagligen missuppfattat er.

 

För övrigt gäller det endast sorteringen av inlägg (typ en gästbok) och därmed kan ingen "känslig" information läcka ut - det enda som skulle kunna hända är väl att sidan inte fungerar, eller har jag missat något?

 

Länk till kommentar
Dela på andra webbplatser

Grejen är att man kan skicka in godtyckliga SQL frågor som exekveras.

 

Det går som sagt hindra på andra sätt men för den skull bör man inte släppa igenom det.

 

Om du verifierar tidigare att Request.QueryString("order") endast är godkända strängar så är ju allt ok men så såg det inte ut som du gjorde.

 

Som sagt lite överkurs och hade inte mycket med frågan att göra men bara så man känner till att det kan vara problematiskt att göra så.

 

 

Länk till kommentar
Dela på andra webbplatser

Okay, visst tack - bra att veta inför framtiden, kanske. Jag försökte utesluta så mycket oväsentlig kod som möjligt, för att tydligare visa var jag gjort fel.

Godnatt.

 

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...