資源描述:
《tencent編碼安全規(guī)范》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、編碼安全規(guī)范V1.0擬制:安全中心關(guān)鍵字:安全,編碼規(guī)范內(nèi)容范疇:信息安全文檔類別:開發(fā)技術(shù)文檔保密級(jí)別:保密文件名:編碼安全規(guī)范.doc范圍:全體員工版本:1.0文檔歷史日期作者版本號(hào)備注wolfliuV0.1applelinV0.22007-02-19Tony,CoolcyangV0.3分割了一下原來的V0.2的文檔,抽出一個(gè)單列的格式,以便后續(xù)修改。2007-2-28applelinV0.4根據(jù)新的格式整理并補(bǔ)充2007-3-8stevezhengV0.52007-3-12DumapplelinV0.6補(bǔ)充示例第一篇防止堆棧
2、溢出類漏洞51.1對任何用戶輸入數(shù)據(jù)必須首先校驗(yàn)其長度,避免由于長度越界引起的緩沖區(qū)溢出。51.2C++和MFC程序字符串處理,選擇現(xiàn)有的處理類庫,禁止自己編寫類庫。51.3編碼中禁止使用危險(xiǎn)函數(shù)。51.4Unicode和ANSI緩沖區(qū)大小不匹配問題,必須注意大小計(jì)算的單位。61.5不將用戶輸入串拼接到任何格式字符串內(nèi)。避免字符格式化漏洞。71.6多個(gè)字符串存儲(chǔ)在一個(gè)數(shù)據(jù)區(qū)時(shí),盡量不依靠分隔符區(qū)分邊界。用戶數(shù)據(jù)需要轉(zhuǎn)義后傳輸,存儲(chǔ)。81.7CC++中數(shù)組大小應(yīng)該是sizeof(pArray)/sizof(pArray[0])81
3、.8其他可能出現(xiàn)緩沖區(qū)溢出的函數(shù)8第二篇防止SQL惡意構(gòu)造性漏洞92.1防止SQL惡意構(gòu)造漏洞。不直接使用外部輸入的數(shù)字、字符串拼接SQL語句。92.2web編程對于用戶的任何輸入必須做關(guān)鍵字過濾10第三篇防止目錄,文件名惡意構(gòu)造性漏洞103.1必須:禁止使用外部輸入字串作為下列函數(shù)的參數(shù)的一部分,確保用戶不能欺騙系統(tǒng)從而執(zhí)行任意命令。如果必須傳遞參數(shù),從數(shù)據(jù)庫、文件、管道、套接字等IPC通信方式傳遞。103.4驗(yàn)證所有可能的數(shù)據(jù),甚至包括數(shù)據(jù)庫中的數(shù)據(jù),本地文件。113.5不將用戶輸入串直接加入html文件、js腳本、xml文件
4、、配置文件、模板文件。123.6避免使用有安全風(fēng)險(xiǎn)的windowsAPI。12第四篇防止內(nèi)存堆溢出漏洞134.1分配內(nèi)存,要判斷返回值。134.2內(nèi)存操作,特別是內(nèi)存拷貝,必須檢查長度是否超出分配內(nèi)存的大小134.3對于無效指針,一定要置NULL,同時(shí)數(shù)組不要保存無效指針144.4時(shí)刻注意表達(dá)式是否會(huì)上溢、下溢144.5過程/函數(shù)中分配的資源(包括內(nèi)存、文件等),在過程/函數(shù)退出之前要釋放。154.6MFC中使用CArray刪除數(shù)據(jù),需要倒后遍歷.15第五篇其他一些注意事項(xiàng)155.1檢查所有與安全相關(guān)的函數(shù)的返回值155.2調(diào)用可
5、能被預(yù)測的函數(shù)前,引入隨機(jī)量165.3在代碼中添加安全性注釋16關(guān)鍵詞:摘要:為了提高公司軟件安全質(zhì)量,公司對安全編程作出統(tǒng)一的規(guī)范約束。本規(guī)范由安全中心負(fù)責(zé)維護(hù)更新。本規(guī)范是一個(gè)最初級(jí)的基本規(guī)范。所有的開發(fā)者均應(yīng)熟練掌握。本規(guī)范的示例多以CC++為背景??s略語清單:必須:強(qiáng)制必須遵守的原則。建議:可以加以考慮的原則。禁止:必須加以避免的原則。示例:對此規(guī)則或建議從正、反兩個(gè)方面給出例子。本規(guī)范從屬于編碼層面,不包含應(yīng)用安全架構(gòu)設(shè)計(jì),不包含應(yīng)用安全部署以及應(yīng)用安全運(yùn)營等方面的內(nèi)容。開發(fā)者除了本規(guī)范以外,還必須熟悉App設(shè)計(jì)方面的
6、安全規(guī)范,協(xié)議接口設(shè)計(jì)規(guī)范,熟悉部署層面安全規(guī)范,以及熟悉運(yùn)營層面的安全規(guī)范。在編碼層面,我們主要關(guān)心以下內(nèi)容:(1)防止堆棧溢出類漏洞(*)防止緩沖區(qū)溢出漏洞(2)防止惡意SQL構(gòu)造性漏洞(3)防止文件名,路徑惡意構(gòu)造漏洞(4)防止內(nèi)存堆溢出類漏洞,防止進(jìn)程CoreDump的漏洞第一篇防止堆棧溢出類漏洞1.1對任何用戶輸入數(shù)據(jù)必須首先校驗(yàn)其長度,避免由于長度越界引起的緩沖區(qū)溢出。字符串長度計(jì)算。盡量使用單獨(dú)保存的長度變量或read等輸入函數(shù)返回的長度來計(jì)算字符串,不能完全相信strlen()。示例:main(intargc,ch
7、ar*argv[]){charbuff[128]={0};strcpy(buff,argv[1])//可能溢出}1.2C++和MFC程序字符串處理,選擇現(xiàn)有的處理類庫,禁止自己編寫類庫。建議:使用MFC的Cstring類、ATL的CComBSTR類或者STL的string類等等。1.3編碼中禁止使用危險(xiǎn)函數(shù)。禁止:禁止使用替換函數(shù)strcpy,wcscpy,lstrcpy,strcpy,_tcscpy,_ftcscpy,_mbscpystrncpy,wcsncpy,lstrcpyn,_tcsncpy,_ftcsncpy,_mbsn
8、cpystrcat,wcscat,lstrcat,strcat,_tcscat,_ftcscat,_mbscatstrncatvsprintf,vswprintf,wvsprintf,wvnsprintf,_vstprintf_vsnprintf,