静态代码分析警告CA2104有哪些安全问题?

时间:2018-03-20 19:41:25

标签: visual-studio static-analysis

我最近在解决方案中在Visual Studio中运行静态代码分析,并看到一行标记为CA2104。可变对象标记为ReadOnly。我理解为什么将可变类型设置为ReadOnly是没有意义的,因为对象上的属性可以改变,但我不明白为什么这被认为是安全问题。

这似乎更像是数据完整性/代码质量问题。想到的唯一与安全相关的事情是,如果用户能够以某种方式更改属性,它们可能会使对象以不同的方式运行,但对于任何可变对象都不会这样做吗?我错过了什么?

编辑:我看到这被标记为可能重复。我仔细阅读了相关问题,但我觉得这不能回答我的问题。我理解CA2104警告说的是什么,但是我不明白为什么这被归类为安全问题。这就是我想要了解的内容。

1 个答案:

答案 0 :(得分:0)

在此阅读documentation。我相信提出警告是因为虽然该属性标记为只读。用户无法更改只读属性的属性。

用户将成为包含父类型的程序集/库的使用者。

由于属性是只读的,因此可能已设置,因为作者不希望更改/重新分配属性,但没有什么可以阻止更改子对象上的任何属性。这与只读的含义相反。因此警告

我认为这是一个与安全性相关的微妙链接,但如果图书馆作者想要保护暴露的对象而不允许它被修改但仍然没有实际发生的情况,那么它仍然有效。