This is an automated email from the ASF dual-hosted git repository.

mgrigorov pushed a commit to branch wicket-9.x
in repository https://gitbox.apache.org/repos/asf/wicket.git


The following commit(s) were added to refs/heads/wicket-9.x by this push:
     new a3b53cfff1 WICKET-7096: add missing nonce to auto linked resources 
(#768)
a3b53cfff1 is described below

commit a3b53cfff193a79db22b5b865d7568519e36b587
Author: Sebastian Thomschke <[email protected]>
AuthorDate: Thu Jan 18 09:27:20 2024 +0100

    WICKET-7096: add missing nonce to auto linked resources (#768)
    
    (cherry picked from commit 3683374ae412bebdcc8ec030ad19c8251e8d71cb)
---
 .../apache/wicket/markup/resolver/AutoLinkResolver.java  |  8 ++++++++
 .../wicket/markup/resolver/AutoLinkResolverTest.java     | 16 ++++++++++++++++
 2 files changed, 24 insertions(+)

diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/resolver/AutoLinkResolver.java
 
b/wicket-core/src/main/java/org/apache/wicket/markup/resolver/AutoLinkResolver.java
index c23cf7593c..999c1f8dc8 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/markup/resolver/AutoLinkResolver.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/markup/resolver/AutoLinkResolver.java
@@ -25,6 +25,7 @@ import org.apache.wicket.Component;
 import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.Page;
 import org.apache.wicket.application.IClassResolver;
+import org.apache.wicket.core.util.string.JavaScriptUtils;
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.IMarkupFragment;
 import org.apache.wicket.markup.MarkupStream;
@@ -619,6 +620,13 @@ public final class AutoLinkResolver implements 
IComponentResolver
 
                                // generate the href attribute
                                tag.put(attribute, url);
+
+                               // add nonce if required
+                               final var csp = 
getWebApplication().getCspSettings();
+                               if(csp.isNonceEnabled())
+                               {
+                                       tag.put(JavaScriptUtils.ATTR_CSP_NONCE, 
csp.getNonce(getRequestCycle()));
+                               }
                        }
                }
 
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/markup/resolver/AutoLinkResolverTest.java
 
b/wicket-core/src/test/java/org/apache/wicket/markup/resolver/AutoLinkResolverTest.java
index 7381757e8c..5a016fa56f 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/markup/resolver/AutoLinkResolverTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/markup/resolver/AutoLinkResolverTest.java
@@ -17,6 +17,7 @@
 package org.apache.wicket.markup.resolver;
 
 import static org.hamcrest.CoreMatchers.containsString;
+import static org.hamcrest.CoreMatchers.not;
 import static org.hamcrest.MatcherAssert.assertThat;
 
 import java.util.Locale;
@@ -66,4 +67,19 @@ class AutoLinkResolverTest extends WicketTestCase
                assertThat(tester.getLastResponseAsString(),
                        containsString(EXISTENT_RESOURCE_LOCALE.getCountry()));
        }
+
+       @Test
+       void testNonceIsPresentForAutoLinkLocalizedResource() {
+               PageWithAutoLinkedLocalResource instance = new 
PageWithAutoLinkedLocalResource();
+
+               var settings = tester.getApplication().getCspSettings();
+
+               settings.blocking().disabled();
+               tester.startPage(instance);
+               assertThat(tester.getLastResponseAsString(), 
not(containsString("nonce=\"")));
+
+               settings.blocking().strict();
+               tester.startPage(instance);
+               assertThat(tester.getLastResponseAsString(), 
containsString("nonce=\""));
+       }
 }

Reply via email to