Make WordPress Core

Changeset 46004


Ignore:
Timestamp:
09/04/2019 06:10:34 PM (5 years ago)
Author:
desrosj
Message:

Fix for URL sanitization in wp_kses_bad_protocol_once().

Merges [45997] to the 5.0 branch.

Props irsdl, sstoqnov, whyisjake.

Location:
branches/5.0
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/5.0

  • branches/5.0/src/wp-includes/kses.php

    r44017 r46004  
    14081408 */
    14091409function wp_kses_bad_protocol_once($string, $allowed_protocols, $count = 1 ) {
     1410    $string  = preg_replace( '/(&#0*58(?![;0-9])|&#x0*3a(?![;a-f0-9]))/i', '$1;', $string );
    14101411    $string2 = preg_split( '/:|&#0*58;|&#x0*3a;/i', $string, 2 );
    14111412    if ( isset($string2[1]) && ! preg_match('%/\?%', $string2[0]) ) {
  • branches/5.0/tests/phpunit/tests/kses.php

    r43813 r46004  
    145145            'feed:javascript:alert(1)',
    146146            'feed:javascript:feed:javascript:feed:javascript:alert(1)',
     147            'javascript&#58alert(1)',
     148            'javascript&#x3ax=1;alert(1)',
    147149        );
    148150        foreach ( $bad as $k => $x ) {
     
    157159                    case 23: $this->assertEquals( 'javascript&#0000058alert(1)//?:', $result ); break;
    158160                    case 24: $this->assertEquals( 'feed:alert(1)', $result ); break;
    159                     default: $this->fail( "wp_kses_bad_protocol failed on $x. Result: $result" );
     161                    case 26:
     162                        $this->assertEquals( 'javascript&#58alert(1)', $result );
     163                        break;
     164                    case 27:
     165                        $this->assertEquals( 'javascript&#x3ax=1;alert(1)', $result );
     166                        break;
     167                    default:
     168                        $this->fail( "wp_kses_bad_protocol failed on $k, $x. Result: $result" );
    160169                }
    161170            }
Note: See TracChangeset for help on using the changeset viewer.