From 97e3c4a7f3ba3fa150ee4d3a7e50338b0e81d0bc Mon Sep 17 00:00:00 2001 From: miguelcrpinto Date: Thu, 18 May 2023 22:46:56 +0200 Subject: [PATCH 1/3] Implemented Cross-Origin-Resource-Policy response header --- src/Constants.cs | 2 + .../SecureHeadersMiddlewareBuilder.cs | 17 +++++ .../SecureHeadersMiddlewareExtensions.cs | 1 + src/Models/CrossOriginResourcePolicy.cs | 67 +++++++++++++++++++ .../SecureHeadersMiddlewareConfiguration.cs | 7 ++ src/SecureHeadersMiddleware.cs | 6 ++ tests/SecureHeadersInjectedTest.cs | 31 +++++++++ 7 files changed, 131 insertions(+) create mode 100644 src/Models/CrossOriginResourcePolicy.cs diff --git a/src/Constants.cs b/src/Constants.cs index 61aa50c..d8d5314 100644 --- a/src/Constants.cs +++ b/src/Constants.cs @@ -27,5 +27,7 @@ public static class Constants public static readonly string PoweredByHeaderName = "X-Powered-By"; public static readonly string ServerHeaderName = "Server"; + + public static readonly string CrossOriginResourcePolicyHeaderName = "Cross-Origin-Resource-Policy"; } } diff --git a/src/Extensions/SecureHeadersMiddlewareBuilder.cs b/src/Extensions/SecureHeadersMiddlewareBuilder.cs index dbb5722..fffbc6a 100644 --- a/src/Extensions/SecureHeadersMiddlewareBuilder.cs +++ b/src/Extensions/SecureHeadersMiddlewareBuilder.cs @@ -12,6 +12,7 @@ using OwaspHeaders.Core.Enums; using OwaspHeaders.Core.Helpers; using OwaspHeaders.Core.Models; +using static OwaspHeaders.Core.Models.CrossOriginResourcePolicy; namespace OwaspHeaders.Core.Extensions { @@ -319,7 +320,23 @@ public static SecureHeadersMiddlewareConfiguration RemovePoweredByHeader (this SecureHeadersMiddlewareConfiguration config) { config.RemoveXPoweredByHeader = true; + return config; + } + /// + /// The HTTP Cross-Origin-Resource-Policy response header conveys a desire that the browser + /// blocks no-cors cross-origin/cross-site requests to the given resource. + /// + /// + /// The HTTP Cross-Origin-Resource-Policy response header value. + /// + /// + /// Defaults to "same-origin" () which means that "Only requests from the same Origin (i.e. scheme + host + port) can read the resource." + /// + public static SecureHeadersMiddlewareConfiguration UseCrossOriginResourcePolicy(this SecureHeadersMiddlewareConfiguration config, CrossOriginResourceOptions value = CrossOriginResourceOptions.SameOrigin) + { + config.UseCrossOriginResourcePolicy = true; + config.CrossOriginResourcePolicy = new CrossOriginResourcePolicy(value); return config; } diff --git a/src/Extensions/SecureHeadersMiddlewareExtensions.cs b/src/Extensions/SecureHeadersMiddlewareExtensions.cs index e686d5e..bdb2be3 100644 --- a/src/Extensions/SecureHeadersMiddlewareExtensions.cs +++ b/src/Extensions/SecureHeadersMiddlewareExtensions.cs @@ -33,6 +33,7 @@ public static SecureHeadersMiddlewareConfiguration BuildDefaultConfiguration() .UseCacheControl() .RemovePoweredByHeader() .UseXssProtection() + .UseCrossOriginResourcePolicy() .Build(); } diff --git a/src/Models/CrossOriginResourcePolicy.cs b/src/Models/CrossOriginResourcePolicy.cs new file mode 100644 index 0000000..09b445d --- /dev/null +++ b/src/Models/CrossOriginResourcePolicy.cs @@ -0,0 +1,67 @@ +namespace OwaspHeaders.Core.Models +{ + /// + /// Cross-Origin-Resource-Policy + /// This response header(also named CORP) allows to define a policy that lets web sites and applications opt in to protection + /// against certain requests from other origins(such as those issued with elements like