WordPress.org

Make WordPress Core

Changeset 41393


Ignore:
Timestamp:
09/19/2017 08:00:40 AM (2 years ago)
Author:
ocean90
Message:

Editor: Prevent adding javascript: and data: URLs through the inline link dialog.

Location:
trunk/src/wp-includes/js
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/js/tinymce/plugins/wplink/plugin.js

    r40801 r41393  
    55            return (
    66                '<div id="' + this._id + '" class="wp-link-preview">' +
    7                     '<a href="' + this.url + '" target="_blank" tabindex="-1">' + this.url + '</a>' +
     7                    '<a href="' + this.url + '" target="_blank" rel="noopener" tabindex="-1">' + this.url + '</a>' +
    88                '</div>'
    99            );
     
    249249                text = inputInstance.getLinkText();
    250250                editor.focus();
     251
     252                var parser = document.createElement( 'a' );
     253                parser.href = href;
     254
     255                if ( 'javascript:' === parser.protocol || 'data:' === parser.protocol ) { // jshint ignore:line
     256                    href = '';
     257                }
    251258
    252259                if ( ! href ) {
  • trunk/src/wp-includes/js/wplink.js

    r40615 r41393  
    313313
    314314            if ( attrs.target ) {
    315                 html += ' target="' + attrs.target + '"';
     315                html += ' rel="noopener" target="' + attrs.target + '"';
    316316            }
    317317
     
    337337            attrs = wpLink.getAttrs();
    338338            text = inputs.text.val();
     339
     340            var parser = document.createElement( 'a' );
     341            parser.href = attrs.href;
     342
     343            if ( 'javascript:' === parser.protocol || 'data:' === parser.protocol ) { // jshint ignore:line
     344                attrs.href = '';
     345            }
    339346
    340347            // If there's no href, return.
     
    390397            var attrs = wpLink.getAttrs(),
    391398                $link, text, hasText, $mceCaret;
     399
     400            var parser = document.createElement( 'a' );
     401            parser.href = attrs.href;
     402
     403            if ( 'javascript:' === parser.protocol || 'data:' === parser.protocol ) { // jshint ignore:line
     404                attrs.href = '';
     405            }
    392406
    393407            if ( ! attrs.href ) {
Note: See TracChangeset for help on using the changeset viewer.