常見【十種】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 文件。

轉載請註明出處: http://www.cnblogs.com/Miss-mickey/p/6636813.html 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章