From 929bc76c953946c516440d66b62b18ce5ef89eab Mon Sep 17 00:00:00 2001 From: Aaron Shim <5382864+aaronshim@users.noreply.github.com> Date: Fri, 28 Oct 2022 16:34:08 -0400 Subject: [PATCH 1/3] Add Trusted Types support option to README --- README.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index d7284cf..b18f5a2 100644 --- a/README.md +++ b/README.md @@ -162,13 +162,20 @@ window.recaptchaOptions = { }; ``` -### CSP Nonce support +#### CSP Nonce support ```js window.recaptchaOptions = { nonce: document.querySelector('meta[name=\'csp-nonce\']').getAttribute('content'), }; ``` +#### Trusted Types support +```js +window.recaptchaOptions = { + trustedTypes: true, +} +``` + #### ReCaptcha loading google recaptcha script manually You can also use the barebone components doing the following. Using that component will oblige you to manage the grecaptcha dep and load the script by yourself. From e11879d4b90e715d5d74a510a3a1249adfe17ba0 Mon Sep 17 00:00:00 2001 From: Aaron Shim <5382864+aaronshim@users.noreply.github.com> Date: Fri, 28 Oct 2022 16:44:22 -0400 Subject: [PATCH 2/3] Trusted Types compatible version of the script --- src/recaptcha-wrapper.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/recaptcha-wrapper.js b/src/recaptcha-wrapper.js index d83ac3c..0b0312f 100644 --- a/src/recaptcha-wrapper.js +++ b/src/recaptcha-wrapper.js @@ -11,6 +11,12 @@ function getOptions() { function getURL() { const dynamicOptions = getOptions(); const hostname = dynamicOptions.useRecaptchaNet ? "recaptcha.net" : "www.google.com"; + if (self.trustedTypes && self.trustedTypes.createPolicy && dynamicOptions.trustedTypes) { + const policy = self.trustedTypes.createPolicy('react-google-recaptcha', { + createScriptURL: (_ignored) => `https://${hostname}/recaptcha/api.js?onload=${callbackName}&render=explicit&trustedtypes=true` + }); + return policy.create('_ignored'); + } return `https://${hostname}/recaptcha/api.js?onload=${callbackName}&render=explicit`; } From e470752abe69b579a2ea38d4f00d05f6a41d3ac4 Mon Sep 17 00:00:00 2001 From: Aaron Shim <5382864+aaronshim@users.noreply.github.com> Date: Thu, 16 Mar 2023 15:00:03 -0400 Subject: [PATCH 3/3] Fixed typo. --- src/recaptcha-wrapper.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/recaptcha-wrapper.js b/src/recaptcha-wrapper.js index 0b0312f..5e63561 100644 --- a/src/recaptcha-wrapper.js +++ b/src/recaptcha-wrapper.js @@ -15,7 +15,7 @@ function getURL() { const policy = self.trustedTypes.createPolicy('react-google-recaptcha', { createScriptURL: (_ignored) => `https://${hostname}/recaptcha/api.js?onload=${callbackName}&render=explicit&trustedtypes=true` }); - return policy.create('_ignored'); + return policy.createScriptURL('_ignored'); } return `https://${hostname}/recaptcha/api.js?onload=${callbackName}&render=explicit`; }