ITPub博客

首页 > IT基础架构 > 网络安全 > CWE-500:声明为public static的域没有标记final缺陷简介

CWE-500:声明为public static的域没有标记final缺陷简介

原创 网络安全 作者:zktq2021 时间:2021-08-09 13:07:25 0 删除 编辑

在一个类中,非静态成员变量对每一个对象都会有一个特定的值,在初始化非静态变量的时候是不分配内存的,只有创立对象后才会分配,而且不同对象之间的同名非静态变量是可以不同的;当用static修饰变量,一个类的所有对象都共享这个属性,若不加final,当一个对象对static变量修改的时候,这个类的所有对象的这个属性都会改变。

一、什么是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


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/70000012/viewspace-2785942/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
中科天齐软件源代码静态检测工具(SAST),为客户在软件开发过程中查找、识别、追踪绝大部分主流编码中的技术漏洞与逻辑漏洞,帮助用户提升抵御网络攻击、防止数据泄露等安全问题的能力。

注册时间:2021-05-14

  • 博文量
    222
  • 访问量
    77413