06. september 2006 - 14:41Der er
15 kommentarer og 1 løsning
Er det muligt at rippe ASP sider?
Er der nogen der ved om det er muligt at rippe ASP sider? Jeg vil gerne vide om det er muligt for nogen at downloade mine ASP sider og på den måde gennemgå min kode?
Hvis ja, så vil jeg gerne vide hvordan man gør så jeg kan se om jeg kan forebygge det.
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
Ok, jamen så må de have hacket sig ind igennem gæstebogen så :-P Men den kan da ihvertfalde sikres relativt nemt. Jeg blev bare helt i tvivl om man kunne downloade .asp filer vha et program :-)
.. Og en forklaring på ' problematikken, hvis du ikke kender det.
Forstil dig et login tjek: user = request.form("user") pass = request.form("pass") set rs = conn.execute("select * from userTabel where name='"& user &"' and pass='"& pass &"'")
Normalt vil de give en sql ala: select * from userTabel where name='brugernavn' and pass='password'
Men hvis man indtaster ' or '1'='1 som password giver det en sql som er: select * from userTabel where name='' and pass='' or '1'='1'
Denne kørsel vil returnere ALLE rækker, og derfor logge brugeren ind.
I MS-SQL er det endnu være da man kan skrive '; shutdown; hvilket resultere i at DB-serveren lukker ned. Eller '; drop table xxx; hvilket sletter den angivet tabel. Disse sidste komandoer kunne sagtens have været skrevet i et note felt, og aktiveret gennem en insert.
Ved at udskifte ' til to bliver det før omtalte login til: select * from userTabel where name='' and pass=''' or ''1''=''1'
Og der opfatter DB'en '' som et escapetegn (lige som ASP gør med ""), og ser det som et enkelt, hvilket betyder at pass bliver sammenlignet med "' or '1'='1", hvilket der helst ikke skulle være nogen der har som password.
Denne problematik er også kendt som SQL-injections.
Det skal du kun tænke på ved udskriften. Indsæt altid de orginale indtastninger i databasen. Når du så udskriver sender du det igennem diverse funktioner.
Bruger du: rs("kol1") = "dfvkj" rs("kol2") = 123 rs.update
Til at opdatere/indsætte i din database, skal du ikke sikre noget som helst (heller ikke ' tegnet). Bare indsæt description som den er: rs("description") = Request.Form("description")
Når du udskriver sender du det igennem HTMLencode og replacen: response.write replace(server.htmlEncode(rs("description")),vbcrlf,"<br>")
rs.update generere selv SQL'en og sender til databasen, og den sørger for at formatere tingene rigtigt (f.eks datoer og ' tegn), så der ikke opstår fejl ved indsættelse. Laver du selv SQL'en, skal du selv lave alle disse tjek.
Nogen kan bedst lide rs.update metoden, fordi de så slipper for at skulle lave alle disse tjek, men jeg føler jeg mister kontrollen, hvorfor jeg fortrækker at lave mine SQL sætninger selv. Begge metoder har deres fordele og ulemper.
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.