閱讀圖解http一書學習筆記

http 學習

網絡基礎

  • IP(Internet Protocol) 網際協議
  • TCP(Transmission Control Protocol) 傳輸控制協議,面向鏈接的,可靠的協議
  • UDP(User Datagram Protocol) 用戶數據報協議
  • URI(Uniform Resource Identifier) 統一資源定位符
  • DNS(Domain Name System) 提供域名與IP地址之間的解析
  • 網絡分層協議(應用層、傳輸層、網絡層、鏈路層、物理層)

http請求支持的方法

  • GET
  • POST
  • PUT
  • HEAD 獲取報文首部
  • DELETE

編碼提高傳輸速率

  • 壓縮傳輸的內容編碼
    • gzip(GNU zip)
    • compress(UNIX系統標準壓縮)
    • deflate(zlib)
    • identity(identity)
  • 分割發送的分塊傳輸編碼

http狀態碼

  • 2XX 成功web

    • 200 OK
    • 204 No Content 請求處理成功但沒資源返回
    • 206 Partial Content 對資源的某一部分請求
  • 3XX 重定向sql

    • 301 Moved Permanently 資源的URI已更新,永久性重定向
    • 302 Found 資源臨時重定向
    • 303 See Other 資源URI已更新,303狀態碼明確表示客戶端應該採用GET方法獲取資源
    • 304 Not Modified 服務端資源未改變,能夠直接使用能夠的未過時的緩存
  • 4XX 客戶端錯誤shell

    • 401 Bad Request 客戶端錯誤,通常是參數格式錯誤
    • 401 Unauthorized 沒有權限
    • 403 Forbidden 禁止訪問
    • 404 Not Found 資源未找到
  • 5XX 服務端錯誤瀏覽器

    • 500 Internal Server Error
    • 502 Bad Gateway 網關或代理服務器錯誤
    • 503 Service Unavaliable 服務端沒法處理請求

代理

接受客戶端請求轉發給服務端,利用緩存技術減小網絡帶寬的流量,組織內部針對特定網站的訪問控制,以獲取訪問日誌爲主要目的緩存

  • 緩存代理 預先將資源的副本保存在代理服務器上
  • 透明代理 不對報文作任何加工

HTTP首部

  • 通用首部安全

    • Cache-Control 指定緩存機制
    • Connection 管理持久鏈接
    • Date http報文建立的日期和時間
    • Pragma: === Cache-Control
    • Transfer-Encoding 傳輸報文主體時採用的編碼方式,僅對分塊傳輸編碼有效
  • 請求首部服務器

    • Accept 通知服務器用戶代理可以處理的媒體類型及媒體類型的相對優先級
    • Accept-Charset 通知服務器用戶代理支持的字符集以及字符集的優先順序
    • Accept-Encoding 告知服務器用戶代理支持的內容編碼及內容編碼的優先順序(gzip, compress, deflate)
    • Accept-Language 告知服務器用戶可以處理的天然語言以及優先級
    • Authorization 告知服務器用戶代理的認證信息
    • Expect
    • Form
    • If-Match
    • If-Modified-Since
    • If-Range
    • If-Unmodified-Since
    • Max-Forwords 指定通過服務器的最大數目
    • Proxy-Authorization
    • Range 請求的範圍
    • Referer 請求原始資源的URL(網站的url)
    • TE 客戶端能處理的編碼方式以及相對優先級
    • User-Agent 建立請求的瀏覽器和代理的名稱
  • 響應首部cookie

    • Accept-Ranges
    • Age 源服務器在多久前建立了資源
    • ETag
    • Loation
    • Proxy-Authenticate
    • Retry-After 告知客戶端多久以後再次發送請求
    • Server 服務器應用程序的信息
    • Vary 對緩存進行控制
  • 實體首部字段網絡

    • Allow 通知客戶端請求資源指定的方法
    • Content-Ecoding 實體主體的編碼方式
    • Content-Language 實體主體使用的天然語言
    • Content-Length 實體主體部分的大小
    • Content-Location 報文主體部分相對應的URI
    • Content-MD5
    • Content-range 告知客戶端做爲相應返回的實體的哪一個部分符合範圍請求
    • Content-Type 實體主體內對象的媒體類型
    • Expires 資源失效日期
    • Last-Modified 資源最終修改時間
  • 爲Cookie服務的首部字段session

    • Set-Cookie 開始狀態管理所使用的cookie信息
    • Cookie 保存在用戶本地,服務器接受到的cookie信息

HTTPS

  • HTTP缺點

    • 通訊使用明文(不加密),內容可能會被竊聽
    • 不驗證通訊方的身份,所以有可能遭遇假裝
    • 沒法證實報文的完整性,因此有可能遭遇假裝
    • 沒法證實報文的完整性,因此有可能已遭篡改
  • HTTPS(HTTP secure)

    • HTTP
    • SSL加密
    • 認證
    • 完整性保護
  • HTTPS缺點

    • 通訊慢 除了http請求還行進行ssl通訊,總體處理通訊量增長
    • 大量消耗cpu和內存資源,致使處理速度變慢, 對報文加解密消耗資源

用戶身份驗證

  • BASIC認證(不安全)

    • 客戶端發生請求
    • 返回狀態碼401告知客戶端須要進行認證
    • 用戶ID和密碼以Base64方式編碼發送
    • 成功後返回狀態碼200,失敗返回狀態碼401
  • DIGEST認證(不安全)

    • 認證要求
    • 服務端發送臨時質詢碼,和告知須要認證的狀態碼401
    • 發送摘要以及由質詢碼計算出的響應碼
    • 認證成功返回狀態碼200,失敗則再次發送狀態碼401
  • SSL認證

    • 收到須要認證資源請求,服務器發送報文要求客戶端提供證書
    • 客戶端發送證書
    • 服務器驗證證書經過後,客戶端可領取證書內客戶端的公鑰,而後開始HttPS加密通訊
  • 基於表單認證(Session管理及Cookie應用)

    • 客戶端發送用戶名密碼
    • 服務端向用戶發放session ID,
    • 客戶端發送含session id的cookie
    • 服務端經過session id來斷定對方的真實用戶

web攻擊技術(web安全)

  • 因輸出值轉義不徹底引起的安全漏洞

    • 跨站腳本攻擊
      • 利用虛假頁面獲取用戶表單信息
    • sql注入攻擊
      • 輸入框中填寫非法的sql語句
    • os命令注入攻擊
      • 在能調用shell函數的地方輸入非法os命令
    • http首部注入攻擊
      • 在響應首部字段內插入換行,添加任意響應首部或主題的一種攻擊
    • 郵件首部注入攻擊
      • 向郵件內部添加非法內容的攻擊
    • 目錄遍歷攻擊
      • 對本無心對外公開的目錄,經過非法截斷期路徑後,達成訪問目的的攻擊(可以使用../等相對路徑定位到絕對路徑)
    • 遠程文件包含漏洞
      • 當部分腳本內容須要從其餘文件讀入時,攻擊者利用指定外部服務器的url充當依賴文件,讓腳本讀取以後運行任意腳本
  • 設計上的缺陷引起的安全漏洞

    • 強制瀏覽
    • 不正確的錯誤消息處理
      • web應用錯誤信息包含對攻擊者有用的信息
    • 開發重定向
      • 經過修改重定向地址跳轉到惡意的地址
  • 因會話管理疏忽引起的安全漏洞

    • 會話劫持
      • 拿到用戶的ID,僞形成用戶,達到攻擊的目的
    • 會話固定攻擊
      • 強制用戶使用攻擊者指定的會話ID
    • 跨站點請求僞造
  • 其餘安全漏洞

    • 密碼破解
    • 點擊劫持
    • dos攻擊
    • 後面程序
相關文章
相關標籤/搜索