Stefan Bach: Probleme beim Überprüfen einer Grafik

Beitrag lesen

Hallo,

Durch die Tatsache, dass mein Uploadscript umgangen werden konnte, und eine .zip Datei als unbenannte .jpg hinaufgeladen werden konnte, will ich jetzt noch zusätzlich alle Uploads mit Image::Size überprüfen.

ich kann dir zwar bei Image::Size nicht helfen, aber dir zumindest zeigen, wie ich den Test auf JPEG-Format durchführe:

my $fh = $q->upload('signature');
 if (defined $fh && ! $error) {
  my $buffer;

$tempfile = md5_base64 ($vars{prename} . $vars{name} . $vars{mail} . rand(10));
  $tempfile =~ s!/!!g;
  $tempfile =~ s!\!!g;

open TEMPFILE, ">$tempfile" or die "Opening temporary file $tempfile: $!";
  binmode TEMPFILE;

while (read ($fh, $buffer, 1024)) {
   print TEMPFILE $buffer;
  }

close TEMPFILE;

my $size = (stat $tempfile)[7];
  if ($size > 50 * 1024) { $error .= "Die Unterschriftendatei darf maximal 50 KB groß sein\n"; }

unless ($error) {
   my $mm = new File::MMagic;
   my $mime = $mm->checktype_filename($tempfile);

if ($mime ne 'image/jpeg') { $error .= "Die Unterschrift muss als JPEG Bild hochgeladen werden. Die gewählte Datei wurde als $mime erkannt.\n"; }
  }

unlink $tempfile if ($error);
 }

Wenn du danach weißt, dass es ein JPEG Bild ist, dann kannst du ja Image::Size drauf loslassen und es sollte klappen.

Viele Grüße,

Stefan

--
Lass dir das Tanzen NICHT verbieten
http://tanzverbot.de