1. 程式人生 > 實用技巧 >Web安全筆記 1 : Web基礎介紹

Web安全筆記 1 : Web基礎介紹

Web工作流程

從瀏覽器輸入網址到看到網頁的過程

  • 客戶輸入URL,DNS解析得出IP地址,根據IP地址找出對應的伺服器
  • 客戶通過TCP/IP協議建立與Web伺服器的TCP連結
  • 客戶機向Web伺服器傳送HTTP請求報文,請求伺服器裡資源的資源文件
  • Web伺服器接收到客戶機的HTTP請求報文,然後向客戶急發出HTTP響應報文
  • 如果請求的是HTML文件,Web伺服器會將對應的HTML文件開啟,然後將文件的響應內容傳送給客戶機
  • 如果請求的是PHP檔案,因為Web伺服器自身是不能處理PHP動態指令碼語言檔案的,所以會尋找並委託PHP應用伺服器,PHP應用伺服器會將Web伺服器請求的PHP檔案解析成HTML靜態程式碼,然後將HTML靜態程式碼傳送給Web伺服器,最後Web伺服器會將HTML靜態程式碼傳送給客戶機
  • 如果請求的資源是訪問資料庫,則Web伺服器會通過應用伺服器去訪問資料庫

前端語言概述

HTML

  • HTML即超文字標記語言,是用來構建網頁的一種語言
  • HTML是一整套標記標籤構成的標記語言,而非程式語言
  • HTML用於承載網頁的內容(文字、圖片、語音、視訊)
  • 使用HTML標記標籤與純文字按規則構建的文件,通常也稱為網頁

CSS

  • 層疊樣式表。是一種用來表現HTML或XML等檔案樣式的計算機語言
  • CSS能夠對網頁中元素位置的排版進行畫素級精確控制,支援幾乎所有的字型字號樣式,擁有對網頁物件和模型樣式編輯的能力

JavaScript

  • JavaScript是可插入是可插入HTML頁面,可以由絕大數現代瀏覽器執行的輕量級程式語言
  • JavaScript基於原型程式設計、多正規化的動態指令碼語言,並且支援面向物件、命令式和宣告式(如函數語言程式設計)風格
  • JavaScript作為一種指令碼語言,由它引申出的XSS攻擊、檔案上傳漏洞,常年佔據OWASP Top10

Web應用程式概述

Web應用程式是運行於網路和標準瀏覽器上,基於網頁技術開發實現特定功能的應用

  • 前端:HTML、CSS、JavaScript
  • 後端:Java、Python、PHP
  • 資料庫:MySQL、Oracle、MongoDB
  • 容器:Windows(IIS)、Linux(Nginx、Apache)
  • 協議:TCP、DNS、HTTP、HTTPS

常見的Web伺服器概述

  • Apache 是一個開放原始碼的網頁伺服器軟體,可以在大多數電腦作業系統中執行,由於其跨平臺和安全性被廣泛使用,是最流行的Web伺服器軟體之一
  • Nginx是一個網頁伺服器,它能反向代理HTTP、HTTPS、SMTP、POP3、IMAP的協議連結,以及一個負載均衡器和一個HTTP快取。Ngnix是一款面向效能設計的HTTP伺服器,相較於Apache具有佔記憶體少,穩定性高等優勢
  • IIS是微軟公司主推的伺服器
  • Tomcat技術先進、效能穩定、而且免費,因而深受Java愛好者的喜愛,成為目前比較流行的Web應用伺服器

Web應用框架概述

  • Web應用框架是一種開發框架,用來支援動態網站、網路應用程式及網路服務的開發。其型別有基於請求的和基於元件的兩種框架
  • 前端:jQurey、Bootstrap、React.js、vue.js
  • 後端:Spring MVC、Django、Tornado

URL

HTTP

常見狀態碼

  • 1xx:指示資訊——表示請求已接受,繼續處理
  • 2xx:成功——表示請求已被成功接受
  • 3xx:重定向——要完成請求必須更近一步的操作
  • 4xx:客戶端錯誤——請求有語法錯誤或請求無法實現
  • 5xx:伺服器端錯誤——伺服器未能實現合法的請求

Cookie機制

  • HTTP協議本身是無狀態協議,不會記錄前一次傳輸的資料資訊,因此無法實現伺服器和客戶端的資料互動
  • 如何實現HTTP會話的連續性,保持互動期間的會話狀態

Cookie技術

  • Cookie,指某些網站為了辨別使用者身份、進行session跟蹤而儲存在使用者本地終端上的資料。每個cookie都有一定的URL範圍,客戶請求這個範圍的URL都要提供這個cookie

Cookie的型別

  • 會話cookie:是一種臨時cookie,使用者退出瀏覽器,會話cookie就會被刪除了
  • 持久cookie:儲存在硬盤裡,保留時間更長,通常是為維護某個使用者週期性訪問伺服器的配置檔案或者登陸資訊

Cookie的規範

  • cookie由伺服器端向客戶端寫入,包含在http響應頭中的set-cookie欄位

Cookie的格式

  • Set-Cookie:name|value|path|domain|expires
  • name:變數名
  • value:賦予cookie的值
  • path:請求頁面的路徑
  • domain:cookie的作用範圍(域名)
  • expires:過期時間

針對Cookie的攻擊

  • 網路嗅探(中間人攻擊):盜取cookie敏感資訊
  • XSS跨站指令碼攻擊:可盜取客戶端cookie獲取敏感資訊
  • 會話重放:通過盜取的cookie,進行會話重放攻擊

常見的Web會話管理方式

  • cookie-base的管理方式:使用者登陸成功後,把登陸平整寫到cookie裡面,並給cookie設定有效期,後續請求直接驗證存有登陸憑證的cookie是否存在以及憑證是否有效,即可判斷使用者登陸的狀態
  • 基於server端的session管理:伺服器端的session技術是使用者第一次訪問時,伺服器就會建立的物件,並分配session儲存空間。伺服器為每一個session都分配一個唯一的sessionid,以保證每個使用者都有一個不同的session物件。與第一種的區別在於,第一種儲存在客戶端,第二種存在於伺服器端,第一種包含敏感資訊,第二種是id,不包含敏感資訊,可以憑藉id找到憑證,第二種的安全性更好
  • token-base的管理方式:跟cookie-based沒有太多區別,只不過cookie-based裡面寫到cookie裡面的ticket在這種方式下稱token,這個token在返還給客戶端後,後續請求都必須通過url引數或者是http header的形式,主動帶上token,這樣伺服器端接收到請求之後就能直接從http header或者url裡面取到token進行驗證