Thread Sicherheit von Formulardaten: Gefährlicher User-Code (38 answers)
Opened by Gast at 2004-05-22 18:01

Dubu
 2004-06-04 21:01
#2516 #2516
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
[quote=Troll,03.06.2004, 16:27]
Der Modifier /o ist an dieser Stelle tatsächlich sehr unangebracht - macht aber auch nichts kaputt - außer der Laufzeit ;)[/quote]
Das sehe ich anders.

Zur Verdeutlichung:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$ perl -le 'my $str="0123456789"; for my $x (0 .. 9) { $str =~ s/$x/./g; print $str;}'
.123456789
..23456789
...3456789
....456789
.....56789
......6789
.......789
........89
.........9
..........
$ perl -le 'my $str="0123456789"; for my $x (0 .. 9) { $str =~ s/$x/./og; print $str;}'
.123456789
.123456789
.123456789
.123456789
.123456789
.123456789
.123456789
.123456789
.123456789
.123456789


Und im Fall deines Code, hier zu einem Programm umgebaut:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/usr/bin/perl
use strict;
use warnings;

my $data = q{&"<>'`};

my @subst = (
   [q|&| => q|&amp;|],
   [q|"| => q|&quot;|],
   [q|<| => q|&lt;|],
   [q|>| => q|&gt;|],
   [q|'| => q|&'|],
   [q|`| => q|&`|],
);

$data =~ s/($subst[$_]->[0])/$subst[$_]->[1]/osg for 0 .. $#subst;

print $data, "\n";

Mit dem /o ergibt sich:
Code: (dl )
&`'gt;lt;quot;amp;"<>'`


Ohne das /o ist es korrekt:
Code: (dl )
&amp;&quot;&lt;&gt;&'&`
\n\n

<!--EDIT|renee|1090847259-->

View full thread Sicherheit von Formulardaten: Gefährlicher User-Code