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

Asp.net(C#) Fortify扫描报Trust Boundary Violation错误如何解决?

Fortify扫描Trust Boundary Violation(信任边界违规)问题解决方案

报错含义说明

Fortify给出的报错翻译为:

xyz.aspx.cs中的set_xxx()方法将可信数据与不可信数据混合在同一数据结构中,这可能导致开发人员错误地信任未校验的数据。

触发原因

  • Fortify的安全规则中,ASP.NET的Session属于服务端可信存储区域,默认认为存入Session的数据都是经过合法性校验的可信数据
  • 你提供的属性set方法未对传入的value做任何校验就直接写入Session,扫描器判定存在将未验证的外部不可信输入直接存入可信区的风险,因此触发信任边界违规的告警。即使业务运行正常,也不符合静态安全扫描的规则要求。

修复方案

方案1:在set方法中补充业务校验逻辑

根据该属性存储的内容的业务规则,增加对应的合法性校验,只有符合规则的数值才允许写入Session,示例代码如下:

private string xxx
{
    get
    {
        // 优化写法,等价于原有逻辑
        return Session["_xyz"] as string;
    }
    set 
    { 
        // 此处校验规则需替换为你实际业务的校验逻辑,比如用户名、邮箱、手机号等对应的正则或判断条件
        if (!string.IsNullOrWhiteSpace(value) && value.Length <= 20 && !value.Contains('<'))
        {
            Session["_xyz"] = value;
        }
        else
        {
            // 可根据业务需要选择抛出异常、赋值默认值或打告警日志
            throw new ArgumentException("xxx属性传入值不符合业务规则要求");
        }
    }
}

该方案可以从根本上解决风险,是优先推荐的修复方式。

方案2:确认无风险后添加扫描抑制注解

如果可以100%确认所有调用该属性set方法的上游逻辑,都已经提前完成了全量的合法性校验,传入的value不存在不可信输入的可能,可以添加Fortify认可的抑制注解,明确说明理由来消除误报告警:

private string xxx
{
    get
    {
        return Session["_xyz"] as string;
    }
    // 注解中的规则ID可根据你实际使用的Fortify版本对应的规则ID调整
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Security", "Trust Boundary Violation", Justification = "所有调用该set方法的上游逻辑均已完成参数合法性校验,传入值均为受控可信数据,不存在安全风险")]
    set 
    { 
        Session["_xyz"] = value; 
    }
}

注意:禁止在未确认风险的情况下随意添加抑制注解,避免遗漏真实的安全问题


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 23:48:01