文本太難看的話可以直接看思維導圖更直觀,也可查看有道雲筆記(排版可能更好看一點):
http://note.youdao.com/noteshare?id=c896ed59a577a6caf5b26600a4e3689b&sub=8E90D663DBE74331BC41A711C586742F
一、常見Web攻擊手段
1.XSS攻擊:跨站腳本攻擊(Cross site Scripting)
攻擊原理:通常是在網頁中嵌入惡意腳本程序(通過<script>alert("")</script><!-等形式)
防範方法:對用戶輸入的數據進行HTML轉義處理,如“<”、">"、"'"、““”等;
如今很多開源框架也自帶HTML轉移功能,可以利用自帶的功能做處理
2.CRSF攻擊:跨站請求僞造(cross site request forgery)
攻擊原理:通過僞裝來自受信任用戶的請求(通過獲取cookie信息或者用戶沒有登出而直接訪問某個網站)
防範方法:
a.將cookie設置爲HttpOnly(如Java中的servlet直接通過response的setHeader方法配 置)
b.增加token
c.通過Referer識別(HTTP頭中有個字段Referer記錄了該HTTP請求的來源地址,通過request.getHeader("Referer")獲取Referer值進行驗證)
3.Sql注入攻擊
攻擊原理:惡意用戶將sql指令僞裝成參數傳遞到後端數據庫執行
(通過拼接sql,如where 1=1 or 等)
防範方法:
a.使用預編譯語句:preparedStatement(通過使用參數佔位符來替代需要動態傳入的參數)
b.使用ORM框架:如Hibernate、mybatis等
c.避免免密碼明文存放,一般密碼使用MD5加密(可以利用加鹽增加複雜度)
4.文件上傳漏洞
攻擊原理:通過上傳惡意的可執行文件和腳本或者將文件上傳服務器當做免費的文件存儲服務器使用
防範方法:a.不能簡單通過後綴名稱來判斷文件的類型,因爲惡意攻擊可以通過更改後綴名來僞裝,建議使用魔數校驗(魔數:很多類型的文件,起始的幾個字節是固定的,這幾個字節稱爲魔數)
b.imagemagick等圖片處理工具將圖片壓縮,破壞惡意用戶上傳的二進制可執行文件的結構
5.DDOS攻擊(Distributed Denial of Service)分佈式拒絕服務攻擊
攻擊原理:攻擊者藉助公共網絡,將數量龐大的計算機設備聯合起來作爲攻擊平臺,對一個或多個目標發動攻擊,從而達到癱瘓目標主機的目的
常見攻擊手段:
5.1 SYN Flood
TCP三次握手:
a.客戶端發送一個包含SYN(Synchronize同步)標識的報文,SYN報文會指明客戶端的端口號及TCP連接的初始序列號
b.服務器在收到客戶端的SYN報文後,會返回一個 SYN+ACK的報文,表示客戶端請求被接收,同時TCP序列號被加一
c.客戶端在接收到服務端的SYN+ACK報文後,也會返回一個ACK報文給服務端,同樣,TCP序號被加一,TCP連接建立完成
攻擊原理:
a.TCP協議爲實現可靠傳輸,在三次握手過程中設置了異常處理機制,第三步如果服務器沒有收到客戶端的ACK報文,服務端一般會重試(重發SYN+ACK報文)。重發一般會進行3到5次,大約每隔30秒左右輪詢一次等待隊列,重試所有客戶端;同時服務器發出SYN+ACK報文之後會預分配一部分資源給即將建立的TCP連接,這個資源在等待重試時一直保留,由於服務器資源有限,可以維護的等待列表超過極限後就不再接收新的SYN報文
b.攻擊者利用TCP的三次握手過程,僞造大量的IP地址給服務器發送SYN報文,由於僞造的IP地址不存在,所以不可能從客戶端得到迴應,服務器端將維護非常大的半連接等待列表,同時不斷遍歷重試,直至耗盡服務端資源
5.2 DNS Query Flood
向被攻擊的服務器發送海量的域名解析請求。通常,這些域名是隨機生成的,大部分根本不存在,並且通過僞造端口和客戶端IP,防止查詢請求被ACL(訪問控制列表)過濾。DNS服務器接收到域名解析的請求後會先查緩存,當沒有緩存並且無法由該DNS服務器解析時會向上層DNS服務器遞歸查詢域名信息,直到全球互聯網的13臺根DNS服務器。大量的不存在的域名解析請求給服務器帶來很大負載,造成DNS服務器解析域名超時
5.3CC攻擊(Challenge Collapsar)
攻擊者通過控制的大量“肉雞”(被控制的用戶計算機)或者利用從網上搜尋的大量匿名的HTTP代理,模擬正常用戶給網站發起請求直到該網站拒絕服務爲止。這些精心構造的HTTP請求會避開CDN以及分佈式緩存,導致服務器需要進行多次DB查詢或者一次請求返回大量的數據,加速系統資源耗盡
6.其他攻擊手段
a.DNS域名劫持
b.CDN回源攻擊
c.服務器權限提升
d.緩衝區溢出
二、常用的安全算法
1.數字摘要
MD5(信息摘要算法5):摘要長度128位
SHA(安全散列算法):SHA-1基於MD4算法,摘要長度160位,運行速度比MD5更慢,但更爲安全
十六進制編碼:與十進制對應關係:0~9對應0~9,A~F對應10~15
Base64編碼:在Base64中可打印字符包括字母A~Z、a~z、數字0~9這62個字符,
再加上兩個不同 系統中對應不同的打印符號
彩虹表破解Hash算法:採用笨拙的方法,一一窮舉存儲明文和密文的所有組合,非常龐大
2.對稱加密算法
介紹:加密方和解密方使用同一個密鑰,
特點是算法公開、計算量小、加密速度快、加密效率高;
優勢在於加解密的高速度和使用長密鑰時的難破解性
常見算法:
DES算法:明文按64位進行分組,密鑰長64位,但事實上只有56位參與DES運算原版DES密碼的密鑰長度容易被暴力破解,因此演變出3DES算法,使用3條56位的密鑰對數據進行三次加密,是DES的一個更安全的變形
AES算法:匯聚了強安全性、高性能、高效率、易用和靈活等優點,
設計有三個密鑰長度(128、192、256)
3.非對稱加密算法
介紹:又稱爲公開密鑰加密算法,需要兩個密鑰,一個是公鑰,一個私鑰。公鑰和私鑰需要配對使用。如果用公鑰對數據進行加密,只有對應的私鑰才能解密;如果使用私鑰對數據進行加密,只有對應的公鑰才能解密;因爲加密和解密使用的是不同的密鑰,所以才稱爲非對稱加密算法
RSA算法:是目前最有影響力的非對稱加密算法,它能夠抵抗到目前爲止已知的所有密碼攻擊,基於一個十分簡單的數論事實:將兩個大素數相乘十分容易,但反過來想要對其乘積進行因式分解卻極其困難,因此可以將乘積公開作爲加密密鑰
4.數字簽名
簽名認證是對非對稱加密技術與數字摘要技術的綜合運用。
常見數字簽名算法:
MD5withRSA:採用MD5算法生成需要發送正文的數字摘要,
使用RSA算法來對正文進行加密和解密
SHA1withRSA:採用SHA-1算法生成正文的數字摘要,
使用RSA算法對摘要進行加密和解密
5.數字證書
又稱電子證書,類似於我們的身份證
5.1包含內容:
a.對象的名稱(人、服務器、組織)
b.證書的過期時間
c.證書的頒發機構(誰爲證書擔保)
d.證書頒發機構對證書信息的數字簽名
e.簽名算法
f.對象的公鑰
5.2大多數數字證書的標準格式採用的是X.509
5.3證書籤發:由數字證書認證機構(CA)來進行頒發
5.4證書校驗
5.5證書管理
5.6使用keytool、OpenSSL等工具
三、摘要認證
原理:對參數和響應進行摘要
實現:
a.客戶端參數摘要生成
b.服務端參數摘要校驗
c.服務端響應摘要生成
d.客戶端響應摘要校驗
四、簽名認證
原理:加密時使用私鑰,解密時使用公鑰;相較於摘要認證,簽名認證的非對稱加密算法將消耗更多的時間和硬件資源
實現步驟
1.客戶端參數簽名生成
2.服務端參數簽名校驗
3.服務端響應簽名生成
4.客戶端響應簽名校驗
五、HTTPS協議
基於SSL的HTTP協議(HTTP協議的安全版)
1.特點
a.整個通信過程都是經過加密的
b.密鑰隨機生成
c.通過數字證書驗證通信雙方的身份,以此保障信息安全
SSL/TLS
SSL:全稱Secure Sockets Layer(安全嵌套層)
TLS協議:SSL協議的繼任者,全稱Transport Layer Security(傳輸層安全協議)
位於應用層與傳輸層之間
六、OAuth協議
1.誕生的背景:滿足第三方開發者接口的資源授權認證
2.OAuth協議旨在爲用戶資源的授權訪問提供一個安全、開放的標準
3.OAuth協議並不需要觸及用戶的賬戶信息,即用戶名密碼,便可以完成對用戶信息的授權
歷經OAuth1.0、OAuth1.0a、OAuth2.0等幾個版本
備註:
1.思維導圖:
xmind原件地址
鏈接:https://pan.baidu.com/s/1PhWsiIetm_XxdiYQTODBng
提取碼:d4jb