You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OWASP ModSecurity 2.9(IIS环境)致403禁止访问问题求助

解决ASP.NET Core应用在Plesk共享主机的ModSecurity误报问题

一、现有环境下的临时缓解方案

1. 针对性禁用误报规则

在Plesk的WAF管理界面中,直接禁用触发误报的规则942440和942450。这种方式虽然无法实现“仅忽略Cookie检测、保留POST/查询参数校验”的精准控制,但能快速解决用户频繁遇到的403错误,同时保留其他SQL注入规则对请求参数的防护能力。如果后续出现新的误报,持续查看ModSecurity审计日志,定位对应规则编号后逐一禁用即可。

2. 调整ASP.NET会话Cookie格式

修改应用的会话ID生成逻辑,避免生成包含0x开头的十六进制字符串,从根源上避免触发942450规则。示例代码如下:

services.AddSession(options =>
{
    options.IdleTimeout = TimeSpan.FromMinutes(30);
    options.Cookie.HttpOnly = true;
    options.Cookie.IsEssential = true;
    options.SessionIdGenerator = () =>
    {
        // 生成不含0x标识的会话ID,采用Base64编码格式
        return Convert.ToBase64String(Guid.NewGuid().ToByteArray())
            .Replace('+', '-')
            .Replace('/', '_')
            .TrimEnd('=');
    };
});

二、长期优化方案

1. 升级ASP.NET Core版本

将应用从.NET Core 3.2升级到.NET 6或7:

  • .NET 6/7为长期支持(LTS)版本,性能、安全性及兼容性均优于旧版本,能减少潜在的环境适配问题。
  • 升级时需注意:检查第三方NuGet包的兼容性,调整Program.cs的启动逻辑(.NET 6+采用顶级语句模式),完成后全面测试应用功能确保正常运行。

2. 更换支持WAF自定义配置的主机商

选择澳大利亚本地支持ModSecurity自定义规则的共享主机或VPS服务商:

  • 优先挑选允许编写自定义ModSecurity规则的服务商,这样可以实现精准的规则排除,让942440和942450仅忽略Cookie检测,保留对POST参数、查询字符串的校验能力。示例自定义规则如下(若服务商支持):
# 让规则942440跳过对REQUEST_COOKIES的检测
SecRuleRemoveById 942440 "REQUEST_COOKIES"
# 让规则942450跳过对REQUEST_COOKIES的检测
SecRuleRemoveById 942450 "REQUEST_COOKIES"
  • 澳大利亚本地可优先考虑VentraIP、Crazy Domains等本土服务商,或SiteGround、Bluehost的澳大利亚节点,确认其支持ModSecurity自定义配置及CRS 3.x版本。

三、额外注意事项

  • 先将ModSecurity切换至仅检测模式运行一段时间,确认禁用规则或调整Cookie格式后无新误报,再切换回拦截模式。
  • 定期查看ModSecurity审计日志,及时发现新的误报规则,避免影响用户正常访问。

内容的提问来源于stack exchange,提问作者Ross Kelly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 04:32:35