網(wǎng)站安全防范之常見(jiàn)的網(wǎng)站攻擊方式及應(yīng)對(duì)方案,sql注入,xss攻擊,csrf攻擊,文件上傳漏洞,訪問(wèn)控制。這些是一般網(wǎng)站容易發(fā)生的攻擊方式,接下來(lái)我們一一分析它們是如何攻擊以及防范的。
一、sql注入
<1>什么是sql注入?
sql注入說(shuō)的通俗一些就是用戶在http請(qǐng)求中注入而已的代碼,導(dǎo)致服務(wù)器使用數(shù)據(jù)庫(kù)sql命令時(shí),導(dǎo)致惡意sql一起被執(zhí)行。
用戶登錄,輸入用戶名 zhangsan,密碼 ‘ or ‘1’=’1 ,如果此時(shí)使用參數(shù)構(gòu)造的方式,就會(huì)出現(xiàn)
select * from user
where name = 'zhangsan' and password = '' or '1'='1'
這樣zhangsan用戶沒(méi)有密碼也可以被登陸,如果用戶注入的是操作表的sql,就有大麻煩了。
<2>怎么防范sql注入?
1.不用拼接 SQL 字符串
2. 有效性檢驗(yàn)。(前端后端都需要。第一準(zhǔn)則,外部都是不可信的,防止攻擊者繞過(guò)Web端請(qǐng)求)
3過(guò)濾 SQL 需要的參數(shù)中的特殊字符。比如單引號(hào)、雙引號(hào)。推薦幾個(gè)函數(shù)mysql_real_escape_string() addslashes()htmlentities() htmlspecialchars() strip_tags() intval()
4.限制字符串輸入的長(zhǎng)度。
二、xss攻擊
<1>什么是xss攻擊
跨站點(diǎn)腳本攻擊,指攻擊者通過(guò)篡改網(wǎng)頁(yè),嵌入惡意腳本程序,在用戶瀏覽網(wǎng)頁(yè)時(shí),控制用戶瀏覽器進(jìn)行惡意操作的一種攻擊方式。
假設(shè)頁(yè)面上有一個(gè)表單:
如果,用戶輸入的不是一個(gè)正常的字符串,而是
"/>
此時(shí),頁(yè)面變成下面的內(nèi)容,在輸入框input的后面帶上了一段腳本代碼。
這端腳本程序只是彈出一個(gè)消息框,并不會(huì)造成什么危害,攻擊的威力取決于用戶輸入了什么樣的腳本,只要稍微修改,便可使攻擊極具攻擊性。常見(jiàn)的就是用戶一般在評(píng)論中或者反饋中使用xss。
<2>如何防范xss
同sql注入一樣?梢韵拗戚斎胱址拈L(zhǎng)度,對(duì)HTML轉(zhuǎn)義處理。將其中的”<”,”>”等特殊字符進(jìn)行轉(zhuǎn)義編碼。
三、csrf攻擊
<1>什么是csrf攻擊
跨站點(diǎn)請(qǐng)求偽造,指攻擊者通過(guò)跨站請(qǐng)求,以合法的用戶的身份進(jìn)行非法操作。可以這么理解CSRF攻擊:攻擊者盜用你的身份,以你的名義向第三方網(wǎng)站發(fā)送惡意請(qǐng)求。CRSF能做的事情包括利用你的身份發(fā)郵件,發(fā)短信,進(jìn)行交易轉(zhuǎn)賬,甚至盜取賬號(hào)信息?缯军c(diǎn)請(qǐng)求偽造,指攻擊者通過(guò)跨站請(qǐng)求,以合法的用戶的身份進(jìn)行非法操作?梢赃@么理解CSRF攻擊:攻擊者盜用你的身份,以你的名義向第三方網(wǎng)站發(fā)送惡意請(qǐng)求。CRSF能做的事情包括利用你的身份發(fā)郵件,發(fā)短信,進(jìn)行交易轉(zhuǎn)賬,甚至盜取賬號(hào)信息。
<2>怎么防止csrf
1. 安全框架使用。比如yii lavarel等。
2. token機(jī)制。在HTTP請(qǐng)求中進(jìn)行token驗(yàn)證,如果請(qǐng)求中沒(méi)有token或者token內(nèi)容不正確,則認(rèn)為CSRF攻擊而拒絕該請(qǐng)求。
3. 驗(yàn)證碼。通常情況下,驗(yàn)證碼能夠很好的遏制CSRF攻擊,但是很多情況下,出于用戶體驗(yàn)考慮,驗(yàn)證碼只能作為一種輔助手段,而不是最主要的解決方案。
4. referer識(shí)別。在HTTP Header中有一個(gè)字段Referer,它記錄了HTTP請(qǐng)求的來(lái)源地址。如果Referer是其他網(wǎng)站,就有可能是CSRF攻擊,則拒絕該請(qǐng)求。但是,服務(wù)器并非都能取到Referer。很多用戶出于隱私保護(hù)的考慮,限制了Referer的發(fā)送。在某些情況下,瀏覽器也不會(huì)發(fā)送Referer,例如HTTPS跳轉(zhuǎn)到HTTP。
四、文件上傳漏洞
<1>什么是文件上傳漏洞
文件上傳漏洞,指的是用戶上傳一個(gè)可執(zhí)行的腳本文件,并通過(guò)此腳本文件獲得了執(zhí)行服務(wù)端命令的能力。比如用戶上傳一個(gè)可以關(guān)機(jī)的執(zhí)行文件,你的損失就大發(fā)了。
<2>如何防范
1. 文件上傳的目錄設(shè)置為不可執(zhí)行。
2. 判斷文件類型。在判斷文件類型的時(shí)候,可以結(jié)合使用MIME Type,后綴檢查等方式。因?yàn)閷?duì)于上傳文件,不能簡(jiǎn)單地通過(guò)后綴名稱來(lái)判斷文件的類型,因?yàn)楣粽呖梢詫⒖蓤?zhí)行文件的后綴名稱改為圖片或其他后綴類型,誘導(dǎo)用戶執(zhí)行。
3. 對(duì)上傳的文件類型進(jìn)行白名單校驗(yàn),只允許上傳可靠類型。
4. 上傳的文件需要進(jìn)行重新命名,使攻擊者無(wú)法猜想上傳文件的訪問(wèn)路徑,將極大地增加攻擊成本,同時(shí)向shell.PHP.rar.ara這種文件,因?yàn)橹孛鵁o(wú)法成功實(shí)施攻擊。
5. 限制上傳文件的大小。
6. 單獨(dú)設(shè)置文件服務(wù)器的域名。
五、訪問(wèn)控制
即RBAC,F(xiàn)在一般網(wǎng)站都已經(jīng)不存在這種問(wèn)題了
|