跨站腳本攻擊(XSS,,Cross-site scripting)是最常見和基本的攻擊Web網(wǎng)站的方法。攻擊者可以在網(wǎng)頁上發(fā)布包含攻擊性代碼的數(shù)據(jù),,當瀏覽者看到此網(wǎng)頁時,,特定的腳本就會以瀏覽者用戶的身份和權限來執(zhí)行。通過XSS可以比較容易地修改用戶數(shù)據(jù),、竊取用戶信息以及造成其它類型的攻擊,,例如:CSRF攻擊。惡意攻擊者往Web頁面里插入惡意html代碼,,當用戶瀏覽該頁之時,,嵌入其中Web里面的html代碼會被執(zhí)行,從而達到惡意攻擊用戶的特殊目的,。 跨站腳本攻擊的解決思路 預防XSS攻擊的基本方法是:確保任何被輸出到HTML頁面中的數(shù)據(jù)以HTML的方式進行轉義(HTML escape),。例如PHP輸出: PHP Code復制內(nèi)容到剪貼板
如果這個articleText是由用戶自行輸入的,那么攻擊者很有可能輸入一段包含javascript惡意攻擊代碼的文本,,使得最終輸出變成: PHP Code復制內(nèi)容到剪貼板
上述代碼,,在瀏覽器中渲染,將會執(zhí)行JavaScript代碼并在屏幕上alert hello,。當然這個代碼是無害的,,但攻擊者完全可以創(chuàng)建一個JavaScript來修改用戶資料或者竊取cookie數(shù)據(jù)。 PHP Code復制內(nèi)容到剪貼板
這樣就不會有任何危害了。 XSS危害 XSS其實是一門小眾但是熱門的攻擊技術,,之所以小眾,,是由于費時間、很難成功,、攻擊無法自動化和需要扎實的htmljs功底,,但是由于漏洞存在廣泛,即使是大型互聯(lián)網(wǎng)公司的站點也很容易由于疏忽存在此漏洞,,這就是最大的熱門,。 跨站請求偽造攻擊(CSRF) 跨站請求偽造(CSRF,Cross-site request forgery)是另一種常見的攻擊,。攻擊者通過各種方法偽造一個請求,,模仿用戶提交表單的行為,從而達到修改用戶的數(shù)據(jù)或執(zhí)行特定任務的目的,。 解決思路 1、增加攻擊的難度,。GET請求是很容易創(chuàng)建的,用戶點擊一個鏈接就可以發(fā)起GET類型的請求,,而POST請求相對比較難,,攻擊者往往需要借助JavaScript才能實現(xiàn);因此,,確保form表單或者服務端接口只接受POST類型的提交請求,,可以增加系統(tǒng)的安全性。 2,、對請求進行認證,,確保該請求確實是用戶本人填寫表單或者發(fā)起請求并提交的,而不是第三者偽造的,。 1),、用戶點擊鏈接(1) -> 網(wǎng)站顯示表單(2) -> 用戶填寫信息并提交(3) -> 網(wǎng)站接受用戶的數(shù)據(jù)并保存(4) 2),、直接跳到第2步(1) -> 偽造要修改的信息并提交(2) -> 網(wǎng)站接受攻擊者修改參數(shù)數(shù)據(jù)并保存(3) 3),、用戶點擊鏈接(1) -> 網(wǎng)站顯示表單,,表單中包含特殊的token同時把token保存在session中(2) -> 用戶填寫信息并提交,同時發(fā)回token信息到服務端(3) -> 網(wǎng)站比對用戶發(fā)回的token和session中的token,,應該一致,,則接受數(shù)據(jù),并保存 這樣,,如果攻擊者偽造要修改的信息并提交,,是沒辦法直接訪問到session的,所以也沒辦法拿到實際的token值,;請求發(fā)送到服務端,,服務端進行token校驗的時候,,發(fā)現(xiàn)不一致,則直接拒絕此次請求,。 |
|