首頁技術(shù)文章正文

什么是sql 注入攻擊?跨站腳本攻擊分為幾類?

更新時間:2021-11-23 來源:黑馬程序員 瀏覽量:

IT培訓(xùn)班    

SQL 注入攻擊是注入攻擊最常見的形式(此外還有 OS 注入攻擊(Struts 2 的高危漏洞就是通過 OGNL 實(shí)施 OS 注入攻擊導(dǎo)致的)),當(dāng)服務(wù)器使用請求參數(shù)構(gòu)造 SQL 語句時,惡意的 SQL 被嵌入到 SQL 中交給數(shù)據(jù)庫執(zhí)行。SQL 注入攻擊需要攻擊者對數(shù)據(jù)庫結(jié)構(gòu)有所了解才能進(jìn)行,攻擊者想要獲得表結(jié)構(gòu)有多種方式:

(1)如果使用開源系統(tǒng)搭建網(wǎng)站,數(shù)據(jù)庫結(jié)構(gòu)也是公開的(目前有很多現(xiàn)成的系統(tǒng)可以直接搭建論壇,電商網(wǎng)站,雖然方便快捷但是風(fēng)險是必須要認(rèn)真評估的);
(2)錯誤回顯(如果將服務(wù)器的錯誤信息直接顯示在頁面上,攻擊者可以通過非法參數(shù)引發(fā)頁面錯誤從而通過錯誤信息了解數(shù)據(jù)庫結(jié)構(gòu),Web 應(yīng)用應(yīng)當(dāng)設(shè)置友好的錯誤頁,一方面符合最小驚訝原則,一方面屏蔽掉可能給系統(tǒng)帶來危險的錯誤回顯信息);
(3)盲注。防范 SQL 注入攻擊也可以采用消毒的方式,通過正則表達(dá)式對請求參數(shù)進(jìn)行驗(yàn)證,此外,參數(shù)綁定也是很好的手段,這樣惡意的 SQL 會被當(dāng)做 SQL 的參數(shù)而不是命令被執(zhí)行,JDBC 中的 PreparedStatement 是支持參數(shù)綁定的語句對象,從性能和安全性上都明顯優(yōu)于 Statement。

XSS(Cross Site Script,跨站腳本攻擊)是向網(wǎng)頁中注入惡意腳本在用戶瀏覽網(wǎng)頁時在用戶瀏覽器中執(zhí)行惡意腳本的攻擊方式??缯灸_本攻擊分有兩種形式:
反射型攻擊(誘使用戶點(diǎn)擊一個嵌入惡意腳本的鏈接以達(dá)到攻擊的目標(biāo),目前有很多攻擊者利用論壇、微博發(fā)布含有惡意腳本的 URL 就屬于這種方式)
持久型攻擊(將惡意腳本提交到被攻擊網(wǎng)站的數(shù)據(jù)庫中,用戶瀏覽網(wǎng)頁時,惡意腳本從數(shù)據(jù)庫中被加載到頁面執(zhí)行,QQ 郵箱的早期版本就曾經(jīng)被利用作為持久型跨站腳本攻擊的平臺)。
CSRF 攻擊(Cross Site Request Forgery,跨站請求偽造)是攻擊者通過跨站請求,以合法的用戶身份進(jìn)行非法操作(如轉(zhuǎn)賬或發(fā)帖等)。CSRF 的原理是利用瀏覽器的 Cookie 或服務(wù)器的 Session,盜取用戶身份。

防范 CSRF 的主要手段是識別請求者的身份,主要有以下幾種方式:
(1)在表單中添加令牌(token);
(2)驗(yàn)證碼;
(3)檢查請求頭中的 Referer(前面提到防圖片盜鏈接也是用的這種方式)。
令牌和驗(yàn)證都具有一次消費(fèi)性的特征,因此在原理上一致的,但是驗(yàn)證碼是一種糟糕的用戶體驗(yàn),不是必要的情況下不要輕易使用驗(yàn)證碼,目前很多網(wǎng)站的做法是如果在短時間內(nèi)多次提交一個表單未獲得成功后才要求提供驗(yàn)證碼,這樣會獲得較好的用戶體驗(yàn)。






猜你喜歡:

依賴注入怎樣實(shí)現(xiàn)?有幾種方式??

MySQL表數(shù)據(jù)怎樣導(dǎo)入到Hive文件中?

DDOS攻擊防范教程

MySQL數(shù)據(jù)庫如何分區(qū)、分表?什么時候考慮使用分區(qū)?

黑馬程序員軟件測試與開發(fā)培訓(xùn)

分享到:
在線咨詢 我要報名
和我們在線交談!