資源描述:
《web應(yīng)用中常見種不同的安全漏洞漏洞分析及檢查方法》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、Web應(yīng)用中常見39種不同的安全漏洞漏洞分析及檢查方法1.1?SQL注入漏洞風(fēng)險(xiǎn)等級(jí):高危漏洞描述:SQL注入漏洞產(chǎn)生的原因是網(wǎng)站應(yīng)用程序在編寫時(shí)未對(duì)用戶提交至服務(wù)器的數(shù)據(jù)進(jìn)行合法性校驗(yàn),即沒有進(jìn)行有效地特殊字符過濾,導(dǎo)致網(wǎng)站服務(wù)器存在安全風(fēng)險(xiǎn),這就是SQLInjection,即SQL注入漏洞。漏洞危害:1)機(jī)密數(shù)據(jù)被竊?。?)核心業(yè)務(wù)數(shù)據(jù)被篡改;3)網(wǎng)頁被篡改;4)數(shù)據(jù)庫所在服務(wù)器被攻擊從而變?yōu)榭苤鳈C(jī),導(dǎo)致局域網(wǎng)(內(nèi)網(wǎng))被入侵。修復(fù)建議:1)?在網(wǎng)頁代碼中對(duì)用戶輸入的數(shù)據(jù)進(jìn)行嚴(yán)格過濾;(代碼層)2)?部署Web應(yīng)用防火墻;(設(shè)備層)3)?對(duì)數(shù)據(jù)庫操作進(jìn)行監(jiān)控。(數(shù)
2、據(jù)庫層)代碼層最佳防御sql漏洞方案:采用sql語句預(yù)編譯和綁定變量,是防御sql注入的最佳方法。原因:采用了PreparedStatement,就會(huì)將sql語句:"selectid,nofromuserwhereid=?"預(yù)先編譯好,也就是SQL引擎會(huì)預(yù)先進(jìn)行語法分析,產(chǎn)生語法樹,生成執(zhí)行計(jì)劃,也就是說,后面你輸入的參數(shù),無論你輸入的是什么,都不會(huì)影響該sql語句的語法結(jié)構(gòu)了,因?yàn)檎Z法分析已經(jīng)完成了,而語法分析主要是分析sql命令,比如select,from,where,and,or,orderby等等。所以即使你后面輸入了這些sql命令,也不會(huì)被當(dāng)成sql命令來執(zhí)
3、行了,因?yàn)檫@些sql命令的執(zhí)行,必須先的通過語法分析,生成執(zhí)行計(jì)劃,既然語法分析已經(jīng)完成,已經(jīng)預(yù)編譯過了,那么后面輸入的參數(shù),是絕對(duì)不可能作為sql命令來執(zhí)行的,只會(huì)被當(dāng)做字符串字面值參數(shù),所以sql語句預(yù)編譯可以防御sql注入。其他防御方式:正則過濾?1.2?目錄遍歷漏洞風(fēng)險(xiǎn)等級(jí):中危漏洞描述:通過該漏洞可以獲取系統(tǒng)文件及服務(wù)器的配置文件。利用服務(wù)器API、文件標(biāo)準(zhǔn)權(quán)限進(jìn)行攻擊。漏洞危害:黑客可獲得服務(wù)器上的文件目錄結(jié)構(gòu),從而下載敏感文件。修復(fù)建議:1)?通過修改配置文件,去除中間件(如IIS、apache、tomcat)的文件目錄索引功能2)?設(shè)置目錄權(quán)限3)?在
4、每個(gè)目錄下創(chuàng)建一個(gè)空的index.html頁面。?1.3?跨站腳本漏洞即XSS漏洞,利用跨站腳本漏洞可以在網(wǎng)站中插入任意代碼,它能夠獲取網(wǎng)站管理員或普通用戶的cookie,隱蔽運(yùn)行網(wǎng)頁木馬,甚至格式化瀏覽者的硬盤。漏洞危害:1)?網(wǎng)絡(luò)釣魚,盜取管理員或用戶帳號(hào)和隱私信息等;2)?劫持合法用戶會(huì)話,利用管理員身份進(jìn)行惡意操作,篡改頁面內(nèi)容、進(jìn)一步滲透網(wǎng)站;3)?網(wǎng)頁掛馬、傳播跨站腳本蠕蟲等;4)?控制受害者機(jī)器向其他系統(tǒng)發(fā)起攻擊。修復(fù)建議:設(shè)置httponlyhttponly無法完全的防御xss漏洞,它只是規(guī)定了不能使用js去獲取cookie的內(nèi)容,因此它只能防御利用x
5、ss進(jìn)行cookie劫持的問題。Httponly是在set-cookie時(shí)標(biāo)記的,可對(duì)單獨(dú)某個(gè)參數(shù)標(biāo)記也可對(duì)全部參數(shù)標(biāo)記。由于設(shè)置httponly的方法比較簡(jiǎn)單,使用也很靈活,并且對(duì)防御cookie劫持非常有用,因此已經(jīng)漸漸成為一種默認(rèn)的標(biāo)準(zhǔn)。xssfilterXssfilter往往是一個(gè)文本文件,里面包含了允許被用戶輸入提交的字符(也有些是包含不允許用戶提交的字符)。它檢測(cè)的點(diǎn)在于用戶輸入的時(shí)候,xssfilter分為白名單與黑名單,推薦使用白名單,但即使使用白名單還是無法完全杜絕xss問題,并且使用不當(dāng)可能會(huì)帶來很高的誤報(bào)率。編碼轉(zhuǎn)義編碼方式有很多,比如html編
6、碼、url編碼、16進(jìn)制編碼、javascript編碼等。在處理用戶輸入時(shí),除了用xssfilter的方式過濾一些敏感字符外,還需要配合編碼,將一些敏感字符通過編碼的方式改變?cè)瓉淼臉幼?,從而不能被瀏覽器當(dāng)成js代碼執(zhí)行。處理富文本有些網(wǎng)頁編輯器允許用戶提交一些自定義的html代碼,稱之為”富文本”。想要在富文本處防御xss漏洞,最簡(jiǎn)單有效的方式就是控制用戶能使用的標(biāo)簽,限制為只能使用a、div等安全的標(biāo)簽。處理所有輸出類型的xss漏洞xss漏洞本質(zhì)上是一種html注入,也就是將html代碼注入到網(wǎng)頁中。那么其防御的根本就是在將用戶提交的代碼顯示到頁面上時(shí)做好一系列的過
7、濾與轉(zhuǎn)義。其他修復(fù)方案1)?開發(fā)者應(yīng)該嚴(yán)格按照openid和openkey的校驗(yàn)規(guī)則判斷openid和openkey是否合法,且判斷其它參數(shù)的合法性,不合法不返回任何內(nèi)容。2)?嚴(yán)格限制URL參數(shù)輸入值的格式,不能包含不必要的特殊字符(%0d、%0a、%0D、%0A等)。3)?針對(duì)ASP.NET的防XSS庫,Microsoft有提供統(tǒng)一的庫,具體可以參見如下鏈接微軟官網(wǎng):http://msdn.microsoft.com/en-us/library/aa973813.aspx4)?具體的js方法如下:(1)對(duì)于用戶輸入的參數(shù)值展現(xiàn)在HTML正文中或者