我很确定我从FindBugs那里得到了误报。我的代码如下:
public class MyClass {
protected static String fileNamePrefix;
}
这就是我得到的错误:
字段应受包保护
可变静态字段可能被恶意代码或意外更改。可以对该字段进行包保护以避免此漏洞。
Bug种类和模式:MS - MS_PKGPROTECT
这真是假阳性还是我错过了什么?
答案 0 :(得分:0)
protected modifier允许第三方子类意外地提升对字段的访问权。
class MyAccidentSubClass extends MyClass {
static {
fileNamePrefix = "../" + fileNamePrefix;
}
}
FindBugs指出,'protected'不会保护该字段免受野外意外公共访问。如果该字段受到包保护,那么我们知道其目的是在可信赖的朋友之间分享一些秘密。
通常,隐藏字段并创建访问器方法,因为它在封装,线程安全和延迟加载方面更灵活。