Avatar billede danielhep Nybegynder
18. februar 2012 - 17:07 Der er 9 kommentarer og
1 løsning

Firefox plugin Tamper data

Hej alle,


Jeg har fornyligt leget lidt med et firefix plugin kaldet Tamper Data.

Det giver mig muligheden for at uploade en PHP fil med kode i igennem et normalt upload, på en hjemmeside.  Selvom at man tjekker på typer og den slags med PHP får man stadigvæk uploaded sin PHP fil, og kan så udføre den kode som står i.


Er der nogle ideér til hvordan man bedst sikre sig imod den slags angreb?


På forhånd tak.

/ps.. Jeg har lidt travlt, så kan tage lidt tid før at jeg kan svare :)
Avatar billede The_Buzz Novice
18. februar 2012 - 17:15 #1
Hvis det virker - er det sgu skræmmende...!
Avatar billede danielhep Nybegynder
18. februar 2012 - 17:17 #2
Det virker fint, har testet på min localhost op imod en standard upload side kodes med PHP.

Har dog ikke gjort noget specielt ud af denne upload side, tjekker naturligvis på $_FILES på type som normalt, og på størrelse som altid.

Men ikke mere herfra.
Avatar billede olebole Juniormester
18. februar 2012 - 17:29 #3
<ole>

Hvis man kun tester på MIME-type/headers, begår man offentligt selvmord! Test altid både MIME og extension.

Derudover skal man altid tjekke alle modtagne variabler for, om de indeholder det forventede. Ellers står man pivåben for angreb.

At teste for, om variablerne for, om de indeholder det forventede, er vel at mærke ikke det samme som at forbyde visse tegn, man formoder er 'farlige' - og så tillade resten.

Du skal gøre det modsatte: Test, om det modtagne er det, du forvanter, og forkast requesten/uploaden, hvis det ikke er tilfældet. Ellers har du tabt kampen på forhånd

/mvh
</bole>
Avatar billede olebole Juniormester
18. februar 2012 - 17:31 #4
Der blev rettet lidt i teksten, som endte i noget vrøvl! tredie afsnit skulle lyde:

At teste for, om variablerne indeholder det forventede, er vel at mærke ikke det samme som at forbyde visse tegn, man formoder er 'farlige' - og så tillade resten.
Avatar billede danielhep Nybegynder
18. februar 2012 - 19:34 #5
Hej Ole, kan du evt give et eks. på denne metode du snakker om, så om jeg ved det er det samme som jeg har i tankern?

På forhånd tak :)
Avatar billede olebole Juniormester
18. februar 2012 - 20:14 #6
Dette skulle gerne være rimlig sikkert:

$allowedExts = array(
    'jpg' => 1,
    'jpeg' => 1,
    'png' => 1,
    'gif' => 1
);
$allowedMimes = array(
    'image/jpg' => 1,
    'image/x-jpg' => 1, // IE
    'image/jpeg' => 1,
    'image/x-jpeg' => 1, // IE
    'image/pjpg' => 1, // Progressiv JPG
    'image/png' => 1,
    'image/x-png' => 1, // IE
    'image/gif' => 1,
    'image/x-gif' => 1 // IE
);

if (is_uploaded_file($_FILES['myPic']['tmp_name'])===true) {
    $ext = strtolower(pathinfo($_FILES['myPic']['tmp_name'], PATHINFO_EXTENSION));
    $type = $_FILES['myPic']['type'];
   
    if (is_string($ext)===true && is_string($type)===true && $allowedExts[$ext] && $allowedMimes[$type]) {
        // Tilladt fil
    } else {
        // Ikke en tilladt fil
    }
} else {
    // Ingen fil uploaded
}
Avatar billede danielhep Nybegynder
18. februar 2012 - 21:52 #7
Ole smider du lige et svar til mig, du har gjort det :)

Mange tak :)
Avatar billede olebole Juniormester
18. februar 2012 - 22:41 #8
Ellers tak, jeg samler ikke point. Læg selv et svar og accepter det, så tråden lukkes  =)
Avatar billede danielhep Nybegynder
19. februar 2012 - 00:37 #9
ok det gør jeg hehe, mange tak for dit svar :)
Avatar billede olebole Juniormester
19. februar 2012 - 00:52 #10
Selvtak  =)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester