1. 程式人生 > >常見【十種】WEB攻擊及防禦技術總結

常見【十種】WEB攻擊及防禦技術總結

最近參加了一個WEB安全培訓,感覺WEB攻擊跟防禦都是挺有意思的。以下總結比較簡短,僅供觀賞哈。

一、XSS攻擊

  【介紹】

  xss攻擊是跨站指令碼攻擊,例如在表單中提交含有可執行的javascript的內容文字,如果伺服器端沒有過濾或轉義這些指令碼,而這些指令碼由通過內容的形式釋出到了頁面上,這個時候如果有其他使用者訪問這個網頁,那麼瀏覽器就會執行這些指令碼,從而被攻擊,從而獲取使用者的cookie等資訊。

  【防禦】

  1、對於敏感的cookie資訊,使用HttpOnly,使document物件中找不到cookie。

  2、對於使用者輸入的資訊要進行轉義。

二、CSRF攻擊

  【介紹】

  CSRF攻擊即跨站域請求偽造,例如,小明在瀏覽銀行A網站的時候並沒有關掉銀行網站,這時小明又訪問了攜帶CSRF攻擊的B網站,而這時候B網站通過對銀行的伺服器傳送轉賬請求,並且攜帶小明的在銀行網站的cookie資訊,在引數上把小明賬號上的錢轉到B網站所有人的賬戶上,這時url得到響應,小明的錢就丟了。

  【防禦】

  1、敏感請求使用驗證碼。

  2、驗證HTTP Referer欄位。Referer欄位記錄了HTTP請求的來源地址,從銀行A網站發出來的請求會帶有A網站的地址,從攜帶CSRF地址發出的請求會攜帶B網站的地址,我們只需在每個敏感請求驗證Referer值,如果是來自A網站的通過,否則不通過。但是這種方法把安全寄託於瀏覽器,並不完全安全,在某些瀏覽器上,還是可以通過篡改 Referer 從而進行CSRF攻擊。而且,在某些使用者禁用Referer的情況下,伺服器會一直拒絕客戶的請求。

  3、在請求地址中新增token 並驗證。在使用者登入之後,產生token 並放入session中,在每次請求時把token從session中拿出來,以引數的形式加入請求,在伺服器端建立攔截器驗證該token,token則通過,否則拒絕。但是這種方法也是有安全問題的,在某些網站支援使用者發表連結的,那麼黑客在該網站釋出自己的個人網站地址,系統也會為這個地址後加上token,則黑客可以在自己的網站上得到這個token引數,從而發動CSRF攻擊。

  4、在HTTP頭中自定義屬性token 並驗證。把token作為自定義屬性放在HTTP的頭中,通過封裝XMLHttpRequest可以一次性給所有請求加上token 屬性。這樣子token就不會暴露在瀏覽器地址中。

三、SQL注入

  【介紹】

  SQL注入攻擊,攻擊者在提交表單的時候,在表單上面填寫相關的sql語句,而系統把這些欄位當成普通的變數傳送給伺服器端進行sql查詢,則,由攻擊者填寫的sql會拼接在系統的sql語句上,從而進行資料庫的某些操作。

  例如在簡單的登陸表單裡面

<form action="/login" method="POST">
    Username: <input type="text" name="username" />
    Password: <input type="password" name="password" />
    <input type="submit" value="登陸" />
</form>

  這時候系統處理的sql語句是這樣

username:=r.Form.Get("username")
password:=r.Form.Get("password")
sql:="SELECT * FROM user WHERE username='"+username+"' AND password='"+password+"'"

  而這時候攻擊者輸入的使用者名稱如下,密碼為任意值的情況下

myuser' or 'foo' = 'foo' --

  那麼系統的sql語句就會變成這樣

SELECT * FROM user WHERE username='myuser' or 'foo' = 'foo' --'' AND password='xxx'

  則攻擊者就會成功登陸

  【防禦】

  1、表單過濾,驗證表單提交的合法性,對一些特殊字元進行轉義處理

  2、資料庫許可權最小化

  3、查詢語句使用資料庫提供的引數化查詢介面,不要直接拼接SQL

四、身份認證和會話

  【攻擊】

  黑客在瀏覽器中停用JS,防止客戶端校驗,從而進行某些操作。

  【防禦】

  1、隱藏敏感資訊。

  2、對敏感資訊進行加密。

  3、session 定期失效

五、許可權與訪問控制

  【攻擊】

  能通過URL引數的修改達到訪問他人頁面,例如,黑客能夠使用一下的連結去訪問在某商城上自己的訂單鏈接

https://***.***.com/normal/item.action?orderid=51338221644

  這個時候如果網站沒有相關許可權驗證,那麼他也能通過下面的連結去訪問其他人的訂單。

https://***.***.com/normal/item.action?orderid=其他id

  這樣子就會造成商城其他人的隱私的洩露。

  【防禦】

  1、新增許可權系統,訪問的時候可以加上相應的校驗。

六、不安全加密儲存

  【防禦】

  1、加密儲存敏感資訊

  2、不用md5加密

七、上傳漏洞

  【攻擊】

  在圖片上傳的時候,攻擊者上傳非圖片,而是可遠端執行的的指令碼,這時候,入侵者就可以遠端的執行指令碼來對伺服器進行攻擊

  【防禦】

  1、限制檔案上傳型別

  2、使用第三方檔案託管等

八、傳輸層未加密

  【防禦】

  1、使用安全的https版本

  2、敏感資訊使用https傳輸

  3、非敏感資訊使用http傳輸

九、未驗證的重定向和轉發

  【攻擊】

  用於釣魚,黑客在存在漏洞的網址後新增跳轉引數,並且把引數轉碼,把連結傳送給使用者,誘導使用者點選,這時候使用者看到連結的最前面是熟悉的網址,會點選進去,從而是使用者的點擊發生重定向到非法網站。

  【防禦】

  1、新增跳轉白名單

  2、跳轉前提示使用者即將發生跳轉到其他可疑網頁。

十、WebShell

  【攻擊】

  黑客在win系統中向被攻擊網站上傳  abc.asp;.jsp檔案,這時候系統識別為jsp檔案,然後傳送到伺服器的時候,某些系統上面會識別為 asp 檔案。