Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions assets/dev/js/editor/utils/helpers.js
Original file line number Diff line number Diff line change
Expand Up @@ -704,4 +704,12 @@ module.exports = {
sanitize( value, options ) {
return DOMPurify.sanitize( value, options );
},

sanitizeUrl( url ) {
const IS_ALLOWED_URI = /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,
sanitizedUrl = DOMPurify.sanitize( url ),
isUrlAllowed = IS_ALLOWED_URI.test( sanitizedUrl );

return isUrlAllowed ? sanitizedUrl : '';
},
};
2 changes: 1 addition & 1 deletion includes/widgets/traits/button-trait.php
Original file line number Diff line number Diff line change
Expand Up @@ -577,7 +577,7 @@ protected function content_template() {
view.addRenderAttribute( 'button', 'class', 'elementor-button' );

if ( '' !== settings.link.url ) {
view.addRenderAttribute( 'button', 'href', settings.link.url );
view.addRenderAttribute( 'button', 'href', elementor.helpers.sanitizeUrl( settings.link.url ) );
view.addRenderAttribute( 'button', 'class', 'elementor-button-link' );
} else {
view.addRenderAttribute( 'button', 'role', 'button' );
Expand Down