[ad_1]
你好,
我有一个 .net 6 Web 应用程序,具有天蓝色的广告身份验证。 应用程序被天蓝色应用程序网关包围。 网关 WAF 规则被阻止,并且从网关返回 403 错误。
根本原因:Microsoft Identity Web 身份验证生成具有双连字符 (–) 等特殊字符的 cookie,WAF 正则表达式将它们视为 SQL 注释,并且阻止该请求。
我尝试过的:
我尝试编写自定义中间件来编码和解码 cookie,但它不起作用。
我也无法理解流程,因为概念对我来说不清楚,就像我在中间件的服务器代码中解码和编码cookie一样,但是当用户向网络应用程序发送请求时,最初它会出现到网关,在那里它将被网关阻止。 我不确定这种解决方案如何运作。
如果您除了应用程序网关中的阻止规则之外还遇到过此问题,请分享您的建议。 或者实际上将如何解决
解决方案1
解决方案2
这根本不是我的专业领域,甚至不是我的专业领域……但是,我确实发现这个问题很有趣,并开始进行一些谷歌搜索,是的,我知道,还有一些人工智能建议。
看来您用于编码和解码 cookie 的自定义中间件已正确实现
看来您需要确保在编码/解码期间添加的任何标头都包含在传出请求中。
确保你的Azure应用程序网关没有过度限制,并在必要时考虑调整WAF规则,我看到评论说你对此无法控制,只需检查并确认状态即可。
要处理 .NET 中的“自定义中间件”,请安装必要的软件包(AI 启动,此处不提供任何保证,但可以作为指向正确方向的指针提供帮助…) –
dotnet add package Microsoft.AspNetCore.Authentication dotnet add package Microsoft.AspNetCore.Authentication.Cookies
在这里休息,使用 C3 复制并粘贴… –
// CustomMiddleware.cs using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Http; using System.Threading.Tasks; public class CustomMiddleware { private readonly RequestDelegate _next; public CustomMiddleware(RequestDelegate next) { _next = next; } public async Task Invoke(HttpContext context) { // Decode or encode your cookies here // For example, decoding: // var decodedCookie = context.Request.Cookies["YourCookieName"]; // var decodedValue = DecodeYourCookie(decodedCookie); // Encoding example: // var encodedValue = EncodeYourCookie(originalValue); // context.Response.Cookies.Append("YourCookieName", encodedValue); // Call the next delegate/middleware in the pipeline await _next(context); } }
在“Startup.cs”中注册中间件 –
// Startup.cs using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; public class Startup { // Other configurations... public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { // Other middleware configurations... app.UseMiddleware<CustomMiddleware>(); // Other middleware configurations... } }
Agian,与代码相关的部分是人工智能生成的,可能与您想要实现的目标完全不同步,但可以作为指针提供帮助……
解决方案3
我建议阅读这些 MSDN 文章:
故障排除 – Azure Web 应用程序防火墙 | 微软学习[^]
使用 Azure Log Analytics 检查 WAF 日志 – Azure 应用程序网关 | 微软学习[^]
Azure Front Door 中 Web 应用程序防火墙的策略设置 | 微软学习[^]
Azure 应用程序网关中的 Web 应用程序防火墙排除列表 – Azure 门户 | 微软学习[^]
我希望它有帮助…
[ad_2]
コメント