Make WordPress Core

Changeset 52968


Ignore:
Timestamp:
03/21/2022 12:11:08 AM (3 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.