WordPress.org

Make WordPress Core

Ticket #20017: 20017.diff

File 20017.diff, 15.7 KB (added by duck_, 2 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