WordPress.org

Make WordPress Core

Ticket #5917: kses_bad_protocol.diff

File kses_bad_protocol.diff, 3.8 KB (added by takayukister, 10 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.