Sign in Sign up
nuget

HZY.Framework.Web.Security

HZY.Framework Web 安全基线包:权限授权([RequirePermission])、端点白名单、CORS、安全响应头、 ForwardedHeaders、分区限流、liveness/readiness 健康检查。全部能力显式 opt-in,未调用不改变任何现有行为。 ===== 使用教程 ===== 1、权限授权(配合 HZY.Framework.Authentication 的 JWT 使用): builder.Services.AddHzyPermissionAuthorization(); // 自定义权限校验器(默认 DenyAllPermissionChecker 安全拒绝,绝不放行): builder.Services.AddHzyPermissionChecker<MyPermissionChecker>(); [RequirePermission("system:user:read")] // 单权限 [RequirePermission("system:user:read", "system:user:write")] // 任意命中一个即通过 [RequireAllPermissions("a", "b")] // 必须全部拥有 [AllowAnonymous] // 始终优先 public Task<object> GetAsync() { ... } // 全站默认要求登录 + 匿名路径白名单(可选): builder.Services.AddHzyPermissionAuthorization(o => { o.RequireAuthenticatedUserByDefault = true; o.AnonymousPaths.AddRange(["/health/", "/swagger/", "/api/v1/identity/"]); }); 2、Web 安全基线(CORS / 安全响应头 / ForwardedHeaders / 限流 / 健康检查,全部默认关闭,逐项开启): builder.AddHzyWebSecurity(o => { o.Cors.Enabled = true; o.Cors.AllowedOrigins.AddRange(["https://admin.example.com"]); o.Headers.Enabled = true; // nosniff / X-Frame-Options / Referrer-Policy / CSP o.Headers.EnableHsts = true; // 生产环境建议开启 o.ForwardedHeaders.Enabled = true; // 反向代理场景显式开启(仅信任显式配置的代理网段) o.ForwardedHeaders.KnownNetworks.Add("10.0.0.0/8"); o.RateLimiting.Enabled = true; // 基于 Core AddFrameworkRateLimiter 的分区扩展 o.HealthChecks.Enabled = true; // /health/live + /health/ready(readiness 按 tag 过滤) }); 3、接入管线(顺序:ForwardedHeaders -> CORS -> 安全头 -> 认证 -> 授权 -> 限流 -> Endpoint): app.UseHzyWebSecurity(); // 按配置挂载 ForwardedHeaders/CORS/安全头并映射健康检查 app.UseHzyAuthentication(); // HZY.Framework.Authentication app.UseAuthorization(); app.UseHzyRateLimiter(); // 限流(用户分区需在认证之后) 安全默认:CORS 默认拒绝且禁止 AllowAnyOrigin+AllowCredentials;ForwardedHeaders 不开启则不信任 X-Forwarded-*(开启后默认仅信任回环,需显式配置受信代理网段);健康检查默认仅返回聚合状态。 源码与完整文档:https://gitee.com/hzy6/HZY.Framework 实战案例(HzyAdmin):https://gitee.com/hzy6/HzyAdmin

nuget View on Nuget

Activity

Latest release
3d ago
Total releases
1
Cadence
Last 12 months
1

Details

License
MIT
First release
Sep 11, 2026
Releases
Version Released
10.1.19 initial