静态代码分析警告 CA2104 都有哪些安全问题?
Posted
技术标签:
【中文标题】静态代码分析警告 CA2104 都有哪些安全问题?【英文标题】:What are the security concerns with static code analysis warning CA2104?静态代码分析警告 CA2104 有哪些安全问题? 【发布时间】:2018-03-20 19:41:25 【问题描述】:我最近在 Visual Studio 中对一个解决方案进行了静态代码分析,发现一行代码被标记为 CA2104。标记为只读的可变对象。我理解为什么将可变类型设置为 ReadOnly 没有意义,因为对象上的属性可以更改,但我不明白为什么这被视为安全问题。
这似乎更像是数据完整性/代码质量问题。唯一想到的与安全相关的事情是,如果用户能够以某种方式更改属性,他们可能会使对象以不同的方式表现,但对于任何可变对象来说不是这样吗?我错过了什么?
编辑:我看到这被标记为可能重复。我通读了链接的问题,但我认为这不能回答我的问题。我理解 CA2104 警告的意思,但我不明白为什么这被归类为安全问题。这就是我想要理解的。
【问题讨论】:
Do not declare read only mutable reference types - why not?的可能重复 【参考方案1】:已阅读此内容的documentation。我相信会发出警告,因为尽管该属性被标记为只读。没有什么可以阻止用户更改只读属性的属性。
用户将是包含父类型的程序集/库的消费者。
由于该属性是只读的,它可能已被设置,因为作者不希望该属性被更改/重新分配,但没有什么可以阻止子对象上的任何属性被更改。这与只读的含义相反。因此警告
我认为这是一个与安全性相关的脆弱链接,但如果库作者想要保护暴露的对象而不允许对其进行修改,那么它仍然有效,但实际情况并非如此。
【讨论】:
以上是关于静态代码分析警告 CA2104 都有哪些安全问题?的主要内容,如果未能解决你的问题,请参考以下文章
分析 FxCop / 代码分析警告 CA1506: AvoidExcessiveClassCoupling
名为 MultiString 的类的 Visual Studio 2010 代码分析警告 CA1704
代码分析警告 CA2000:在对象“new ContainerControlledLifetimeManager()”上调用 Dispose