中科天齐倾情打造《悟空云课堂》旨在科普软件安全相关知识,助力企业有效防范软件安全漏洞,提升网络安全防护能力。本期主题为声明为public static的域没有标记final缺陷(CWE-500)漏洞的相关介绍。
一、什么是public static的域没有标记final缺陷?
对象包含未标记为final的公共静态字段,这可能允许以意外方式对其进行修改。
二、public static的域没有标记final缺陷构成条件有哪些?
例如:
public class SomeAppClass {
public static String appPropertiesFile = "app/Application.properties";
...
}
具有未标记为final的public static可能会允许该变量以应用程序不希望的方式更改。在此示例中,可以修改String变量以指示不存在的属性文件上的其他内容,这可能导致应用程序崩溃或导致意外行为。
三、public static的域没有标记final缺陷的后果有哪些?
应用程序中的任何类都可以在没有访问器的情况下读取公共静态变量,并在没有变量器的情况下对其进行更改。
四、public static的域没有标记final缺陷样例:
package Static_Field_Not_Final;
public class Static_Field_Not_Final
{
/* FLAW: public static fields should be marked final */
public static String defaultError = "The value you entered was not understood. Please try again."; // bad 非final的public static字段
public static final String defaultRight = "GOOD"; // good 非final的public static字段
public void bad() { }
}
使用悟空软件源代码静态检测工具进行代码检测,检测结果如下:
“声明为public static的域没有标记final缺陷”在CWE中编号为:CWE-500: Public Static Field Not Marked Final
软件安全 网络安全的最后一道防线
中科天齐公司是在中科院计算技术研究所的大力推动下
以中科院计算所国际领先的自主研究成果
为基础组建的高新技术企业
关键词标签:悟空云课堂 public static 软件安全检测 代码缺陷检测 代码漏洞修复