Willkommen Gast. Bitte einloggen oder registrieren.
Haben Sie Ihre Aktivierungs E-Mail übersehen?

Einloggen mit Benutzername, Passwort und Sitzungslänge

 
Erweiterte Suche

5463 Beiträge in 1174 Themen- von 6638 Mitglieder - Neuestes Mitglied: Vidsgaga

09.02.2012 20:46
ProfiHost - SupportforumTechnikTechnische Probleme[cgi] Insecure dependency
Seiten: [1]   Nach unten
Drucken
Autor Thema: [cgi] Insecure dependency  (Gelesen 4645 mal)
gbmedia
Newbie
*
Offline Offline

Beiträge: 4


Profil anzeigen
« am: 29.05.2009 13:56 »

hallo,

bastel gerade an nen upload mit *.pl
geht lokal (xampp - windows) ganz gut.
online kommt folgender fehler:
Insecure dependency in open while running with -T switch at *.pl line 24.

die betroffene zeile:
open ( UPLOADFILE, ">$upload_dir/$filename" ) or die "$!";

hab auch mal schreibrecht getestet:
if ((not (-w $upload_dir))) {
   print $query->header ( );
  print "<b>Fehler</b><br>Zielverzeichnis ist nicht beschreibbar. Die Datei kann daher nicht geladen werden.";
  exit;
} else {
   print $query->header ( );
  print "<b>geht</b>";
  exit;
}

geht.

was ist das problem?
Gespeichert
ProfiHost - Technik
Administrator
Hero Member
*****
Offline Offline

Beiträge: 1696


Profil anzeigen
« Antworten #1 am: 29.05.2009 15:14 »

$upload_dir und oder $filename wird vermutlich nicht auf ungültige Zeichen geprüft.
Gespeichert

Mit freundlichen Grüßen
Ihr ProfiHost Team
gbmedia
Newbie
*
Offline Offline

Beiträge: 4


Profil anzeigen
« Antworten #2 am: 29.05.2009 16:02 »

doch

hier mal mein script

Code:
#!/usr/bin/perl -wT

use strict;
use CGI;
use CGI::Carp qw ( fatalsToBrowser );
use File::Basename;

$CGI::POST_MAX = 1024 * 100000;

my $query = new CGI;
my $filename = $query->param("file");
my $upload_dir = $query->param("osupload");
my $refresh = $query->param("refresh");

my ( $name, $path, $extension ) = fileparse ( $filename, '\..*' );
$filename = &MakeFilename($name) . $extension;
my $upload_filehandle = $query->upload("file");

open ( UPLOADFILE, ">$upload_dir/$filename" ) or die "$!";
binmode UPLOADFILE;
while ( <$upload_filehandle> ){
print UPLOADFILE;
}

close UPLOADFILE;
print $query->header ( );
print <<END_HTML;
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 <head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
   <title>Thanks!</title>
   <style type="text/css">
     img {border: none;}
   </style>
  <script>window.location.href = "$refresh";</script>
 </head>
 <body>
   <p>Thanks for uploading your file!</p>
 </body>
</html>
END_HTML

exit;

sub MakeFilename {
my $file = shift;
$file =~ s/\xc3(.)/chr(ord($1) + 0x40)/eg;
$file =~ s/[äÄ]+/ae/g;
$file =~ s/[öÖ]+/oe/g;
$file =~ s/[üÜ]+/ue/g;
$file =~ s/ß/ss/g;
$file =~ tr/ /_/;
$file =~ s/[^a-zA-Z0-9\-\._-]+//gi;
$file = lc($file);

return $file;
}
Gespeichert
ProfiHost - Technik
Administrator
Hero Member
*****
Offline Offline

Beiträge: 1696


Profil anzeigen
« Antworten #3 am: 29.05.2009 16:11 »

Ich sehe keinerlei Prüfung auf z.B.
$filename

gültig wäre z.B.
$filename =~ m#^([a-z0-9\._\-]+)$#i or die "$filename ungültig\n";
$filename = $1;
Gespeichert

Mit freundlichen Grüßen
Ihr ProfiHost Team
gbmedia
Newbie
*
Offline Offline

Beiträge: 4


Profil anzeigen
« Antworten #4 am: 29.05.2009 17:06 »

ich benenne die namen um.

$filename = &MakeFilename($name) . $extension;
sub MakeFilename {
   my $file = shift;
   $file =~ s/\xc3(.)/chr(ord($1) + 0x40)/eg;
   $file =~ s/[äÄ]+/ae/g;
   $file =~ s/[öÖ]+/oe/g;
   $file =~ s/[üÜ]+/ue/g;
   $file =~ s/ß/ss/g;
   $file =~ tr/ /_/;
   $file =~ s/[^a-zA-Z0-9\-\._-]+//gi;
   $file = lc($file);
   
   return $file;
}
Gespeichert
gbmedia
Newbie
*
Offline Offline

Beiträge: 4


Profil anzeigen
« Antworten #5 am: 29.05.2009 17:15 »

ich hab den fehler gefunden

#!/usr/bin/perl -wT

in

#!/usr/bin/perl

dann geht's
Gespeichert
ProfiHost - Technik
Administrator
Hero Member
*****
Offline Offline

Beiträge: 1696


Profil anzeigen
« Antworten #6 am: 29.05.2009 20:07 »

Damit schalten Sie aber alle Sicherheitsüberprüfungenn von Perl aus. Das ist kein Fehler.
Gespeichert

Mit freundlichen Grüßen
Ihr ProfiHost Team
Seiten: [1]   Nach oben
Drucken
Gehe zu:  

Theme orange-lt created by panic