Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
Slettet bruger
27. november 2006 - 23:55#1
tjae - om det er sikkert eller ej er jo et godt spørgsmål... men du kan jo eventuelt lave det med sessions i stedet... noget a la det her:
<% if request.querystring("id")<>"" then session("id")=request.querystring("id") response.redirect request.servervariables("script_name") end if %>
- hvis du sætter denne kode i toppen af din side så gemmer den querystringens indhold i en session i stedet og redirecter til samme side igen og hvor vi så skal kigge i databasen... din select skal derfor være id=session("id") og vupti... querystringen er pist væk...
ahh smart - Det vil jeg huske fremover. Problemet er, at jeg sidder med et næstent færdigt site, og vil helst ikke begive mig ud i ændringer, der tager for lang tid.
Men jeg tænkte over om man kunne skrive SQL-injections i querystringen - f.eks DROP TABLE eller noget...
Hvad gør "request.servervariables("script_name")" for øvrigt? :)
Den sikrer vel kun at det der står efter id'et, er et tal...? Men hvad så hvis en evt. hacker bare erstatter "id" med noget andet: eks: default.asp?action=news&TEST=(også noget sql-fis)
Ved ikke om det kan lade sig gøre..?
Håber i forstår Jeg vender tilbage i morgen
Synes godt om
Slettet bruger
28. november 2006 - 00:56#5
- morhan>> Det fjerner jo ikke querystringen... det tjekker jo blot om sql'en er nummeric og er den så ikke det sker der ikke mere... men det forhindrer jo ikke brugeren i at kunne se at der bruges querystrings og så at kunne indtaste querystrings selv...
- radiohead>> request.servervariables("script_name") fremkalder bare den virtuelle adresse på den pågældende side... sådan at ligegyldigt hvad din asp-side hedder så redirecter den altid til det rigtige... Du kan i øvrigt indsætte min kode uden stort besvær... du skal bare indsætte den i toppen og så lave en lille smule om på din select-sætning... Men hvad mener du med DROP TABLE?
hvis du fjerner id fra strengen, så er der vel ikke noget problem. kun id indsættes i sqlen. TEST vil ikke sættes ind, og dermed er der ingen mulighed for injektion
dannielsen, du gemmer urlen i en sessionvar, og efterfølgende indsætter indholdet af sessionvar i sqlen. hvor er forskellen?
det hjælper kun, hvis du indsætter strengværdier, hvor ' bruges til at markere start og slut på værdien
i den sql du viser her, har det ingen effekt. f.eks. hvis id antager "1; drop table" så hjælper det ikke meget at erstatte ' med ingenting, for der slet ingen apostroffer i inputtet
lad os antage du udtrækker overskrift og indhold fra din nyhedstabel..
select overskrift,indhold from nyheder where id = {id}
ud over nyheder har du en tabel over brugere og deres password (i klar tekst). Hackeren ændrer nu i urlen, så id får følgende værdi:
0; UNION SELECT brugernavn,password FROM users
i stedet for at du viser en nyhed for hackeren, vil du nu vise indholdet af din brugertabel. Selv om man ikke har skriverettigheder, så er der mange andre ting der der kan gå galt ved ukontrolleret brugerinput
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.