[發明專利]基于函數訪問全局變量的防御性編程方法有效
| 申請號: | 201010135876.9 | 申請日: | 2010-03-30 |
| 公開(公告)號: | CN101807157A | 公開(公告)日: | 2010-08-18 |
| 發明(設計)人: | 束元;蔡李峰;朱騫 | 申請(專利權)人: | 南京恩瑞特實業有限公司 |
| 主分類號: | G06F9/45 | 分類號: | G06F9/45 |
| 代理公司: | 南京天華專利代理有限責任公司 32218 | 代理人: | 徐冬濤;瞿網蘭 |
| 地址: | 211110 江蘇*** | 國省代碼: | 江蘇;32 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 基于 函數 訪問 全局變量 防御性 編程 方法 | ||
技術領域
本發明涉及一種計算機程序的安全方法,尤其是一種在有防御性編程要 求的軟件中使用的一種安全防御方法,具體地說是一種基于函數訪問全局變 量的防御性編程方法。
背景技術
眾所周知,防御性編程是一種細致、謹慎的編程方法。為了開發可靠的 軟件,需要設計系統中的每個組件,以使其盡可能地“保護”自己。通過明 確地在代碼中對設想錯誤進行檢查,防御設想錯誤的發生。這種努力防止(至 少是察覺)代碼被可能錯誤的行為方式調用時產生不確定的結果。防御性編 程可以盡早發現較小的問題,而不是等到它們發展成大的災難的時候才發現。 當然,防御性編程并不能排除所有的程序錯誤。但是問題所帶來的麻煩將會 減少,并易于修改。防御性編程是一種防衛方式,而不是一種補救形式。目 前常用的防御性編程方法注重對函數體的防御,但在編程中不可避免地要使 用到全局變量。如果只保護了函數體而忽視了調用全局變量時的防御措施, 就在防御體系上出現了短板。
發明內容
本發明的目的是針對現有的防御編程方法大多忽略了全局變量造成的安 全問題,設計一種基于函數訪問全局變量的防御性編程方法。
本發明的技術方案是:
一種基于函數訪問全局變量的防御性編程方法,其特征是它包括以下三 個方面:全局變量名稱隱藏,全局變量訪問函數和全局變量數據結構的聲明, 定義全局變量訪問函數;所述的全局變量名稱隱藏是指在被引用的頭文件中 不出現被保護的全局變量的聲明,并將定義文件作為二進制文件提供或通過 編程規范文件規定頭文件聲明以外的名稱不可被使用即完成了全局變量名稱 的隱藏;所述的全局變量訪問函數和全局變量數據結構的聲明是指在頭文件 中聲明全局變量的數據結構和全局變量的訪問函數,并在全局變量數據結構 中加入互斥鎖,將獲取函數與修改函數分開聲明;所述的定義全局變量訪問 函數是指在全局變量訪問函數的定義階段選擇斷言防御或其它已有函數防御 方法、編程密碼防御、訪問上下文防御和互斥防御。
定義全局變量訪問函數時所采用的防御包括全局變量的獲取和修改編程 密碼保護防御、全局變量的上下文訪問控制防御和全局變量的互斥訪問控制 防御。
本發明的有益效果:
1.通過全局變量訪問密碼與訪問函數的一致性管理,防止了編程中訪問 錯誤的全局變量。
2.通過區別獲取和修改全局變量的訪問密碼,做到不同權限的全局變量 訪問。
3.通過上下文訪問控制防御可以在多任務系統中通過判斷上下文屏蔽無 權訪問該全局變量的任務訪問。
4.通過互斥訪問控制防御可以確保該全局變量被訪問過程的原子性。
具體實施方式
下面結合實施例對本發明作進一步的說明。
一種基于函數訪問全局變量的防御性編程方法,結合已有的防御性編程方 法對軟件進行更全面的防御,它還可以通過使用函數的防御性編程方法對全 局變量進行防御,具體步驟包括隱藏全局變量名稱、封裝全局變量訪問函數 接口和全局變量訪問函數的防御功能,分別按下述方法實現:
(1).隱藏全局變量名稱;在被引用的頭文件中不出現被保護的全局變 量的聲明,并將定義文件作為二進制文件提供或通過編程規范文件規定頭文 件聲明以外的名稱不可被使用即完成了全局變量名稱的隱藏。
(2).封裝全局變量訪問函數接口,包括全局變量數據結構和訪問函數的聲 明;如頭文件關鍵內容所示,在頭文件中聲明全局變量的數據結構和全局變 量的訪問函數,建議在全局變量數據結構中加入互斥鎖,建議將獲取函數(如 global_var_get)與修改函數(如global_var_set)分開聲明。
(3).全局變量訪問函數的防御功能1:全局變量的獲取和修改編程密碼保 護防御;如斷言防御或其它已有函數防御方法、編程密碼防御等;
(4).全局變量訪問函數的防御功能2:全局變量的上下文訪問控制防御;
(5).全局變量訪問函數的防御功能3:全局變量的互斥訪問控制防御。
以下是一個具體的對全局變量實現防御的軟件:
頭文件關鍵內容:
typedef?struct
{
??BOOL?locked;//訪問互斥鎖
??char?var_char;
??int?var_int;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于南京恩瑞特實業有限公司,未經南京恩瑞特實業有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.17sss.com.cn/pat/books/201010135876.9/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種陰道給藥器
- 下一篇:小兒頭部留置針保護帽





