HTTP的缺點
- 隱私性:通信使用明文,內容可能被竊聽。
- 身份驗證:不驗證通信雙方身份,因此有可能遭遇偽裝。即無法確定對方服務器的身份,發送的內容有可能被偽裝的服務器盜取。客戶端也有可能偽裝,發送海量請求,導致服務器崩潰。
- 完整性:無法證明報文的完整性,所以有可能內容遭篡改。接收到的內容可能有誤,例如中間人攻擊(MITM)。
HTTP +加密 + 認證 + 完整性保護 = HTTPS
HTTPS就是身披SSL /TLS外衣的HTTP
SSL采用公開密鑰加密的加密處理方式
共享密鑰加密:加密和解密共用一個密鑰的方式,也稱作對稱密鑰加密。共享密鑰必須將密鑰發給對方,否則無法解密。此方法密鑰有可能途中被竊聽或者修改。
公開密鑰加密:非對稱加密,兩把密鑰,一把私鑰,一把公鑰。私有密鑰不能讓任何人知道,公開密鑰則可以隨意發布。發送密文的一方使用對方的公開密鑰加密處理,對方收到加密信息后,再使用自己的私有密鑰進行解密。
HTTPS采用混合加密的方式。交換密鑰環節使用公開密鑰加密方式,之后建立的通信交換報文階段則使用共享密鑰加密。既保證安全,有保證高效。
公開密鑰的問題:無法證明公開密鑰就是貨真價實的公開密鑰。解決辦法,使用數字證書認證機構(CA)和其相關機構頒發的公開密鑰證書。
業務流程
1.服務器運營人員向數字機構提出公開密鑰的申請。
2.數字證書認證機構判明申請者的身份后,對已申請的公鑰做數字簽名。
3.分配這個已簽名的公開密鑰,并將該公開密鑰放入公鑰證書后綁定在一起。
證書內容
1.證書信息:過期日期和序列號
2.證書擁有者信息:姓名等
3.所有者公開密鑰
SSL 的問題
- SSL 比較慢
1.1. 通信慢,相當于多加了一層SSL通信
1.2. 消耗大量的CPU及內存資源,導致處理速度變慢。 - SSL需要支付額外的證書費用
TLS Protocols
TLS Protocols包括TLS Record Protocols和TLS HandShake Protocols
Record protocol作用
Record protocol提供了數據完整性和隱私性保證,但Record類型type
和長度length是公開傳輸的
- 發送端:將數據分段,壓縮,增加MAC(Message Authentication Code)和加密
- 接收端:將數據解密,驗證MAC,解壓并重組
HTTP認證方式
- BASIC認證
- Digest認證
- SSL客戶端認證
- FORMBase認證(基于表單認證)
Web攻擊
主動攻擊:攻擊者直接通過訪問web應用,把攻擊代碼傳入的攻擊模式。
被動攻擊:利用攻擊策略執行攻擊代碼的攻擊模式
XSS 跨站腳本攻擊
通過存在安全漏洞的Web網站注冊用戶的瀏覽器內運行非法的HTML或者JavaScript進行的一種攻擊
SQL注入攻擊
針對Web應用使用的數據庫,通過運行非法的SQL而產生的攻擊。
- 非法查看或者篡改數據庫內的數據
- 執行和數據庫服務器業務關聯的程序
OS注入攻擊
通過Web應用,執行非法的操作系統命令達到攻擊的目的。只要能調用shell函數的地方就有可能被攻擊的風險。
HTTP首部注入攻擊
郵件首部注入攻擊
會話劫持
攻擊者通過某種手段拿到了用戶的會話ID,并非法使用用戶的ID偽裝用戶,達到攻擊的目的。
跨站點請求偽造(CSRF)
攻擊者設置好陷阱,強制對已完成認證的用戶進行非預期的個人信息或者設定信息等某些狀態更新,屬于被動攻擊。