gpt4 book ai didi

security - .net 核心安全 header 中间件不向外部 http 请求添加 header

转载 作者:行者123 更新时间:2023-12-02 03:04:52 24 4
gpt4 key购买 nike

我在 Web 应用程序中使用安全 header 中间件将安全 header 添加到所有传出的 http 请求。安全 header 似乎已添加到对内部资源的所有网络请求中 - 即构成网络应用程序的资源,例如 javascript 脚本和网络应用程序中使用的图像以及 css 和 html 文件。但是,安全 header 不会添加到任何外部 http 请求中,例如添加到我创建的 Web 应用程序用来获取 json 数据的 API 中。我如何让它只向所有内容添加安全 header ,而不仅仅是向网络应用程序自己的资源添加安全 header ?

下面是一些添加安全头中间件的相关代码

startup.cs

private ILogger<SecurityHeadersBuilder> _logger;
private readonly SecurityHeadersPolicy _policy = new SecurityHeadersPolicy();

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, ISecurityHeadersBuilder securityHeadersBuilder)
{...
app.UseSecurityHeadersMiddleware(
securityHeadersBuilder.AddDefaultSecurePolicy()
);

securityHeadersBuilder.cs

public SecurityHeadersBuilder AddDefaultSecurePolicy()
{
AddFrameOptionsDeny();
AddXssProtectionBlock();
AddContentTypeOptionsNoSniff();
AddNoCache();
AddStrictTransportSecurityMaxAgeIncludeSubDomains();
AddContentSecurityPolicyAllContentFromSelfAndGoogle();
RemoveServerHeader();
return this;
}

public SecurityHeadersBuilder AddFrameOptionsDeny()
{
_policy.SetHeaders[FrameOptionsConstants.Header] = FrameOptionsConstants.Deny;
_logger.LogInformation(string.Format("setting {0} http header value to {1}", FrameOptionsConstants.Header, FrameOptionsConstants.Deny));
return this;
}

最佳答案

有两种类型的 header :请求 header 和_response header 。

服务器设置响应 header 来指示浏览器如何处理响应(例如阻止 iframing)。因此,使用(例如) header X-Frame-Options : Deny 进行请求是没有意义的。因为客户端应用程序可以更改值并忽略安全限制。服务器无论如何都不会处理 header 的值,浏览器的用户代理将使用这个response header 。

如果您调用(外部)API,您应该手动将请求 header 添加到HttpClient 并进行调用。 API 反过来可以返回(安全)响应 header 。

示例代码中的所有 header 都是响应 header ,不应设置为请求 header 。

关于security - .net 核心安全 header 中间件不向外部 http 请求添加 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43504761/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com