Ignore:
Timestamp:
12/04/08 07:48:32 (3 years ago)
Author:
KennethLavrsen
Message:

Item375: First part of addressing URLPARAM XSS issue
Additionally some docs will need some additional work.
Please test this carefully so we know which apps break from this.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/core/lib/Foswiki.pm

    r1127 r1161  
    38673867    my $param     = $params->{_DEFAULT} || ''; 
    38683868    my $newLine   = $params->{newline}; 
    3869     my $encode    = $params->{encode}; 
     3869    my $encode    = $params->{encode} || 'safe'; 
    38703870    my $multiple  = $params->{multiple}; 
    38713871    my $separator = $params->{separator}; 
     
    38973897    if ( defined $value ) { 
    38983898        $value =~ s/\r?\n/$newLine/go if ( defined $newLine ); 
    3899         if ($encode) { 
    3900             if ( $encode =~ /^entit(y|ies)$/i ) { 
    3901                 $value = entityEncode($value); 
    3902             } 
    3903             elsif ( $encode =~ /^quotes?$/i ) { 
    3904                 $value =~ s/\"/\\"/go 
    3905                   ;    # escape quotes with backslash (Bugs:Item3383 fix) 
    3906             } 
    3907             else { 
    3908                 $value =~ s/\r*\n\r*/<br \/>/;    # Legacy 
    3909                 $value = urlEncode($value); 
    3910             } 
     3899        if ( $encode =~ /^entit(y|ies)$/i ) { 
     3900            $value = entityEncode($value); 
     3901        } 
     3902        elsif ( $encode =~ /^quotes?$/i ) { 
     3903            $value =~ s/\"/\\"/go 
     3904              ;    # escape quotes with backslash (Bugs:Item3383 fix) 
     3905        } 
     3906        elsif ( $encode =~ /^(off|none)$/i ) { 
     3907            # no encoding 
     3908        } 
     3909        elsif ( $encode =~ /^url$/i ) { 
     3910            $value =~ s/\r*\n\r*/<br \/>/;    # Legacy 
     3911            $value = urlEncode($value); 
     3912        } 
     3913        else { # safe or default 
     3914            # entity encode ' " < > and % 
     3915            $value =~ s/([<>%'"])/'&#'.ord($1).';'/ge; 
    39113916        } 
    39123917    } 
Note: See TracChangeset for help on using the changeset viewer.