最近在筆試的時(shí)候遇到這么個(gè)問(wèn)題,我這個(gè)自學(xué)前端的小白看到直接蒙了=- =蜈膨,今天去網(wǎng)上查了查屿笼,現(xiàn)在把他們記錄在這里,時(shí)不時(shí)的可以看一下翁巍,提醒提醒驴一。當(dāng)然,WEB漏洞可不止這么兩個(gè)灶壶,還有其他的肝断,可以在這里看到。
XSS(Cross-site Scripting)漏洞
- 這個(gè)名字是為了不和CSS重名而混淆驰凛。
描述:Web程序代碼中把用戶提交的參數(shù)未做過(guò)濾就直接輸出到頁(yè)面胸懈,參數(shù)中的特殊字符打破了HTML頁(yè)面的原有邏輯,黑客可以利用該漏洞執(zhí)行惡意HTML/JS代碼恰响、構(gòu)造蠕蟲(chóng)傳播趣钱、篡改頁(yè)面實(shí)施釣魚(yú)攻擊等。
檢測(cè)方法:通過(guò)修改參數(shù)來(lái)判斷是否存在漏洞胚宦。
如:用戶輸入內(nèi)容:’<u>a</u>”的時(shí)候首有,合法的顯示是:
而存在漏洞的頁(yè)面顯示卻是:
修復(fù)方案:
1、開(kāi)發(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ì)于用戶輸入的參數(shù)值展現(xiàn)在HTML正文中或者屬性值中的情況蝗锥,因?qū)⒉豢尚艃?nèi)容做出轉(zhuǎn)碼跃洛,如“< > ' " `”轉(zhuǎn)換成HTML實(shí)體。
4终议、只允許用戶輸入我們期望的數(shù)據(jù)。過(guò)濾掉JavaScript事件的標(biāo)簽葱蝗。
5穴张、將重要的cookie標(biāo)記為http only,這樣的話Javascript 中的document.cookie語(yǔ)句就不能獲取到cookie了两曼。
CSRF漏洞(Cross Site Request Forgery)漏洞
描述:CSRF(Cross-Site Request Forgery皂甘,跨站點(diǎn)偽造請(qǐng)求)是一種網(wǎng)絡(luò)攻擊方式,該攻擊可以在受害者毫不知情的情況下以受害者名義偽造請(qǐng)求發(fā)送給受攻擊站點(diǎn)悼凑,從而在未授權(quán)的情況下 執(zhí)行在權(quán)限保護(hù)之下的操作偿枕。
攻擊原理:如圖所示,Web A為存在CSRF漏洞的網(wǎng)站户辫, Web B為攻擊者構(gòu)建的惡意網(wǎng)站渐夸, User C為Web A的合法用戶。
- 用戶C打開(kāi)瀏覽器渔欢,訪問(wèn)受信任網(wǎng)站A墓塌,輸入用戶名和密碼請(qǐng)求登錄網(wǎng)站A;
2.在用戶信息通過(guò)驗(yàn)證后奥额,網(wǎng)站A產(chǎn)生Cookie信息并返回給瀏覽器苫幢,此時(shí)用戶登錄網(wǎng)站A成功,可以正常發(fā)送請(qǐng)求到網(wǎng)站A垫挨; - 用戶未退出網(wǎng)站A之前韩肝,在同一瀏覽器中,打開(kāi)一個(gè)TAB頁(yè)訪問(wèn)網(wǎng)站B九榔;
- 網(wǎng)站B接收到用戶請(qǐng)求后哀峻,返回一些攻擊性代碼,并發(fā)出一個(gè)請(qǐng)求要求訪問(wèn)第三方站點(diǎn)A帚屉;
- 瀏覽器在接收到這些攻擊性代碼后谜诫,根據(jù)網(wǎng)站B的請(qǐng)求,在用戶不知情的情況下攜帶Cookie信息攻旦,向網(wǎng)站A發(fā)出請(qǐng)求喻旷。網(wǎng)站A并不知道該請(qǐng)求其實(shí)是由B發(fā)起的,所以會(huì)根據(jù)用戶C的Cookie信息以C的權(quán)限處理該請(qǐng)求牢屋,導(dǎo)致來(lái)自網(wǎng)站B的惡意代碼被執(zhí)行且预。
CSRF漏洞檢測(cè):最簡(jiǎn)單的方法是抓取一個(gè)正常的請(qǐng)求的數(shù)據(jù)包槽袄,去掉Referer字段后再重新提交,如果該提交依舊有效锋谐,那么基本上可以確定存在CSRF漏洞遍尺。同樣有一些專門針對(duì)CSRF漏洞進(jìn)行檢測(cè)的工具,如CSRFTester涮拗、CSRF Request Builder等乾戏。
CSRF漏洞防御:
- 驗(yàn)證HTTP Refere字段,該字段記錄了該HTTP請(qǐng)求的來(lái)源地址三热。在通常情況下鼓择,訪問(wèn)一個(gè)安全受限頁(yè)面的請(qǐng)求必須來(lái)自同一個(gè)網(wǎng)站。不過(guò)就漾,由于Referer是可以偽造的呐能,所以該方法有點(diǎn)不靠譜。
- 在請(qǐng)求地址中添加token并驗(yàn)證抑堡,抵御CSRF攻擊的關(guān)鍵在于:在請(qǐng)求中放入攻擊者所不能偽造的信息摆出,并且該信息 不存在于Cookie之中。系統(tǒng)開(kāi)發(fā)者可以在HTTP請(qǐng)求中以參數(shù)的形式加入一個(gè)隨機(jī)產(chǎn)生的token首妖,并在服務(wù)器端建立一個(gè)攔截器來(lái)驗(yàn)證這個(gè) token偎漫,如果請(qǐng)求中沒(méi)有token或者token內(nèi)容不正確,則認(rèn)為可能是CSRF攻擊而拒絕該請(qǐng)求悯搔。其實(shí)把token放在localstorage中就行了骑丸,localstorage是html5標(biāo)準(zhǔn)定義的,它不會(huì)自動(dòng)添加到 http請(qǐng)求中妒貌,目前主流瀏覽器都支持通危。
以上內(nèi)容都是取自網(wǎng)上各路大佬寫的內(nèi)容,有些內(nèi)容已經(jīng)有些年了灌曙,可能放在如今已不適用菊碟,在之后的學(xué)習(xí)與工作中要注意咯。