【正文】
P、PHP、JSP、CGI等由動態(tài)語言生成的頁面。通過瀏覽器查看源碼的功能,能夠查看動態(tài)頁面中的普通注釋信息,但看不到隱藏注釋(隱藏注釋不會發(fā)送給客戶端)。因此,為了減少信息泄漏,建議只使用隱藏注釋。實施指導(dǎo):form action=%隱藏注釋1%textarea name=a length=200/textareainput type=submit value=test/form%//隱藏注釋2 str=(String)(a)。/*隱藏注釋3*/str = (,amp。lt。)。(str)。% 歸檔要求:版本歸檔時,必須刪除開發(fā)過程(包括現(xiàn)場定制)中的臨時文件、備份文件、無用目錄等。說明:,Web服務(wù)器會將這些文件以文本方式呈現(xiàn)給惡意用戶,造成代碼的泄漏,嚴(yán)重威脅Web應(yīng)用的安全。實施指導(dǎo):在web應(yīng)用的根目錄下執(zhí)行以下命令:find ./ name *.old o name *.OLD o name *.bak o name *.BAK o name *.temp o name *.tmp o name *.save o name *.backup o name *.orig o name *.000 o name *~ o name *~1 o name *.dwt o name *.tpl o name *.zip o name *.7z o name *.rar o name *.gz o name *.tgz o name *.tar o name *.bz2分析查找到的文件是否臨時文件、備份文件、無用文件,如果是則刪除。:歸檔的頁面程序文件的擴(kuò)展名必須使用小寫字母。說明:很多Web server對大小寫是敏感的,但對后綴的大小寫映像并沒有做正確的處理。攻擊者只要在URL中將JSP文件后綴從小寫變成大寫,Web服務(wù)器就不能正確處理這個文件后綴,而將其當(dāng)作純文本顯示。攻擊者可以通過查看源碼獲得這些程序的源代碼。因此,歸檔的頁面程序文件的擴(kuò)展名必須使用小寫字母,如jsp、html、htm、asp等頁面程序文件的擴(kuò)展名分別為jsp、html、htm、asp。:歸檔的程序文件中禁止保留調(diào)試用的代碼。說明:這里的“調(diào)試用的代碼”是指開發(fā)過程中進(jìn)行臨時調(diào)試所用的、在Web應(yīng)用運行過程中不需要使用到的Web頁面代碼或servlet代碼。例如:在代碼開發(fā)過程中為了測試一個添加帳號的功能,開發(fā)人員臨時編寫了一個JSP頁面進(jìn)行測試,那么在歸檔時,該JSP頁面必須刪除,以免被攻擊者利用。 其他:對于JSP語言,所有servlet必須進(jìn)行靜態(tài)映射,不允許通過絕對路徑訪問。說明:,使用servlet時,引用它的URI映射,而不允許通過絕對路徑訪問。:對客戶端提交的表單請求進(jìn)行合法性校驗,防止跨站請求偽造攻擊。說明:跨站請求偽造(CSRF)是一種挾制終端用戶在當(dāng)前已登錄的Web應(yīng)用程序上執(zhí)行非本意的操作的攻擊方法。攻擊者可以迫使用戶去執(zhí)行攻擊者預(yù)先設(shè)置的操作,例如,如果用戶登錄網(wǎng)絡(luò)銀行去查看其存款余額,他沒有退出網(wǎng)絡(luò)銀行系統(tǒng)就去了自己喜歡的論壇去灌水,如果攻擊者在論壇中精心構(gòu)造了一個惡意的鏈接并誘使該用戶點擊了該鏈接,那么該用戶在網(wǎng)絡(luò)銀行帳戶中的資金就有可能被轉(zhuǎn)移到攻擊者指定的帳戶中。當(dāng)CSRF針對普通用戶發(fā)動攻擊時,將對終端用戶的數(shù)據(jù)和操作指令構(gòu)成嚴(yán)重的威脅;當(dāng)受攻擊的終端用戶具有管理員帳戶的時候,CSRF攻擊將危及整個Web應(yīng)用程序。實施指導(dǎo):方法一:為每個session創(chuàng)建唯一的隨機(jī)字符串,并在受理請求時驗證form action=/ method=post input type=hidden name=randomStr value=%=().getAttribute(randomStr)% ....../form//判斷客戶端提交的隨機(jī)字符串是否正確String randomStr = (String)(randomStr)。if(randomStr == null) randomStr=。if((().getAttribute(randomStr))){//處理請求}else{//跨站請求攻擊,注銷會話}方法二:受理重要操作請求時,在相應(yīng)的表單頁面增加圖片驗證碼,用戶提交操作請求的同時提交驗證碼,在服務(wù)器端先判斷用戶提交的驗證碼是否正確,驗證碼正確再受理操作請求。方法三:向電信軟件與核心網(wǎng)網(wǎng)絡(luò)安全工程部申請WAF CBB,并部署到應(yīng)用中,啟用AntiCSRF功能,具體方法參考WAF CBB的用戶手冊。:,如果只是要顯示文本內(nèi)容,必須在innerHTML取得內(nèi)容后,再用正則表達(dá)式去除HTML標(biāo)簽,以預(yù)防跨站腳本。說明:,容易被利用,導(dǎo)致跨站腳本。實施指導(dǎo):a href=javascript:alert((39。test39。).(/.+?/gim,39。39。))無HTML,符合W3C標(biāo)準(zhǔn)/a備注:,.innerText只顯示文本內(nèi)容不顯示HTML標(biāo)簽,不能適用于所有瀏覽器(但適用于IE瀏覽器)。:禁止使用eval()函數(shù)來處理用戶提交的字符串。說明:eval()函數(shù)存在安全隱患,該函數(shù)可以把輸入的字符串當(dāng)作JavaScript表達(dá)式執(zhí)行,容易被惡意用戶利用。 :關(guān)閉登錄窗體表單中的自動填充功能,以防止瀏覽器記錄用戶名和口令。說明:瀏覽器都具有自動保存用戶輸入數(shù)據(jù)和自動填充數(shù)據(jù)的能力。為了保障用戶名和口令的安全,必須關(guān)閉自動填充選項,指示瀏覽器不要存儲登錄窗口中用戶名、口令等敏感信息。實施指導(dǎo):在form表單頭中增加選項(autoplete=off),例如:form action= name=login method=post autoplete=off:防止網(wǎng)頁被框架盜鏈或者點擊劫持。說明:框架盜鏈和點擊劫持(ClickJacking)都利用到框架技術(shù),防范措施就是防止網(wǎng)頁被框架。實施指導(dǎo):方法一:在每個網(wǎng)頁上增加如下腳本來禁止iframe嵌套: script if(top != self) = 。/script方法二:向電信軟件與核心網(wǎng)網(wǎng)絡(luò)安全工程部申請WAF CBB,并部署到應(yīng)用中,啟用AntiClickjackMode功能,具體方法參考WAF CBB的用戶手冊。 PHP:禁止使用phpinfo()。說明:phpinfo()函數(shù)提供了詳細(xì)的服務(wù)器PHP環(huán)境配置信息,是PHP提供的一個比較方便的排錯工具。但是往往因為開發(fā)人員的一時疏忽,把帶有phpinfo()的頁面部署到生產(chǎn)環(huán)境上,造成嚴(yán)重的信息泄露,給潛在攻擊者提供了很大的便利。因此在生產(chǎn)環(huán)境中應(yīng)禁止使用phpinfo()函數(shù),以避免不必要的安全隱患。實施指導(dǎo):,把“phpinfo”添加到清單中:disable_functions=phpinfo備注:如果要禁用多個函數(shù),函數(shù)名之間用逗號隔開。:避免使用eval()、exec()、passthru()、popen()、proc_open()、system()、shell_exec()、ptl_exec(),如非得使用,必須對輸入?yún)?shù)進(jìn)行嚴(yán)格的輸入校驗(如:長度、范圍、類型校驗),并使用escapeshellcmd() 、escapeshellarg()函數(shù)對其參數(shù)進(jìn)行轉(zhuǎn)義處理。說明:這些是PHP用于調(diào)用底層系統(tǒng)命令的函數(shù),如對其參數(shù)過濾不嚴(yán),將容易導(dǎo)致“系統(tǒng)命令執(zhí)行”漏洞,使黑客輕易地執(zhí)行系統(tǒng)命令并獲得服務(wù)器的shell權(quán)限。另外所謂的webshell會通過這些函數(shù)跟底層系統(tǒng)進(jìn)行交互,因此關(guān)閉這些函數(shù)可有效地降低webshell的安全威脅。實施指導(dǎo):當(dāng)不使用這些函數(shù)時,需通過disable_functions配置項禁止這些函數(shù)的使用:,把要禁用的函數(shù)添加到disable_functions參數(shù)值中,多個函數(shù),用逗號分開,例如:disable_functions=phpinfo,get_cfg_var,eval,exec,passthru,popen,proc_open,system,shell_exec,ptl_exec當(dāng)使用這些函數(shù)時,應(yīng)使用escapeshellcmd()或escapeshellarg()對其參數(shù)進(jìn)行過濾。escapeshellcmd():?php$mand = 39。./configure 39。.$_POST[39。configure_options39。]。$escaped_mand = escapeshellcmd($mand)。system($escaped_mand)。?escapeshellarg():?phpsystem(39。ls 39。 . escapeshellarg($dir))。?:在使用include()、include_once()、require()、require_once()、show_source()、highlight_file()、readfile()、file_get_contents()、fopen()、file()等文件讀取函數(shù)時,應(yīng)對參數(shù)進(jìn)行嚴(yán)格的合規(guī)性檢查,避免直接使用客戶端輸入作為參數(shù),必要時應(yīng)進(jìn)行白名單限制。說明:對這些函數(shù)的參數(shù)檢查不嚴(yán)會很容易導(dǎo)致遠(yuǎn)程命令執(zhí)行漏洞,給系統(tǒng)帶來不必要的安全隱患。實施指導(dǎo):$lang = preg_replace(39。/[^azAZ09_]/39。, 39。39。, $_GET[39。lang39。])。switch ($lang):case “en” : include(“”)。case “”: include(“”)。default: include(“”)。endswitch。:避免使用preg_replace()函數(shù)。當(dāng)使用/e修飾符,preg_replace會將 replacement 參數(shù)當(dāng)作 PHP 代碼執(zhí)行,如使用不當(dāng)將容易引入漏洞,建議使用preg_match()替代。:明確使用$_GET、$_POST、$_COOKIE而不是$_REQUEST獲取用戶請求數(shù)據(jù),這有助于降低漏洞被成功利用的概率。5 Web安全配置規(guī)范根據(jù)Web應(yīng)用所選用的Web容器,按照相應(yīng)的配置規(guī)范進(jìn)行安全配置,當(dāng)前可供使用的安全配置規(guī)范如下:表3 Web容器安全配置規(guī)范列表規(guī)范名稱IIS 安全配置規(guī)范Apache 安全配置規(guī)范Tomcat 安全配置規(guī)范JBoss 安全配置規(guī)范Resin 安全配置規(guī)范WebLogic安全配置規(guī)范6 配套CBB介紹 WAF CBB? 提供功能:1) l 防范CSRF(跨站請求偽造)攻擊2) l 防范XSS攻擊3) l 防范MML注入4) l 防范目錄遍歷/路徑遍歷5) l 防范字符串型的SQL注入攻擊(絕大部分的SQL注入為字符串型的)6) l 防范空字符注入7) l 防范點擊劫持8) l 防范HTTP會話劫持9) l 防范功能可配置(也就是可以通過配置項開啟或關(guān)閉對應(yīng)的防范功能)10) URI白名單功能,允許配置免檢的URI。11) 輸入校驗:可以為各輸入?yún)?shù)配置輸入校驗規(guī)則(正則表達(dá)式),在服務(wù)器端實現(xiàn)嚴(yán)格的輸入校驗。? 獲取方法:WAF CBB? 支持人員:何偉祥(00162822) 驗證碼CBB? 提供功能:實現(xiàn)了“”的要求。? 獲取方法:驗證碼CBB? 支持人員:何偉祥(00162822)7 附件 附件1 Tomcat配置SSL指導(dǎo) 附件2 Web Service 安全接入開發(fā)指導(dǎo) 附件3 客戶端IP鑒權(quán)實施指導(dǎo) 附件4 口令安全要求 附件5 Web權(quán)限管理設(shè)計規(guī)格說明書 專業(yè)整理分享