網(wǎng)站應(yīng)用的攻擊和防御
Web應(yīng)用主要面對XSS攻擊币厕、SQL注入超营、CSRF和Session劫持等安全問題。
XSS攻擊
XSS攻擊即跨站點(diǎn)腳本攻擊(Cross Site Script)膳叨,指黑客通過篡改網(wǎng)頁间景,注入惡意HTML腳本,在用戶瀏覽網(wǎng)頁外偷霉,控制用戶瀏覽器進(jìn)行惡意操作的一種攻擊方式迄委。
常見的XSS攻擊類型主要有兩種:反射型和注入型。
應(yīng)對手段:
- 消毒
對用戶輸入信息進(jìn)行過濾和消毒處理 - HttpOnly
瀏覽器禁止頁面JavaScript訪問帶有HttpOnly屬性的Cookie类少,防止XSS攻擊竊取Cookie叙身。
注入攻擊
SQL注入
攻擊者在HTTP請求中注入惡意SQL命令堆生,服務(wù)器用請求參數(shù)構(gòu)造數(shù)據(jù)庫SQL命令時(shí)己英,惡意SQL被一起構(gòu)造,并在數(shù)據(jù)庫中執(zhí)行弄跌。
防御SQL攻擊首先要避免被攻擊者猜測到數(shù)據(jù)庫表結(jié)構(gòu)信息妓忍,此外還可以:
- 消毒:對請求參數(shù)消毒虏两,通過正則匹配過濾請求參數(shù)中可能注入的SQL
- 參數(shù)綁定:使用預(yù)編譯手段,綁定參數(shù)世剖。這樣攻擊者的惡意SQL就會(huì)被當(dāng)做SQL參數(shù)定罢,而不是SQL命令被執(zhí)行。
OS注入
攻擊者根據(jù)具體應(yīng)用旁瘫,注入OS命令祖凫、編程語言代碼等,利用程序漏洞酬凳,達(dá)到攻擊目的惠况。
CSRF攻擊
CSRF(Cross Site Request Forgery),跨站點(diǎn)請求偽造宁仔,攻擊者通過跨站請求稠屠,以合法用戶的身份進(jìn)行非法操作,如轉(zhuǎn)賬交易、發(fā)表評論等权埠。其核心是利用了瀏覽器的Cookie或服務(wù)器的Session策略榨了,盜取用戶身份。
CSRF的防御手段主要是識(shí)別請求者身份攘蔽,主要有下面幾種方法:
- 表單Token
在頁面表單中增加一個(gè)隨機(jī)數(shù)作為Token龙屉,每次響應(yīng)頁面的Token都不相同,從正常頁面提交的請求會(huì)包含該Token满俗,而偽造的請求無法獲取該值转捕。 - 驗(yàn)證碼
- Referer Check
HTTP請求頭的Referer域中記錄著請求來源,可通過檢查請求來源漫雷,驗(yàn)證其是否合法瓜富。很多網(wǎng)站利用這個(gè)功能實(shí)現(xiàn)圖片的防盜鏈。
其他攻擊和漏洞
- 錯(cuò)誤回顯:服務(wù)器端未處理的異常堆棧信息會(huì)直接輸出到客戶端瀏覽器降盹。黑客會(huì)故意制造非法輸入,是系統(tǒng)運(yùn)行出錯(cuò)谤辜,獲取異常信息蓄坏,并從中獲取系統(tǒng)漏洞。應(yīng)對辦法就是丑念,服務(wù)器異常跳轉(zhuǎn)500頁面到特定的錯(cuò)誤頁面涡戳。
- HTML注釋:黑客通過這些注釋信息尋找漏洞。應(yīng)對辦法就是在程序最終發(fā)布前對代碼review或自動(dòng)掃描脯倚,去掉注釋渔彰。
- 文件上傳:黑客通過上傳可執(zhí)行程序,攻擊服務(wù)器推正。最有效的防御手段是設(shè)置上傳的文件白名單恍涂,只允許上傳可靠的文件類型。此外植榕,還可以修改文件名再沧、使用專門的存儲(chǔ)等手段。
- 路徑遍歷:攻擊者在請求的URL中使用相對路徑尊残,遍歷系統(tǒng)未開放的目錄和文件炒瘸。防御辦法是將JS、CSS等資源文件部署在獨(dú)立服務(wù)器寝衫、使用獨(dú)立域名顷扩,其他文件不適用靜態(tài)URL訪問,動(dòng)態(tài)參數(shù)不包含路徑信息慰毅。
Web應(yīng)用防火墻
利用Web應(yīng)用防火墻隘截,統(tǒng)一攔截請求,過濾惡意參數(shù)、自動(dòng)消毒技俐、添加Token乘陪,并且能夠根據(jù)最新攻擊和漏洞情報(bào),不斷升級對策雕擂,處理掉大多數(shù)網(wǎng)站攻擊啡邑。如開源的ModSecurity。
網(wǎng)站安全漏洞掃描
網(wǎng)站安全漏洞掃描工具是根據(jù)內(nèi)置規(guī)則井赌,構(gòu)造具有攻擊性的URL請求谤逼,模擬黑客攻擊行為,用以發(fā)現(xiàn)網(wǎng)站安全漏洞的工具仇穗。
信息加密技術(shù)及密鑰安全管理
通常流部,為了保護(hù)網(wǎng)站的敏感數(shù)據(jù),應(yīng)用需要對這些敏感信息進(jìn)行加密處理纹坐,信息加密技術(shù)可分為三類:
單向散列加密
單向散列加密是指通過對不同輸入長度的信息進(jìn)行散列計(jì)算枝冀,得到固定長度的輸出。這個(gè)散列計(jì)算過程是單向的耘子,即不可能對固定長度的輸出進(jìn)行計(jì)算從而獲得輸入信息果漾。
單向散列加密通常用來對用戶密碼加密。雖然散列計(jì)算過程不可逆谷誓,但由于人們設(shè)置密碼的模式固定绒障,因此通過密碼和對應(yīng)的密文的關(guān)系表(彩虹表)等手段可以進(jìn)行猜測式破解。
為了加強(qiáng)單向散列算法的安全性捍歪,還會(huì)給散列算法加點(diǎn)鹽(salt)户辱,salt相當(dāng)于加密的密鑰,增加破解的難度糙臼。
常用的單向散列算法有MD5庐镐、SHA等,單向散列算法還有一個(gè)特點(diǎn)就是輸入的任何微小變化都會(huì)導(dǎo)致輸出的完全不同弓摘,這個(gè)特性也會(huì)被用來生成信息摘要焚鹊、計(jì)算具有高離散度的隨機(jī)數(shù)等用途。
對稱加密
對稱加密是指加密和解密使用的密鑰是同一個(gè)密鑰(或者可以互相推算)韧献,通常用在信息需要安全交換或者存儲(chǔ)的場合末患,如Cookie加密、通信加密等锤窑。
優(yōu)點(diǎn)是算法簡單璧针,解密加密效率高,適合對大量數(shù)據(jù)加密渊啰。缺點(diǎn)是探橱,解加密使用同一個(gè)密鑰申屹,遠(yuǎn)程通信下如何安全的交換密鑰是個(gè)難題。
常用的對稱加密算法:DES算法隧膏、RC算法等哗讥。
對稱加密算法是一種傳統(tǒng)加密手段,也是最常用的加密手段胞枕,適合絕大多數(shù)需要加密的場合杆煞。
非對稱加密
不同于對稱加密,非對稱加密和解密使用的不是同一個(gè)密鑰腐泻,其中一個(gè)對外界公開决乎,被稱為公鑰,另一個(gè)只有所有者知道派桩,被稱為私鑰构诚。用公鑰加密的信息,必須用私鑰才能解開铆惑,反之范嘱,用私鑰加密的信息只有用公鑰才能解開。
非對稱加密技術(shù)通常用在信息安全傳輸鸭津、數(shù)字簽名等場合彤侍。
非對稱加密的常用算法有RSA算法等。HTTPS傳輸中瀏覽器使用的數(shù)字證書實(shí)質(zhì)上是經(jīng)過權(quán)威機(jī)構(gòu)認(rèn)證的非對稱加密的公鑰逆趋。
實(shí)際應(yīng)用中,常成罐龋混合使用對稱加密和非對稱加密闻书。先使用非對稱加密技術(shù)對對稱密鑰進(jìn)行安全傳輸,然后使用對稱加密技術(shù)進(jìn)行信息加解密與交換脑慧。而有時(shí)魄眉,對通同一次數(shù)據(jù)兩次使用非對稱加密,可同時(shí)實(shí)現(xiàn)信息安全傳輸與數(shù)字簽名的目的闷袒。
密鑰安全管理
無論是單向散列加密用到的salt坑律、對稱加密的密鑰還是非對稱加密的私鑰,一旦密鑰泄漏囊骤,所有基于這些密鑰加密的信息就是去了秘密性晃择。
信息過濾與反垃圾
主要手段有文本匹配、分類算法也物、黑名單等宫屠。