From 02ed9f5e663b5646fb4ec576abd12380fff1b5a7 Mon Sep 17 00:00:00 2001 From: Benoit Socias Date: Thu, 22 Sep 2022 12:55:18 +0000 Subject: [PATCH] [FIX] website, *: avoid using unescaped query parameters MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit *: google_recaptcha, web_editor, website_blog, website_event_booth, website_event_exhibitor, website_event_track, website_forum, website_jitsi, website_sale_comparison, website_slides, website_livechat, website_twitter This commit fixes improperly escaped query parameters across javascripts of website-related modules. See https://github.com/odoo/enterprise/pull/31711 closes odoo/odoo#118599 X-original-commit: 89be076aa51b097ada48d0046006be4d9692ac1e Related: odoo/enterprise#39783 Signed-off-by: Bojabza Soukéina (sobo) --- addons/google_recaptcha/static/src/js/recaptcha.js | 2 +- addons/web_editor/static/shapes/convert.js | 4 ++-- .../src/components/media_dialog/document_selector.js | 4 ++-- .../src/components/media_dialog/file_selector.js | 2 +- .../src/components/media_dialog/image_selector.js | 2 +- .../src/components/media_dialog/video_selector.js | 4 ++-- .../web_editor/static/src/js/backend/convert_inline.js | 2 +- .../static/src/js/editor/odoo-editor/src/OdooEditor.js | 2 +- .../web_editor/static/src/js/editor/snippets.editor.js | 2 +- .../static/src/js/editor/snippets.options.js | 10 +++++----- .../src/js/wysiwyg/widgets/link_popover_widget.js | 2 +- addons/web_editor/static/src/js/wysiwyg/wysiwyg.js | 6 +++--- .../src/client_actions/configurator/configurator.js | 4 ++-- .../client_actions/website_preview/website_preview.js | 4 ++-- addons/website/static/src/components/dialog/seo.js | 2 +- .../src/components/wysiwyg_adapter/wysiwyg_adapter.js | 2 +- addons/website/static/src/js/backend/dashboard.js | 2 +- addons/website/static/src/js/content/website_root.js | 4 ++-- addons/website/static/src/js/editor/snippets.editor.js | 2 +- .../website/static/src/js/editor/snippets.options.js | 8 +++++--- addons/website/static/src/services/website_service.js | 2 +- .../static/src/snippets/s_social_media/options.js | 8 ++++---- .../static/src/snippets/s_website_form/options.js | 2 +- .../static/src/systray_items/website_switcher.js | 2 +- addons/website_blog/static/src/js/website_blog.js | 10 +++++----- .../static/src/js/booth_register.js | 2 +- .../static/src/js/event_exhibitor_connect.js | 2 +- .../static/src/js/website_event_track_proposal_form.js | 2 +- .../src/js/systray_items/forum_forum_add_form.js | 2 +- addons/website_forum/static/src/js/website_forum.js | 4 ++-- addons/website_jitsi/static/src/js/chat_room.js | 2 +- .../static/src/core/persona_model_patch.js | 2 +- .../static/src/core/thread_service_patch.js | 2 +- .../static/src/js/website_sale_comparison.js | 7 ++++--- .../static/src/js/slides_course_fullscreen_player.js | 2 +- .../website_slides/static/src/js/slides_course_join.js | 4 ++-- .../website_slides/static/src/js/slides_course_quiz.js | 2 +- .../website_slides/static/src/js/slides_slide_like.js | 2 +- .../static/src/js/website.twitter.animation.js | 2 +- 39 files changed, 67 insertions(+), 64 deletions(-) diff --git a/addons/google_recaptcha/static/src/js/recaptcha.js b/addons/google_recaptcha/static/src/js/recaptcha.js index 7d5153215c5..6ac81a13322 100644 --- a/addons/google_recaptcha/static/src/js/recaptcha.js +++ b/addons/google_recaptcha/static/src/js/recaptcha.js @@ -21,7 +21,7 @@ const ReCaptcha = Class.extend({ */ loadLibs: function () { if (this._publicKey) { - this._recaptchaReady = loadJS(`https://www.recaptcha.net/recaptcha/api.js?render=${this._publicKey}`) + this._recaptchaReady = loadJS(`https://www.recaptcha.net/recaptcha/api.js?render=${encodeURIComponent(this._publicKey)}`) .then(() => new Promise(resolve => window.grecaptcha.ready(() => resolve()))); return this._recaptchaReady.then(() => !!document.querySelector('.grecaptcha-badge')); } diff --git a/addons/web_editor/static/shapes/convert.js b/addons/web_editor/static/shapes/convert.js index 2688f4aa86d..7a556a5f28d 100644 --- a/addons/web_editor/static/shapes/convert.js +++ b/addons/web_editor/static/shapes/convert.js @@ -48,14 +48,14 @@ files.filter(f => f.endsWith('svg')).forEach(filePath => { repeatX: fileName.includes('repeatx'), repeatY: fileName.includes('repeaty'), }; - shape.optionXML = ``; + shape.optionXML = ``; if (shape.position[0] === 'stretch') { shape.position = ['center']; shape.size = '100% 100%'; } else { shape.size = '100% auto'; } - shape.scss = `'${shape.page}/${shape.name}': ('position': ${shape.position[0]}, 'size': ${shape.size}, 'colors': (${shape.colors.join(', ')})${shape.repeatX ? ", 'repeat-x': true" : ""}${shape.repeatY ? ", 'repeat-y': true" : ""})`; + shape.scss = `'${encodeURIComponent(shape.page)}/${encodeURIComponent(shape.name)}': ('position': ${shape.position[0]}, 'size': ${shape.size}, 'colors': (${shape.colors.join(', ')})${shape.repeatX ? ", 'repeat-x': true" : ""}${shape.repeatY ? ", 'repeat-y': true" : ""})`; shapes.push(shape); }); const xml = shapes.map(shape => shape.optionXML).join('\n'); diff --git a/addons/web_editor/static/src/components/media_dialog/document_selector.js b/addons/web_editor/static/src/components/media_dialog/document_selector.js index a8c84d61ec0..707e6baf3d7 100644 --- a/addons/web_editor/static/src/components/media_dialog/document_selector.js +++ b/addons/web_editor/static/src/components/media_dialog/document_selector.js @@ -49,7 +49,7 @@ export class DocumentSelector extends FileSelector { static async createElements(selectedMedia, { orm }) { return Promise.all(selectedMedia.map(async attachment => { const linkEl = document.createElement('a'); - let href = `/web/content/${attachment.id}?unique=${attachment.checksum}&download=true`; + let href = `/web/content/${encodeURIComponent(attachment.id)}?unique=${encodeURIComponent(attachment.checksum)}&download=true`; if (!attachment.public) { let accessToken = attachment.access_token; if (!accessToken) { @@ -59,7 +59,7 @@ export class DocumentSelector extends FileSelector { [attachment.id], ); } - href += `&access_token=${accessToken}`; + href += `&access_token=${encodeURIComponent(accessToken)}`; } linkEl.href = href; linkEl.title = attachment.name; diff --git a/addons/web_editor/static/src/components/media_dialog/file_selector.js b/addons/web_editor/static/src/components/media_dialog/file_selector.js index e13fb71a8b8..3fec0d99b14 100644 --- a/addons/web_editor/static/src/components/media_dialog/file_selector.js +++ b/addons/web_editor/static/src/components/media_dialog/file_selector.js @@ -40,7 +40,7 @@ AttachmentError.template = xml ` following pages or views: