Avatar billede Slettet bruger
07. juni 2006 - 16:29 Der er 26 kommentarer og
1 løsning

validering af uploadede filer

hvordan validere jeg ved upload at et billede rent faktisk med garanti er et billlede.

hvordan validere jeg ved upload at en mp3fil rent faktisk med garanti er en mp3fil.

hvordan validere jeg ved upload at en zip-fil rent faktisk med garanti er en zipfil.

Hvis der er nogen der har noget generelt om sikkerhed i forhold til upload er jeg interesseret. evt et link ellr kloge ord

Tak for den hjælp der måtte komme
Avatar billede zurekk Nybegynder
07. juni 2006 - 18:57 #1
<?
include("connect.php");
if(isset($_POST['alrightythen']))
{
    $warning = 0;

    $ext = strtolower(end(explode(".", $_FILES['billede']['name'])));
   
    if (!preg_match('/jpg|jpeg|jpe|gif|png|bmp|tif|raw/', $ext))
    {
        $warning++;
    }

    if($warning == 0)
    {
        if(!copy($_FILES["billede"]["tmp_name"],"../film/pics/" . $_FILES["billede"]["name"]))
        {
            $warning++;
        }
    }

    $ext = strtolower(end(explode(".", $_FILES['film']['name'])));
    if(!preg_match('/wmv|wma|mov|avi|mpeg|mpg|ram/', $ext))
    {
        $warning++;
    }

    if($warning == 0)
    {
        if(!move_uploaded_file($_FILES['film']['tmp_name'],"../film/movies/" . $_FILES['film']['name']))
        {
            $warning++;
        }
    }

    if($warning == 0)
    {
        $title = mysql_real_escape_string(strip_tags($_POST['title']));
        $info = mysql_real_escape_string(strip_tags($_POST['info']));
        $movie = mysql_real_escape_string(strip_tags($_FILES['film']['name']));
        $picture = mysql_real_escape_string(strip_tags($_FILES['billede']['name']));
        $category = mysql_real_escape_string(strip_tags($_POST['kategori']));
        mysql_query("INSERT INTO film (title, info, movie, picture, category, date) VALUES ('$title', '$info', '$movie', '$picture', '$category', NOW())") or die(mysql_error());
        if(mysql_affected_rows()>0)
        {
            echo "Film og billede er uploadet korrekt<br>";
        }
        else
        {
            echo "Der opstod en fejl<br>";
        }
    }
    else
    {
        echo "doh<br>";
    }
}
?>
Avatar billede Slettet bruger
07. juni 2006 - 19:02 #2
Det er mere sikkert, at tjekke hvad type filen er, istedet for at tjekke hvad der står efter . i filens navn.

Det kan gøres ved:
$type = $_FILES['billede']['type'];

Så kan du jo tjekke
if(strstr($type, "jpg")) {
echo "En gyldig billede fil";
} elseif(strstr($type, "zip")) {
echo "En gyldig zip fil";
} elseif(strstr($type, "mp3")) {
echo "En gyldig mp3 fil";
} else {
echo "En IKKE gyldig fil.";
}
Avatar billede coderdk Praktikant
07. juni 2006 - 19:32 #3
Hvis du virkelig vil være sikker, skal du checke indholdet af filerne (magic signature)... :)
Avatar billede Slettet bruger
07. juni 2006 - 19:35 #4
Hvordan gør man det coderdk?
For at få nogen eksempler på bordet?
Avatar billede jakobdo Ekspert
07. juni 2006 - 19:49 #5
Du kunne evt. bruge linux/unix funktionen: file
Avatar billede Slettet bruger
07. juni 2006 - 21:24 #6
Ja og, hvad skal man så når man har kørt file(); på sin fil?
Det var for at få noget kode frem, og ikke bare nogen ider/tanker.
Avatar billede jakobdo Ekspert
07. juni 2006 - 21:32 #7
Er dette ikke simonhans73's tråd?
Opret evt din egen! :o)
Avatar billede Slettet bruger
07. juni 2006 - 22:35 #8
Jeg er dog også meget interessert i en virkelig sikker måde
Avatar billede jakobdo Ekspert
07. juni 2006 - 22:41 #9
Hvis du tjekker filendelsen, så er du godt på vej.
Men ellers skal du kigge på kommandoen: file
http://www.novell.com/coolsolutions/tip/16269.html
Avatar billede Slettet bruger
07. juni 2006 - 22:41 #10
Der kan du se jakobdo> Hvis du ikke kan komme med et svar, så lad vær med at spille så høj i hatten.
Avatar billede jakobdo Ekspert
07. juni 2006 - 22:59 #11
Hvad fanden mener du med det coldgate?
Du har jo fået løsningen i linket ovenover?
Hvis ikke du forstår kommandoen file i linux/unix, så kan jeg jo ikke gøre for det.
Og det har da intet med at spille høj i hatten...
Avatar billede Slettet bruger
08. juni 2006 - 19:26 #12
Hvad er sikrest. At bruge $_FILES['billede']['type']; eller filendelse?
Avatar billede jakobdo Ekspert
08. juni 2006 - 19:47 #13
$_FILES['billede']['type'] kan snydes.
Det kan filendelsen også, men filendelse må i de 2 tilfælde være mest sikkert.
Evt. kan du jo lave filendelse tjekket først, og derefter tjekke ['type']
Avatar billede Slettet bruger
09. juni 2006 - 08:20 #14
Hvordan kan $_FILES['billede']['type'] snydes?
Men ellers kan man jo tjekke om filen's type og extension er 100% identiske..
Avatar billede jakobdo Ekspert
09. juni 2006 - 08:27 #15
Coldgate: Jeg vil da ikke fortælle hvordan den kan snydes. http://justfuckinggoogleit.com/
Avatar billede Slettet bruger
09. juni 2006 - 12:10 #16
Hvis filendelsen ikke er php kan filen vel under ingen omstændighed køre som php fil vel?

Så hvis man er checkker at filendelsen ikke er php så er vel ikke noget farligt ved noget af det folk uploader?
Avatar billede jakobdo Ekspert
09. juni 2006 - 12:26 #17
Folk kunne uploade en exe fil som indeholder virus.
Der kunne uploades mange forskellige ting.
Så jeg vil anbefale du 100% bestemmer hvilke filtyper du vil godkende.
Avatar billede Slettet bruger
09. juni 2006 - 21:54 #18
Okay jacobdo.
Var nu mere for at finde ud af hvordan man kunne sikre sig i mod det men jeg søger på google når jeg får tid engang istedet for.
Avatar billede Slettet bruger
09. juni 2006 - 23:55 #19
Ok.
Så hvis jeg tillader filer med endelsen zip, jpeg og mp3 og ikke tillader andre filendelser skulle det ikke være farligt vel
Avatar billede jakobdo Ekspert
10. juni 2006 - 09:03 #20
Hvad mener du præcist med farligt?
De 3 filtyper vil ikke kunne afvikle kode på din server, som kunne slette noget f.eks.
Men en zip fil vil jo kunne indeholde hvad som helst, som kan være farligt for personen som evt henter filen og eksekvere indholdet.
Avatar billede Slettet bruger
10. juni 2006 - 13:23 #21
Ja det med .zip filerne er jo endeligt rigtigt, det har jeg ikke selv tænkt over.
Men ved f.eks. mp3 filer er ulovligt indhold på server fra b-one, samt zip, jpg ect.
Som du kan se her: http://www.eksperten.dk/artikler/977
Avatar billede Slettet bruger
10. juni 2006 - 22:52 #22
med farligt mener jeg at de vil kunne slette eller på anden måde lave rav i min server.
Avatar billede jakobdo Ekspert
11. juni 2006 - 11:51 #23
Simonhans73: Så er de 3 typer ikke farlige.
Avatar billede Slettet bruger
03. august 2006 - 13:56 #24
i må gerne lægge svar
Avatar billede jakobdo Ekspert
06. august 2006 - 08:36 #25
Svar!
Avatar billede jakobdo Ekspert
06. august 2006 - 23:01 #26
Takker for point! :o)
Avatar billede Slettet bruger
06. august 2006 - 23:37 #27
Det var så lidt..tak for hjælpen
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