WordPress.org

Make WordPress Core

Ticket #5917: kses_bad_protocol.diff

File kses_bad_protocol.diff, 3.8 KB (added by takayukister, 7 years ago)
  • opt/lampp/htdocs/wp-trunk/wp-includes/kses.php

     
    4545                'address' => array(), 
    4646                'a' => array( 
    4747                        'class' => array (), 
    48                         'href' => array (), 
     48                        'href' => array ( 
     49                                'type' => 'uri'), 
    4950                        'id' => array (), 
    5051                        'title' => array (), 
    5152                        'rel' => array (), 
     
    6162                'big' => array(), 
    6263                'blockquote' => array( 
    6364                        'id' => array (), 
    64                         'cite' => array (), 
     65                        'cite' => array ( 
     66                                'type' => 'uri'), 
    6567                        'class' => array(), 
    6668                        'lang' => array(), 
    6769                        'xml:lang' => array()), 
     
    110112                        'face' => array (), 
    111113                        'size' => array ()), 
    112114                'form' => array( 
    113                         'action' => array (), 
     115                        'action' => array ( 
     116                                'type' => 'uri'), 
    114117                        'accept' => array (), 
    115118                        'accept-charset' => array (), 
    116119                        'enctype' => array (), 
     
    149152                        'class' => array (), 
    150153                        'height' => array (), 
    151154                        'hspace' => array (), 
    152                         'longdesc' => array (), 
     155                        'longdesc' => array ( 
     156                                'type' => 'uri'), 
    153157                        'vspace' => array (), 
    154                         'src' => array (), 
     158                        'src' => array ( 
     159                                'type' => 'uri'), 
    155160                        'style' => array (), 
    156161                        'width' => array ()), 
    157162                'ins' => array( 
    158163                        'datetime' => array (), 
    159                         'cite' => array ()), 
     164                        'cite' => array ( 
     165                                'type' => 'uri')), 
    160166                'kbd' => array(), 
    161167                'label' => array( 
    162168                        'for' => array ()), 
     
    176182                        'style' => array(), 
    177183                        'width' => array ()), 
    178184                'q' => array( 
    179                         'cite' => array ()), 
     185                        'cite' => array ( 
     186                                'type' => 'uri')), 
    180187                's' => array(), 
    181188                'span' => array ( 
    182189                        'class' => array (), 
     
    282289         */ 
    283290        $allowedtags = array( 
    284291                'a' => array( 
    285                         'href' => array (), 
     292                        'href' => array ( 
     293                                'type' => 'uri'), 
    286294                        'title' => array ()), 
    287295                'abbr' => array( 
    288296                        'title' => array ()), 
     
    290298                        'title' => array ()), 
    291299                'b' => array(), 
    292300                'blockquote' => array( 
    293                         'cite' => array ()), 
     301                        'cite' => array ( 
     302                                'type' => 'uri')), 
    294303                //      'br' => array(), 
    295304                'cite' => array (), 
    296305                'code' => array(), 
     
    305314                //      'ol' => array(), 
    306315                //      'p' => array(), 
    307316                'q' => array( 
    308                         'cite' => array ()), 
     317                        'cite' => array ( 
     318                                'type' => 'uri')), 
    309319                'strike' => array(), 
    310320                'strong' => array(), 
    311321                //      'sub' => array(), 
     
    498508                # there are no checks 
    499509 
    500510                else { 
     511                        # sanitize string from bad protocols 
     512                        if ('y' != $arreach['vless'] && 'uri' == $current['type']) { 
     513                                $arreach['value'] = wp_kses_bad_protocol($arreach['value'], $allowed_protocols); 
     514                                $arreach['whole'] = sprintf('%s="%s"', $arreach['name'], $arreach['value']); 
     515                        } 
     516 
    501517                        # there are some checks 
    502518                        $ok = true; 
    503519                        foreach ($current as $currkey => $currval) 
     
    580596                                if (preg_match('/^"([^"]*)"(\s+|$)/', $attr, $match)) 
    581597                                        # "value" 
    582598                                        { 
    583                                         $thisval = wp_kses_bad_protocol($match[1], $allowed_protocols); 
     599                                        $thisval = $match[1]; 
    584600 
    585601                                        $attrarr[] = array ('name' => $attrname, 'value' => $thisval, 'whole' => "$attrname=\"$thisval\"", 'vless' => 'n'); 
    586602                                        $working = 1; 
     
    592608                                if (preg_match("/^'([^']*)'(\s+|$)/", $attr, $match)) 
    593609                                        # 'value' 
    594610                                        { 
    595                                         $thisval = wp_kses_bad_protocol($match[1], $allowed_protocols); 
     611                                        $thisval = $match[1]; 
    596612 
    597613                                        $attrarr[] = array ('name' => $attrname, 'value' => $thisval, 'whole' => "$attrname='$thisval'", 'vless' => 'n'); 
    598614                                        $working = 1; 
     
    604620                                if (preg_match("%^([^\s\"']+)(\s+|$)%", $attr, $match)) 
    605621                                        # value 
    606622                                        { 
    607                                         $thisval = wp_kses_bad_protocol($match[1], $allowed_protocols); 
     623                                        $thisval = $match[1]; 
    608624 
    609625                                        $attrarr[] = array ('name' => $attrname, 'value' => $thisval, 'whole' => "$attrname=\"$thisval\"", 'vless' => 'n'); 
    610626                                        # We add quotes to conform to W3C's HTML spec.