WordPress.org

Make WordPress Core

Ticket #20017: 20017.diff

File 20017.diff, 15.7 KB (added by duck_, 6 years ago)
  • wp-includes/kses.php

     
    5151        $allowedposttags = array(
    5252                'address' => array(),
    5353                'a' => array(
    54                         'class' => array (),
    55                         'href' => array (),
    56                         'id' => array (),
    57                         'title' => array (),
    58                         'rel' => array (),
    59                         'rev' => array (),
    60                         'name' => array (),
    61                         'target' => array()),
     54                        'class' => true,
     55                        'href' => true,
     56                        'id' => true,
     57                        'title' => true,
     58                        'rel' => true,
     59                        'rev' => true,
     60                        'name' => true,
     61                        'target' => true,
     62                ),
    6263                'abbr' => array(
    63                         'class' => array (),
    64                         'title' => array ()),
     64                        'class' => true,
     65                        'title' => true,
     66                ),
    6567                'acronym' => array(
    66                         'title' => array ()),
     68                        'title' => true,
     69                ),
    6770                'article' => array(
    68                         'align' => array (),
    69                         'class' => array (),
    70                         'dir' => array (),
    71                         'lang' => array(),
    72                         'style' => array (),
    73                         'xml:lang' => array(),
     71                        'align' => true,
     72                        'class' => true,
     73                        'dir' => true,
     74                        'lang' => true,
     75                        'style' => true,
     76                        'xml:lang' => true,
    7477                ),
    7578                'aside' => array(
    76                         'align' => array (),
    77                         'class' => array (),
    78                         'dir' => array (),
    79                         'lang' => array(),
    80                         'style' => array (),
    81                         'xml:lang' => array(),
     79                        'align' => true,
     80                        'class' => true,
     81                        'dir' => true,
     82                        'lang' => true,
     83                        'style' => true,
     84                        'xml:lang' => true,
    8285                ),
    8386                'b' => array(),
    8487                'big' => array(),
    8588                'blockquote' => array(
    86                         'id' => array (),
    87                         'cite' => array (),
    88                         'class' => array(),
    89                         'lang' => array(),
    90                         'xml:lang' => array()),
     89                        'id' => true,
     90                        'cite' => true,
     91                        'class' => true,
     92                        'lang' => true,
     93                        'xml:lang' => true,
     94                ),
    9195                'br' => array (
    92                         'class' => array ()),
     96                        'class' => true,
     97                ),
    9398                'button' => array(
    94                         'disabled' => array (),
    95                         'name' => array (),
    96                         'type' => array (),
    97                         'value' => array ()),
     99                        'disabled' => true,
     100                        'name' => true,
     101                        'type' => true,
     102                        'value' => true,
     103                ),
    98104                'caption' => array(
    99                         'align' => array (),
    100                         'class' => array ()),
     105                        'align' => true,
     106                        'class' => true,
     107                ),
    101108                'cite' => array (
    102                         'class' => array(),
    103                         'dir' => array(),
    104                         'lang' => array(),
    105                         'title' => array ()),
     109                        'class' => true,
     110                        'dir' => true,
     111                        'lang' => true,
     112                        'title' => true,
     113                ),
    106114                'code' => array (
    107                         'style' => array()),
     115                        'style' => true,
     116                ),
    108117                'col' => array(
    109                         'align' => array (),
    110                         'char' => array (),
    111                         'charoff' => array (),
    112                         'span' => array (),
    113                         'dir' => array(),
    114                         'style' => array (),
    115                         'valign' => array (),
    116                         'width' => array ()),
     118                        'align' => true,
     119                        'char' => true,
     120                        'charoff' => true,
     121                        'span' => true,
     122                        'dir' => true,
     123                        'style' => true,
     124                        'valign' => true,
     125                        'width' => true,
     126                ),
    117127                'del' => array(
    118                         'datetime' => array ()),
     128                        'datetime' => true,
     129                ),
    119130                'dd' => array(),
    120131                'details' => array(
    121                         'align' => array (),
    122                         'class' => array (),
    123                         'dir' => array (),
    124                         'lang' => array(),
    125                         'open' => array (),
    126                         'style' => array (),
    127                         'xml:lang' => array(),
     132                        'align' => true,
     133                        'class' => true,
     134                        'dir' => true,
     135                        'lang' => true,
     136                        'open' => true,
     137                        'style' => true,
     138                        'xml:lang' => true,
    128139                ),
    129140                'div' => array(
    130                         'align' => array (),
    131                         'class' => array (),
    132                         'dir' => array (),
    133                         'lang' => array(),
    134                         'style' => array (),
    135                         'xml:lang' => array()),
     141                        'align' => true,
     142                        'class' => true,
     143                        'dir' => true,
     144                        'lang' => true,
     145                        'style' => true,
     146                        'xml:lang' => true,
     147                ),
    136148                'dl' => array(),
    137149                'dt' => array(),
    138150                'em' => array(),
    139151                'fieldset' => array(),
    140152                'figure' => array(
    141                         'align' => array (),
    142                         'class' => array (),
    143                         'dir' => array (),
    144                         'lang' => array(),
    145                         'style' => array (),
    146                         'xml:lang' => array(),
     153                        'align' => true,
     154                        'class' => true,
     155                        'dir' => true,
     156                        'lang' => true,
     157                        'style' => true,
     158                        'xml:lang' => true,
    147159                ),
    148160                'figcaption' => array(
    149                         'align' => array (),
    150                         'class' => array (),
    151                         'dir' => array (),
    152                         'lang' => array(),
    153                         'style' => array (),
    154                         'xml:lang' => array(),
     161                        'align' => true,
     162                        'class' => true,
     163                        'dir' => true,
     164                        'lang' => true,
     165                        'style' => true,
     166                        'xml:lang' => true,
    155167                ),
    156168                'font' => array(
    157                         'color' => array (),
    158                         'face' => array (),
    159                         'size' => array ()),
     169                        'color' => true,
     170                        'face' => true,
     171                        'size' => true,
     172                ),
    160173                'footer' => array(
    161                         'align' => array (),
    162                         'class' => array (),
    163                         'dir' => array (),
    164                         'lang' => array(),
    165                         'style' => array (),
    166                         'xml:lang' => array(),
     174                        'align' => true,
     175                        'class' => true,
     176                        'dir' => true,
     177                        'lang' => true,
     178                        'style' => true,
     179                        'xml:lang' => true,
    167180                ),
    168181                'form' => array(
    169                         'action' => array (),
    170                         'accept' => array (),
    171                         'accept-charset' => array (),
    172                         'enctype' => array (),
    173                         'method' => array (),
    174                         'name' => array (),
    175                         'target' => array ()),
     182                        'action' => true,
     183                        'accept' => true,
     184                        'accept-charset' => true,
     185                        'enctype' => true,
     186                        'method' => true,
     187                        'name' => true,
     188                        'target' => true,
     189                ),
    176190                'h1' => array(
    177                         'align' => array (),
    178                         'class' => array (),
    179                         'id'    => array (),
    180                         'style' => array ()),
     191                        'align' => true,
     192                        'class' => true,
     193                        'id'    => true,
     194                        'style' => true,
     195                ),
    181196                'h2' => array (
    182                         'align' => array (),
    183                         'class' => array (),
    184                         'id'    => array (),
    185                         'style' => array ()),
     197                        'align' => true,
     198                        'class' => true,
     199                        'id'    => true,
     200                        'style' => true,
     201                ),
    186202                'h3' => array (
    187                         'align' => array (),
    188                         'class' => array (),
    189                         'id'    => array (),
    190                         'style' => array ()),
     203                        'align' => true,
     204                        'class' => true,
     205                        'id'    => true,
     206                        'style' => true,
     207                ),
    191208                'h4' => array (
    192                         'align' => array (),
    193                         'class' => array (),
    194                         'id'    => array (),
    195                         'style' => array ()),
     209                        'align' => true,
     210                        'class' => true,
     211                        'id'    => true,
     212                        'style' => true,
     213                ),
    196214                'h5' => array (
    197                         'align' => array (),
    198                         'class' => array (),
    199                         'id'    => array (),
    200                         'style' => array ()),
     215                        'align' => true,
     216                        'class' => true,
     217                        'id'    => true,
     218                        'style' => true,
     219                ),
    201220                'h6' => array (
    202                         'align' => array (),
    203                         'class' => array (),
    204                         'id'    => array (),
    205                         'style' => array ()),
     221                        'align' => true,
     222                        'class' => true,
     223                        'id'    => true,
     224                        'style' => true,
     225                ),
    206226                'header' => array(
    207                         'align' => array (),
    208                         'class' => array (),
    209                         'dir' => array (),
    210                         'lang' => array(),
    211                         'style' => array (),
    212                         'xml:lang' => array(),
     227                        'align' => true,
     228                        'class' => true,
     229                        'dir' => true,
     230                        'lang' => true,
     231                        'style' => true,
     232                        'xml:lang' => true,
    213233                ),
    214234                'hgroup' => array(
    215                         'align' => array (),
    216                         'class' => array (),
    217                         'dir' => array (),
    218                         'lang' => array(),
    219                         'style' => array (),
    220                         'xml:lang' => array(),
     235                        'align' => true,
     236                        'class' => true,
     237                        'dir' => true,
     238                        'lang' => true,
     239                        'style' => true,
     240                        'xml:lang' => true,
    221241                ),
    222242                'hr' => array (
    223                         'align' => array (),
    224                         'class' => array (),
    225                         'noshade' => array (),
    226                         'size' => array (),
    227                         'width' => array ()),
     243                        'align' => true,
     244                        'class' => true,
     245                        'noshade' => true,
     246                        'size' => true,
     247                        'width' => true,
     248                ),
    228249                'i' => array(),
    229250                'img' => array(
    230                         'alt' => array (),
    231                         'align' => array (),
    232                         'border' => array (),
    233                         'class' => array (),
    234                         'height' => array (),
    235                         'hspace' => array (),
    236                         'longdesc' => array (),
    237                         'vspace' => array (),
    238                         'src' => array (),
    239                         'style' => array (),
    240                         'width' => array ()),
     251                        'alt' => true,
     252                        'align' => true,
     253                        'border' => true,
     254                        'class' => true,
     255                        'height' => true,
     256                        'hspace' => true,
     257                        'longdesc' => true,
     258                        'vspace' => true,
     259                        'src' => true,
     260                        'style' => true,
     261                        'width' => true,
     262                ),
    241263                'ins' => array(
    242                         'datetime' => array (),
    243                         'cite' => array ()),
     264                        'datetime' => true,
     265                        'cite' => true,
     266                ),
    244267                'kbd' => array(),
    245268                'label' => array(
    246                         'for' => array ()),
     269                        'for' => true,
     270                ),
    247271                'legend' => array(
    248                         'align' => array ()),
     272                        'align' => true,
     273                ),
    249274                'li' => array (
    250                         'align' => array (),
    251                         'class' => array ()),
     275                        'align' => true,
     276                        'class' => true,
     277                ),
    252278                'menu' => array (
    253                         'class' => array (),
    254                         'style' => array (),
    255                         'type' => array ()),
     279                        'class' => true,
     280                        'style' => true,
     281                        'type' => true,
     282                ),
    256283                'nav' => array(
    257                         'align' => array (),
    258                         'class' => array (),
    259                         'dir' => array (),
    260                         'lang' => array(),
    261                         'style' => array (),
    262                         'xml:lang' => array(),
     284                        'align' => true,
     285                        'class' => true,
     286                        'dir' => true,
     287                        'lang' => true,
     288                        'style' => true,
     289                        'xml:lang' => true,
    263290                ),
    264291                'p' => array(
    265                         'class' => array (),
    266                         'align' => array (),
    267                         'dir' => array(),
    268                         'lang' => array(),
    269                         'style' => array (),
    270                         'xml:lang' => array()),
     292                        'class' => true,
     293                        'align' => true,
     294                        'dir' => true,
     295                        'lang' => true,
     296                        'style' => true,
     297                        'xml:lang' => true,
     298                ),
    271299                'pre' => array(
    272                         'style' => array(),
    273                         'width' => array ()),
     300                        'style' => true,
     301                        'width' => true,
     302                ),
    274303                'q' => array(
    275                         'cite' => array ()),
     304                        'cite' => true,
     305                ),
    276306                's' => array(),
    277307                'span' => array (
    278                         'class' => array (),
    279                         'dir' => array (),
    280                         'align' => array (),
    281                         'lang' => array (),
    282                         'style' => array (),
    283                         'title' => array (),
    284                         'xml:lang' => array()),
     308                        'class' => true,
     309                        'dir' => true,
     310                        'align' => true,
     311                        'lang' => true,
     312                        'style' => true,
     313                        'title' => true,
     314                        'xml:lang' => true,
     315                ),
    285316                'section' => array(
    286                         'align' => array (),
    287                         'class' => array (),
    288                         'dir' => array (),
    289                         'lang' => array(),
    290                         'style' => array (),
    291                         'xml:lang' => array(),
     317                        'align' => true,
     318                        'class' => true,
     319                        'dir' => true,
     320                        'lang' => true,
     321                        'style' => true,
     322                        'xml:lang' => true,
    292323                ),
    293324                'strike' => array(),
    294325                'strong' => array(),
    295326                'sub' => array(),
    296327                'summary' => array(
    297                         'align' => array (),
    298                         'class' => array (),
    299                         'dir' => array (),
    300                         'lang' => array(),
    301                         'style' => array (),
    302                         'xml:lang' => array(),
     328                        'align' => true,
     329                        'class' => true,
     330                        'dir' => true,
     331                        'lang' => true,
     332                        'style' => true,
     333                        'xml:lang' => true,
    303334                ),
    304335                'sup' => array(),
    305336                'table' => array(
    306                         'align' => array (),
    307                         'bgcolor' => array (),
    308                         'border' => array (),
    309                         'cellpadding' => array (),
    310                         'cellspacing' => array (),
    311                         'class' => array (),
    312                         'dir' => array(),
    313                         'id' => array(),
    314                         'rules' => array (),
    315                         'style' => array (),
    316                         'summary' => array (),
    317                         'width' => array ()),
     337                        'align' => true,
     338                        'bgcolor' => true,
     339                        'border' => true,
     340                        'cellpadding' => true,
     341                        'cellspacing' => true,
     342                        'class' => true,
     343                        'dir' => true,
     344                        'id' => true,
     345                        'rules' => true,
     346                        'style' => true,
     347                        'summary' => true,
     348                        'width' => true,
     349                ),
    318350                'tbody' => array(
    319                         'align' => array (),
    320                         'char' => array (),
    321                         'charoff' => array (),
    322                         'valign' => array ()),
     351                        'align' => true,
     352                        'char' => true,
     353                        'charoff' => true,
     354                        'valign' => true,
     355                ),
    323356                'td' => array(
    324                         'abbr' => array (),
    325                         'align' => array (),
    326                         'axis' => array (),
    327                         'bgcolor' => array (),
    328                         'char' => array (),
    329                         'charoff' => array (),
    330                         'class' => array (),
    331                         'colspan' => array (),
    332                         'dir' => array(),
    333                         'headers' => array (),
    334                         'height' => array (),
    335                         'nowrap' => array (),
    336                         'rowspan' => array (),
    337                         'scope' => array (),
    338                         'style' => array (),
    339                         'valign' => array (),
    340                         'width' => array ()),
     357                        'abbr' => true,
     358                        'align' => true,
     359                        'axis' => true,
     360                        'bgcolor' => true,
     361                        'char' => true,
     362                        'charoff' => true,
     363                        'class' => true,
     364                        'colspan' => true,
     365                        'dir' => true,
     366                        'headers' => true,
     367                        'height' => true,
     368                        'nowrap' => true,
     369                        'rowspan' => true,
     370                        'scope' => true,
     371                        'style' => true,
     372                        'valign' => true,
     373                        'width' => true,
     374                ),
    341375                'textarea' => array(
    342                         'cols' => array (),
    343                         'rows' => array (),
    344                         'disabled' => array (),
    345                         'name' => array (),
    346                         'readonly' => array ()),
     376                        'cols' => true,
     377                        'rows' => true,
     378                        'disabled' => true,
     379                        'name' => true,
     380                        'readonly' => true,
     381                ),
    347382                'tfoot' => array(
    348                         'align' => array (),
    349                         'char' => array (),
    350                         'class' => array (),
    351                         'charoff' => array (),
    352                         'valign' => array ()),
     383                        'align' => true,
     384                        'char' => true,
     385                        'class' => true,
     386                        'charoff' => true,
     387                        'valign' => true,
     388                ),
    353389                'th' => array(
    354                         'abbr' => array (),
    355                         'align' => array (),
    356                         'axis' => array (),
    357                         'bgcolor' => array (),
    358                         'char' => array (),
    359                         'charoff' => array (),
    360                         'class' => array (),
    361                         'colspan' => array (),
    362                         'headers' => array (),
    363                         'height' => array (),
    364                         'nowrap' => array (),
    365                         'rowspan' => array (),
    366                         'scope' => array (),
    367                         'valign' => array (),
    368                         'width' => array ()),
     390                        'abbr' => true,
     391                        'align' => true,
     392                        'axis' => true,
     393                        'bgcolor' => true,
     394                        'char' => true,
     395                        'charoff' => true,
     396                        'class' => true,
     397                        'colspan' => true,
     398                        'headers' => true,
     399                        'height' => true,
     400                        'nowrap' => true,
     401                        'rowspan' => true,
     402                        'scope' => true,
     403                        'valign' => true,
     404                        'width' => true,
     405                ),
    369406                'thead' => array(
    370                         'align' => array (),
    371                         'char' => array (),
    372                         'charoff' => array (),
    373                         'class' => array (),
    374                         'valign' => array ()),
     407                        'align' => true,
     408                        'char' => true,
     409                        'charoff' => true,
     410                        'class' => true,
     411                        'valign' => true,
     412                ),
    375413                'title' => array(),
    376414                'tr' => array(
    377                         'align' => array (),
    378                         'bgcolor' => array (),
    379                         'char' => array (),
    380                         'charoff' => array (),
    381                         'class' => array (),
    382                         'style' => array (),
    383                         'valign' => array ()),
     415                        'align' => true,
     416                        'bgcolor' => true,
     417                        'char' => true,
     418                        'charoff' => true,
     419                        'class' => true,
     420                        'style' => true,
     421                        'valign' => true,
     422                ),
    384423                'tt' => array(),
    385424                'u' => array(),
    386425                'ul' => array (
    387                         'class' => array (),
    388                         'style' => array (),
    389                         'type' => array ()),
     426                        'class' => true,
     427                        'style' => true,
     428                        'type' => true,
     429                ),
    390430                'ol' => array (
    391                         'class' => array (),
    392                         'start' => array (),
    393                         'style' => array (),
    394                         'type' => array ()),
    395                 'var' => array ());
     431                        'class' => true,
     432                        'start' => true,
     433                        'style' => true,
     434                        'type' => true,
     435                ),
     436                'var' => array(),
     437        );
    396438
    397439        /**
    398440         * Kses allowed HTML elements.
     
    402444         */
    403445        $allowedtags = array(
    404446                'a' => array(
    405                         'href' => array (),
    406                         'title' => array ()),
     447                        'href' => true,
     448                        'title' => true,
     449                ),
    407450                'abbr' => array(
    408                         'title' => array ()),
     451                        'title' => true,
     452                ),
    409453                'acronym' => array(
    410                         'title' => array ()),
     454                        'title' => true,
     455                ),
    411456                'b' => array(),
    412457                'blockquote' => array(
    413                         'cite' => array ()),
     458                        'cite' => true,
     459                ),
    414460                //      'br' => array(),
    415                 'cite' => array (),
     461                'cite' => array(),
    416462                'code' => array(),
    417463                'del' => array(
    418                         'datetime' => array ()),
     464                        'datetime' => true,
     465                ),
    419466                //      'dd' => array(),
    420467                //      'dl' => array(),
    421468                //      'dt' => array(),
     
    425472                //      'ol' => array(),
    426473                //      'p' => array(),
    427474                'q' => array(
    428                         'cite' => array ()),
     475                        'cite' => true,
     476                ),
    429477                'strike' => array(),
    430478                'strong' => array(),
    431479                //      'sub' => array(),
     
    674722                if ( $current == '' )
    675723                        continue; # the attribute is not allowed
    676724
     725                if ( strtolower( $arreach['name'] ) == 'style' ) {
     726                        $orig_value = $arreach['value'];
     727                        $value = safecss_filter_attr( $orig_value );
     728
     729                        if ( empty( $value ) )
     730                                continue;
     731
     732                        $arreach['value'] = $value;
     733                        $arreach['whole'] = str_replace( $orig_value, $value, $arreach['whole'] );
     734                }
     735
    677736                if ( ! is_array($current) ) {
    678737                        $attr2 .= ' '.$arreach['whole'];
    679738                # there are no checks
     
    688747                                }
    689748                        }
    690749
    691                         if ( strtolower($arreach['name']) == 'style' ) {
    692                                 $orig_value = $arreach['value'];
    693                                 $value = safecss_filter_attr($orig_value);
    694 
    695                                 if ( empty($value) )
    696                                         continue;
    697 
    698                                 $arreach['value'] = $value;
    699                                 $arreach['whole'] = str_replace($orig_value, $value, $arreach['whole']);
    700                         }
    701 
    702                         if ($ok)
     750                        if ( $ok )
    703751                                $attr2 .= ' '.$arreach['whole']; # it passed them
    704752                } # if !is_array($current)
    705753        } # foreach