Just nu i M3-nätverket
Jump to content

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


Yepzy

Recommended Posts

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!

Link to comment
Share on other sites

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.

 

 

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

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.

 

 

Link to comment
Share on other sites

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?

 

Link to comment
Share on other sites

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

 

 

Link to comment
Share on other sites

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.

 

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...