計(jì)算機(jī)程序主要是輸入/輸出,安全問(wèn)題由此產(chǎn)生,凡是有輸入的地方都可能帶來(lái)安全風(fēng)險(xiǎn)。根據(jù)輸入的數(shù)據(jù)類(lèi)型,web應(yīng)用主要有數(shù)值型、字符型、文件型。
要消除風(fēng)險(xiǎn)就要對(duì)輸入的數(shù)據(jù)進(jìn)行檢查,對(duì)于網(wǎng)站應(yīng)用來(lái)說(shuō),檢查的位置主要是前端和后端。前端檢查只能防止正常狀況,沒(méi)法防止使用工具、程序繞開(kāi)檢查直接把數(shù)據(jù)發(fā)送給服務(wù)器。
安全問(wèn)題主要有以下幾方面
1)SQL、HTML、JS、OS命令注入;
2)XSS跨站腳本攻擊,利用站內(nèi)信任的用戶(hù),在web頁(yè)面插入惡意script代碼;
3)CSRF跨站請(qǐng)求偽造,通過(guò)偽裝來(lái)自信任用戶(hù)的請(qǐng)求來(lái)利用受信任的網(wǎng)站;
4)目錄遍歷漏洞;
5)參數(shù)篡改;
6)會(huì)話(huà)劫持。
防止攻擊的措施總結(jié)
1) 對(duì)用戶(hù)輸入的數(shù)據(jù)進(jìn)行全面安全檢查或過(guò)濾,尤其注意檢查是否包含SQL 或XSS特殊字符。驗(yàn)證用戶(hù)輸入的數(shù)據(jù),包括值、類(lèi)型、范圍等等,用驗(yàn)證控件進(jìn)行驗(yàn)證,這些檢查或過(guò)濾必須在服務(wù)器端、客戶(hù)端都進(jìn)行??蛻?hù)端服務(wù)端都要進(jìn)行驗(yàn)證,客戶(hù)端為了提高用戶(hù)體驗(yàn),服務(wù)端才可以有效防止威脅;
2)不要使用管理員權(quán)限的數(shù)據(jù)庫(kù)連接,不要使用動(dòng)態(tài)拼接sql;
3)機(jī)密信息加密,不能使用明文;
4)每個(gè)頁(yè)面加載時(shí),對(duì)用戶(hù)合法性進(jìn)行判斷;
5)登錄后session中的敏感信息需要加密,避免在永久cookies中存儲(chǔ)敏感信息,重要的cookie標(biāo)記為http only;
6)發(fā)送敏感信息時(shí)使用SSL、POST方式,盡量使用新型web HSTS安全協(xié)議;
7)不要直接拋出異常的詳細(xì)信息給用戶(hù),異常返回友好的頁(yè)面,防止用戶(hù)看到敏感信息;
8)在服務(wù)器與網(wǎng)絡(luò)的接口處配置防火墻,用于阻斷外界用戶(hù)對(duì)服務(wù)器的掃描和探測(cè);
9)限制網(wǎng)站后臺(tái)訪(fǎng)問(wèn)權(quán)限,如:禁止公網(wǎng)IP訪(fǎng)問(wèn)后臺(tái);禁止服務(wù)員使用弱口令;
10)關(guān)閉windows的8.3格式功能。DOS系統(tǒng)下的命令方式為8.3格式,即文件名不超過(guò)8個(gè)字符,擴(kuò)展名不超過(guò)3個(gè)字符。形如:???.exe 。現(xiàn)在Windows系統(tǒng)文件名長(zhǎng)度更長(zhǎng)可達(dá)255個(gè)字符了;
11)限制敏感頁(yè)面或目錄的訪(fǎng)問(wèn)權(quán)限;
12)項(xiàng)目發(fā)布前使用使用漏洞掃描軟件,如IBM appScan,UnisWebScanner,對(duì)安全性進(jìn)行評(píng)估。