Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]6569[/thread]

Fehler im Modul abfangen: und Taint Mode (Seite 2)



<< |< 1 2 >| >> 15 Einträge, 2 Seiten
ptk
 2004-12-13 18:32
#49949 #49949
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Dass $Directory moeglicherweise tainted ist. Versuch mal Scalar::Util::tainted.
pq
 2004-12-13 18:41
#49950 #49950
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
[quote=anti,13.12.2004, 16:28]Was "sagt" mir ein:
Quote
Insecure dependency in `` while running with -T switch at /var/www/cgi-bin/projekt/start.cgi line 70.

also bei:
Code: (dl )
my $erg = qx(mkdir $Directory);
[/quote]
hmm, ist das wirklich zeile 70? eigentlich sollte da auch $ENV{PATH} engegeben werden...
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
anti
 2004-12-13 18:45
#49951 #49951
User since
2003-11-29
155 Artikel
BenutzerIn
[default_avatar]
Danke an alle Helfer, mit Scalar::Util::tainted ging's endlich. Werde mich wohl mal näher mit dem Taint Mode beschäftigen!
Und das mit $ENV{PATH} hab ich nun auch kapiert ;)

greetz,
anti
cbxk1xg
 2004-12-14 12:28
#49952 #49952
User since
2003-10-20
496 Artikel
BenutzerIn
[default_avatar]
Es geht auch ohne Modul. Ich hatte das gleiche Problem beim Backend meines CMS. Benutzer könnten ja eventuell Pfade selbst eingeben. Z.B. über GET. Um das auszuschließen benutzt das CMS nur untaint Pfade die ich selber festlege indem ich sie explizit als untaint definiere.

Dafür übergebe ich den gewünschten Pfad an eine Klasse die den Pfad freigibt. Falls das fehlschlägt "stirbt" das Script. Alternativ könnte man natürlich auch eine Fehlermeldung ausgeben.

Code: (dl )
&untaint( $path ) or die( "The following path is tainted:\n'$path'\nIt's not a secure path.\n" );


Die Klasse (sub)
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
sub untaint
{
my ($arg) = @_;
$$arg =~ m|^(.*)$|;

if ($$arg eq "")
{ $$arg = $1; return 1; }

if (($1 =~ m|^\.\.\/|) or ($1 =~ m|\/\.\.\/|))
{ return undef; }

else { $$arg = $1; }
}
esskar
 2004-12-14 14:25
#49953 #49953
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=cbxk1xg,14.12.2004, 11:28]Benutzer könnten ja eventuell Pfade selbst eingeben. Z.B. über GET.[/quote]
wie das?
<< |< 1 2 >| >> 15 Einträge, 2 Seiten



View all threads created 2004-12-13 12:06.