From 7d5c60d0a34172e2703f8ec6a57963da7aacede8 Mon Sep 17 00:00:00 2001 From: "Namhyeon, Go" Date: Sun, 14 Dec 2025 19:15:51 +0900 Subject: [PATCH] Update AssemblyLoader.cs and examples (Catswords.Phantomizer) Update AssemblyLoader.cs and examples (Catswords.Phantomizer) --- .../Catswords.Phantomizer/AssemblyLoader.cs | 9 +++++++-- WelsonJS.Augmented/Catswords.Phantomizer/README.md | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/WelsonJS.Augmented/Catswords.Phantomizer/AssemblyLoader.cs b/WelsonJS.Augmented/Catswords.Phantomizer/AssemblyLoader.cs index 78002a0..0b2a4dc 100644 --- a/WelsonJS.Augmented/Catswords.Phantomizer/AssemblyLoader.cs +++ b/WelsonJS.Augmented/Catswords.Phantomizer/AssemblyLoader.cs @@ -46,7 +46,7 @@ namespace Catswords.Phantomizer private static readonly object SyncRoot = new object(); private static bool _registered; - private static List _allowSchemes = new List { + private static readonly HashSet _allowSchemes = new HashSet(StringComparer.OrdinalIgnoreCase) { Uri.UriSchemeHttps }; @@ -291,6 +291,8 @@ namespace Catswords.Phantomizer if (!Uri.CheckSchemeName(scheme)) throw new ArgumentException("Invalid URI scheme name.", nameof(scheme)); + scheme = scheme.ToLowerInvariant(); + if (scheme.Equals(Uri.UriSchemeHttp, StringComparison.OrdinalIgnoreCase)) Trace.TraceWarning("Warning: Adding 'http' to allowed URI schemes reduces security."); @@ -679,7 +681,10 @@ namespace Catswords.Phantomizer if (uri == null) return false; - return _allowSchemes.Contains(uri.Scheme); + lock (SyncRoot) + { + return _allowSchemes.Contains(uri.Scheme); + } } } } diff --git a/WelsonJS.Augmented/Catswords.Phantomizer/README.md b/WelsonJS.Augmented/Catswords.Phantomizer/README.md index 052b9e7..6b5d02d 100644 --- a/WelsonJS.Augmented/Catswords.Phantomizer/README.md +++ b/WelsonJS.Augmented/Catswords.Phantomizer/README.md @@ -71,7 +71,7 @@ private static void InitializeAssemblyLoader() //loaderType.GetProperty("IntegrityUrl")?.SetValue(null, GetAppConfig("IntegrityUrl")); // (Optional) Set the integrity URL loaderType.GetProperty("LoaderNamespace")?.SetValue(null, typeof(Program).Namespace); loaderType.GetProperty("AppName")?.SetValue(null, "WelsonJS"); // Application name - //loaderType.GetMethod("AddAllowedUriScheme")?.Invoke(null, Uri.UriSchemeHttp); // (Optional) Allow insecure HTTP (not recommended) + //loaderType.GetMethod("AddAllowedUriScheme")?.Invoke(null, new object[] { Uri.UriSchemeHttp }); // (Optional) Allow insecure HTTP (not recommended) loaderType.GetMethod("Register")?.Invoke(null, null); var loadNativeModulesMethod = loaderType.GetMethod(