Make WordPress Core

Changeset 52968


Ignore:
Timestamp:
03/21/2022 12:11:08 AM (4 years ago)
Author:
peterwilsoncc
Message:

KSES: Allow lang, xml:lang, dir attributes globally.

Globally permit the lang, xml:lang, and dir attributes on all elements rather than a subset in accordance with the HTML specification.

Props upsuper, SergeyBiryukov, mukesh27, audrasjb.
Fixes #54699.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/kses.php

    r52895 r52968  
    8282                ),
    8383                'article'    => array(
    84                         'align'    => true,
    85                         'dir'      => true,
    86                         'lang'     => true,
    87                         'xml:lang' => true,
     84                        'align' => true,
    8885                ),
    8986                'aside'      => array(
    90                         'align'    => true,
    91                         'dir'      => true,
    92                         'lang'     => true,
    93                         'xml:lang' => true,
     87                        'align' => true,
    9488                ),
    9589                'audio'      => array(
     
    10296                ),
    10397                'b'          => array(),
    104                 'bdo'        => array(
    105                         'dir' => true,
    106                 ),
     98                'bdo'        => array(),
    10799                'big'        => array(),
    108100                'blockquote' => array(
    109                         'cite'     => true,
    110                         'lang'     => true,
    111                         'xml:lang' => true,
     101                        'cite' => true,
    112102                ),
    113103                'br'         => array(),
     
    121111                        'align' => true,
    122112                ),
    123                 'cite'       => array(
    124                         'dir'  => true,
    125                         'lang' => true,
    126                 ),
     113                'cite'       => array(),
    127114                'code'       => array(),
    128115                'col'        => array(
     
    131118                        'charoff' => true,
    132119                        'span'    => true,
    133                         'dir'     => true,
    134120                        'valign'  => true,
    135121                        'width'   => true,
     
    149135                'dfn'        => array(),
    150136                'details'    => array(
    151                         'align'    => true,
    152                         'dir'      => true,
    153                         'lang'     => true,
    154                         'open'     => true,
    155                         'xml:lang' => true,
     137                        'align' => true,
     138                        'open'  => true,
    156139                ),
    157140                'div'        => array(
    158                         'align'    => true,
    159                         'dir'      => true,
    160                         'lang'     => true,
    161                         'xml:lang' => true,
     141                        'align' => true,
    162142                ),
    163143                'dl'         => array(),
     
    166146                'fieldset'   => array(),
    167147                'figure'     => array(
    168                         'align'    => true,
    169                         'dir'      => true,
    170                         'lang'     => true,
    171                         'xml:lang' => true,
     148                        'align' => true,
    172149                ),
    173150                'figcaption' => array(
    174                         'align'    => true,
    175                         'dir'      => true,
    176                         'lang'     => true,
    177                         'xml:lang' => true,
     151                        'align' => true,
    178152                ),
    179153                'font'       => array(
     
    183157                ),
    184158                'footer'     => array(
    185                         'align'    => true,
    186                         'dir'      => true,
    187                         'lang'     => true,
    188                         'xml:lang' => true,
     159                        'align' => true,
    189160                ),
    190161                'h1'         => array(
     
    207178                ),
    208179                'header'     => array(
    209                         'align'    => true,
    210                         'dir'      => true,
    211                         'lang'     => true,
    212                         'xml:lang' => true,
     180                        'align' => true,
    213181                ),
    214182                'hgroup'     => array(
    215                         'align'    => true,
    216                         'dir'      => true,
    217                         'lang'     => true,
    218                         'xml:lang' => true,
     183                        'align' => true,
    219184                ),
    220185                'hr'         => array(
     
    254219                ),
    255220                'main'       => array(
    256                         'align'    => true,
    257                         'dir'      => true,
    258                         'lang'     => true,
    259                         'xml:lang' => true,
     221                        'align' => true,
    260222                ),
    261223                'map'        => array(
     
    267229                ),
    268230                'nav'        => array(
    269                         'align'    => true,
    270                         'dir'      => true,
    271                         'lang'     => true,
    272                         'xml:lang' => true,
     231                        'align' => true,
    273232                ),
    274233                'object'     => array(
     
    283242                ),
    284243                'p'          => array(
    285                         'align'    => true,
    286                         'dir'      => true,
    287                         'lang'     => true,
    288                         'xml:lang' => true,
     244                        'align' => true,
    289245                ),
    290246                'pre'        => array(
     
    297253                'samp'       => array(),
    298254                'span'       => array(
    299                         'dir'      => true,
    300                         'align'    => true,
    301                         'lang'     => true,
    302                         'xml:lang' => true,
     255                        'align' => true,
    303256                ),
    304257                'section'    => array(
    305                         'align'    => true,
    306                         'dir'      => true,
    307                         'lang'     => true,
    308                         'xml:lang' => true,
     258                        'align' => true,
    309259                ),
    310260                'small'      => array(),
     
    313263                'sub'        => array(),
    314264                'summary'    => array(
    315                         'align'    => true,
    316                         'dir'      => true,
    317                         'lang'     => true,
    318                         'xml:lang' => true,
     265                        'align' => true,
    319266                ),
    320267                'sup'        => array(),
     
    325272                        'cellpadding' => true,
    326273                        'cellspacing' => true,
    327                         'dir'         => true,
    328274                        'rules'       => true,
    329275                        'summary'     => true,
     
    344290                        'charoff' => true,
    345291                        'colspan' => true,
    346                         'dir'     => true,
    347292                        'headers' => true,
    348293                        'height'  => true,
     
    12381183 *
    12391184 * @since 4.2.3
    1240  * @since 5.0.0 Add support for `data-*` wildcard attributes.
     1185 * @since 5.0.0 Added support for `data-*` wildcard attributes.
    12411186 *
    12421187 * @param string $name         The attribute name. Passed by reference. Returns empty string when not allowed.
     
    12721217                 * double hyphens `--` are not accepted by WordPress.
    12731218                 */
    1274                 if ( strpos( $name_low, 'data-' ) === 0 && ! empty( $allowed_attr['data-*'] ) && preg_match( '/^data(?:-[a-z0-9_]+)+$/', $name_low, $match ) ) {
     1219                if ( strpos( $name_low, 'data-' ) === 0 && ! empty( $allowed_attr['data-*'] )
     1220                        && preg_match( '/^data(?:-[a-z0-9_]+)+$/', $name_low, $match )
     1221                ) {
    12751222                        /*
    12761223                         * Add the whole attribute name to the allowed attributes and set any restrictions
     
    25532500 *
    25542501 * @since 3.5.0
    2555  * @since 5.0.0 Add support for `data-*` wildcard attributes.
     2502 * @since 5.0.0 Added support for `data-*` wildcard attributes.
     2503 * @since 6.0.0 Added `dir`, `lang`, and `xml:lang` to global attributes.
     2504 *
    25562505 * @access private
    25572506 * @ignore
     
    25682517                'aria-hidden'      => true,
    25692518                'class'            => true,
     2519                'data-*'           => true,
     2520                'dir'              => true,
    25702521                'id'               => true,
     2522                'lang'             => true,
    25712523                'style'            => true,
    25722524                'title'            => true,
    25732525                'role'             => true,
    2574                 'data-*'           => true,
     2526                'xml:lang'         => true,
    25752527        );
    25762528
  • trunk/tests/phpunit/tests/kses.php

    r52326 r52968  
    495495                foreach ( $tags as $tag ) {
    496496                        $this->assertTrue( $tag['class'] );
     497                        $this->assertTrue( $tag['dir'] );
    497498                        $this->assertTrue( $tag['id'] );
     499                        $this->assertTrue( $tag['lang'] );
    498500                        $this->assertTrue( $tag['style'] );
    499501                        $this->assertTrue( $tag['title'] );
     502                        $this->assertTrue( $tag['xml:lang'] );
    500503                }
    501504
Note: See TracChangeset for help on using the changeset viewer.