1 files changed, 36 insertions, 0 deletions
diff --git a/ReferenceClientProxyImplementation/Patches/Implementations/HTMLPatches/StripNoncesPatch.cs b/ReferenceClientProxyImplementation/Patches/Implementations/HTMLPatches/StripNoncesPatch.cs
new file mode 100644
index 0000000..6c5f312
--- /dev/null
+++ b/ReferenceClientProxyImplementation/Patches/Implementations/HTMLPatches/StripNoncesPatch.cs
@@ -0,0 +1,36 @@
+using System.Text;
+using System.Text.RegularExpressions;
+using ReferenceClientProxyImplementation.Configuration;
+
+namespace ReferenceClientProxyImplementation.Patches.Implementations.HTMLPatches;
+
+public partial class StripNoncesPatch(ProxyConfiguration config) : IPatch {
+ public int GetOrder() => 0;
+
+ public string GetName() => "Strip nonces/integrity from html";
+ public bool Applies(string relativeName, byte[] content) => relativeName is "app.html" or "developers.html" or "popout.html";
+
+ public async Task<byte[]> Execute(string _, byte[] content) {
+ var stringContent = Encoding.UTF8.GetString(content);
+ stringContent = HtmlScriptIntegrityRegex().Replace(
+ HtmlScriptNonceRegex().Replace(
+ JsElementNonceRegex().Replace(
+ stringContent,
+ ""
+ ),
+ ""
+ ),
+ ""
+ );
+ return Encoding.UTF8.GetBytes(stringContent);
+ }
+
+ [GeneratedRegex("\\snonce=\"[a-zA-Z0-9+/=]+\"")]
+ private static partial Regex HtmlScriptNonceRegex();
+
+ [GeneratedRegex("\\w.nonce='[a-zA-Z0-9+/=]+';")]
+ private static partial Regex JsElementNonceRegex();
+
+ [GeneratedRegex(@"\sintegrity=""[a-zA-Z0-9+/=\-\s]+""")]
+ private static partial Regex HtmlScriptIntegrityRegex();
+}
\ No newline at end of file
|