12. april 2005 - 20:01Der er
23 kommentarer og 2 løsninger
Hacket, hvor er fejlen?
Hej med jer!
Det er en RIGTIG sørgelig dag! Min nye side med en masse brugere på er lige blevet "hacket". På en eller anden måde har han fundet ud af hvordan han har kunnet slette brugere.
Min side er bygget op med PHP støttet af mySQL og bruger en masse COOKIE.
Jeg vil bruge dette spørgsmål, til at finde ud af hvordan han evt. har gjort, og så det ikke gentager sig.
Jeg tror at personen har brugt noget kode inde i min egen kode. Bl.a. kunne jeg se at han havde prøvet at oprette en bruger med navnet: "Berit<iframe src=http://www.mopedmanager.dk/ret_profil.php?action=slet width=0 height=0 frameborder=0></iframe>"
Alt i alt har jeg ikke sikret min side med ingen html koder i inputs osv. Men kan det så stadigvæk være muligt at "hacke" siden selvom jeg IKKE har det?
Håber der er nogle med lidt viden indenfor dette sørgelige emne :(
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Hvis man ved en querystring kan slette en bruger blot ved at sætte action=slet og evt et brugernavn eller noget..så er det jo ikke godt. Men tror næsten vi må se noget mere kode for at kunne vurdere det Du har da i hvert fald sikret login for sql injection kan jeg se
Jeg har hans ip... og jeg kan se at personen sidder bag en proxy eller noget. Lige pt. benytter han nemlig en amerikansk udbyder: cox-internet.com. Og han har skiftet flere gange!
ANg. queystring. Så kan man ikke bare skrive slet. For fx. ved sletningen af sin profil, så sletter den kun den profil hvor id = $_COOKIE[id]. Hvis du forstår.
Har lange scripts hvor der er mange forskellige funktioner. Derfor det er bedre at forklare det sådan
Oki doki så er ikke der den hænger.... med mindre han selv opretter cookies Der ville det jo nok være mere sikkert at gemme id i en session hver gang der logges på
Det er jo nemt at sætte min browser op til at returnerer et vilkårlig id - da "klienten (browseren)" jo sender id'et kan du ikke stole på de informationer.
Så det er jo bare
sæt id i cookie til 1 kald slet url id1 sæt id i cookie til 2 kald slet url for id2
dennismp > Forstår ikke lige hvad du mener. Kan du evt. give et eksempel. Og gider du evt. prøve at se om det kunne være sådan han gør det mod min side?
jeg vil af gode grunde ikke vise hvordan det gøres :)
Men det er lykkes mig at oprette en bruger og efterfølgende slette denne uden at være logget ind.
Ikke for at skræmme dig, men jeg ville nok tage siden offline og få fixet problemet. Som allerede forslået skal du "bare" bruge $_SESSION istedet for $_COOKIE
Hehe nååårrrrhh nej :p Selvfølgelig er det ikke rart på den måde Jeg vidste bare det kunne lade sig gøre. Men jeg har aldrig prøvet gøre det selv. Så kunne jo ikke forklare hvordan. Anyways så er intet jo 200% hackerfrit Men jo mere cookies som kan laves til sessions desto bedre i mine øjne
labisama; grunden til at problemet kan løses med session istedet for cookies er måden session virker på.
Sessions (kan og gør normalt) lave en cookie på brugeren computer. I den cookie er der et unikt id. Det er det eneste der gemmes hos brugeren. Han kan ændre den ja, men da id'et er ret langt og tilfældigt generert vil han med stor sandsynligvis bare ramme en tom session (som virker som om at han er logget ud).
De oplysninger du gemmer i $_SESSION[] bliver gemt i en fil på en server. Filnavnet er det unikke id, hvis man ændre det - så findes filen ikke. Og man har derved intet vundet. Brugeren kan så ikke ændre indholdet af filen (med mindre han har direkte adgang til serveren. og det har man jo normalt ikke). Dermed har du gemt dine oplysninger uden at være bange for at han kan rette i fx. id'et.
Hvis du skal skifte fra cookies til session skal du på alle sider der bruger cookies: - tilføje en session_start() som det første dit phpscript laver - erstatte setcookie('navn',værdi) med $_SESSION['navn'] = værdi; - erstatte $_COOKIES['navn'] med $_SESSION['navn'] - hvis du skal sette informationer fra session: unset($_SESSION['navn']); - hvis du skal logge ud, session_destroy() (sletter alle informationer)
Synes på en måde det er dumt at skrive hvordan sådan noget kan gøres her Men synes omvendt at hvis I finder andre problemer over mail så vil jeg da meget gerne høre om dem Måske vi andre kunne lære noget og måske havde samme hul uden vide det jo
busschou, jeg ved nu ikke om det ikke bør nævnes. I min browser kan jeg sågar under indstillinger, gå ind og ændre indholdet i mine cookies. Det er der ikke så hacking over..
For det første er det ganske elementært - så man må formode, de fleste allerede ved det - for det andet kan det forhåbentligt lære andre, hvordan man helt basalt beskytter sine (og måske andres følsomme person-) data.
Det burde ellers være rimelig lige til, når du først har lært SESSION at kende. Selvf. er det en lidt øv-ting at lave (man laver jo ikke noget nyt, man får bare det gamle til at virke).
Men det er da fedt at du er blevet klogere - bare lidt sur måde at få det lært på.
I dit indledende spørgsmål spurgte du ikke noget om pointfordelingen, så det må du selv finde ud af :)
Tak endnu engang, og håber i er tilfredse med points :D
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.