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

Gast Gast
 2004-05-25 19:21
#2501 #2501
[quote=esskar,23.05.2004, 23:14]
Code: (dl )
1
2
3
4
5
6
7
8
9
10
my %subst = (
      q|&| => q|&|,
      q|"| => q|"|,
      q|<| => q|&lt;|,
      q|>| => q|&gt;|,
      q|'| => q|&'|,
      q|`| => q|&`|,    
  );
 
$$data =~ s/($_)/$subst{$1}/sg foreach keys %subst;


ist gefährlicher code! :)
wenn du pech hast, und
q|&| => q|&amp;| schlägt als letztes bzw. nicht als erstes zu, dann sitzt du ganz schön in der tinte![/quote]
Danke für den Hinweis esskar.
Das wäre mir wahrscheinlich niemals aufgefallen - manchmal hat man eben ein Brett vor'm Kopf ...
Ist natürlich klar daß ein Hash in willkürlicher Reihenfolge auftaucht.

So sollte es aber dann doch funtionieren:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
sub disable_html {
   my $self = shift;
   my $data = shift || return 0;
   local $_;
   
   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;
   return $data;
}

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