CWE-500:宣告為public static的域沒有標記final缺陷簡介
在一個類中,非靜態成員變數對每一個物件都會有一個特定的值,在初始化非靜態變數的時候是不分配記憶體的,只有創立物件後才會分配,而且不同物件之間的同名非靜態變數是可以不同的;當用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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 陣列宣告為public final static缺陷陣列
- 程式碼安全測試第二十五期:陣列宣告為public final static漏洞缺陷陣列
- java中的Static、final、Static final各種用法Java
- static/final/常量模式模式
- 為什麼Java的main方法必須是public static void?JavaAI
- final修飾和static final修飾的區別
- static,private,final,abstract,protected
- 【目標區域捕獲-2】目標區域捕獲簡介
- 反射修改 static final 變數反射變數
- java中的static和final關鍵字Java
- private,public,protected,static不可以修飾區域性變數,方法裡的變數變數
- ASP.NET Razor – 標記簡介ASP.NET
- this,構造器,static,final,單例模式單例模式
- final與static關鍵字的區別?(skycto JEEditor)
- 目標沒有實現?那是因為你沒有做好計劃管理
- php class中public,private,protected,static的區別,以及例項PHP
- Java基礎——final和static關鍵字Java
- final關鍵字和static關鍵字
- 程式碼缺陷解讀:通用異常捕獲宣告缺陷漏洞
- 找不到 main 方法, 請將 main 方法定義為: public static void main(String[] args)AI
- 楊建允:沒有公域做不大,沒有私域做不穩
- public interface View介面和public interface ViewResolver介面介紹View
- 漏洞分析——變數缺陷漏洞及通用異常捕獲宣告缺陷漏洞變數
- final域、Atomic和ThreadLocalthread
- HTML 標題簡介HTML
- laravel 定義模型的區域性查詢作用域方法沒有PhpStorm沒有程式碼提示Laravel模型PHPORM
- PHP學習筆記4:標量型別的宣告PHP筆記型別
- 那些沒有記下的
- 領域驅動設計簡介 - danhaywood(點選標題見原文)
- 安全宣告標記語言SAML2.0初探
- 五種影像標註的簡介
- 你認為es5的設計缺陷有哪些?
- Django官方為什麼沒有標準專案結構Django
- Flutter 知識梳理 (Dart) - Dart 中 static, final, const 區別FlutterDart
- python函式作用域簡介Python函式
- Solidity語言學習筆記————25、作用域和宣告Solid筆記
- C 語言中 static 的作用介紹
- 第72篇 跨域的簡單介紹跨域