Blog 5/365:【學新知】經典駭客攻擊教程:給每個人的網站安全入門 - 網站安全元件

🤔為什麼要寫這篇小記?
今天上了 Hahow「經典駭客攻擊教程:給每個人的網站安全入門」,老師是現任Yahoo 資深工程師 - Jayden,光是上了前導課程就覺得收穫良多,趁記憶鮮明趕快記錄下來。
資訊安全在現在社會是一個非常重要的課題,在前公司也曾遇到被駭客攻擊的經驗,但當時身為一個弱弱的PM真的是手無縛雞之力,只能聽從公司內部的RD大神們透過各種監控工具,找出可能的系統漏洞,在RD資源、時間成本成本的限制下,找到一個暫時性的最佳解。
這個課程一共分為三個部分:
  • 前導課程:介紹基礎的網站安全元件觀念、網頁組成(HTML, CSS, Javascript)、SQL資料庫語法...等
  • 攻擊與防禦:HTTP系列、SQL Injection系列、XSS(Cross-site scripting)系列、CSRF(Cross-site request forgery)系列
  • 進階議題:Authentication系列、Authorization系列

🤔學習過程?
要學習駭客攻擊,首先第一件事情就是要了解網站的組成以及相關的名詞,例如Session、Cookie...等,說實在話這些在工作朗朗上口的單詞,如果真的要自己用白話文解釋,還真的解釋不出來,或許在潛意識當中一直都沒搞懂過。不過上完前導課程之後,觀念一下變得清楚許多,下方是PM可能常常弄不清楚,結果RD大大們會氣pupu,在工作上常聽到的名詞。
(1) Session & Cookie
目前最常看到的網站組成是所謂的「三層式架構(3-tier architecture)」,如下圖:

當今天一個使用者開始網頁時(客戶端),瀏覽器網頁會與網頁所屬的Server(伺服器端)進行溝通,溝通的過程就稱為「Session(會話)」,而Session(會話)是由許多的HTTP 請求跟回覆所組成的。
我喜歡Jayden用火星人攻佔地球的比喻來解釋:

假如有一天火星人殖民地球,會從火星派遣母船到地球上空,由火星人負責降落佔領地球.就很像我們開啟 Yahoo 首頁,Yahoo 從遙遠的 Yahoo 主機將網頁降臨到你的瀏覽器上。

火星人會不斷地跟火星母船請求支援,火星母船經過判斷,決定要運送哪些資源到地球支援後,會發送訊號要求火星發送來這些資源來殖民地球。

同樣的,網站的概念也是這樣,使用者開啟一個網頁就有如火星人登入地球.當使用者點選網頁想看更多網站的資料時,「展示層」會跟「邏輯層」要求更多資料.「邏輯層」收到訊號經過邏輯處理,判斷要拿哪些資料,會再跟「資料層」取資料.最後回傳給「展示層」。

當今天伺服器端會同時開起很多Session(會話),要「記得」每個會話對應的客戶端的方法就是:
網站的作法是在伺服器端存放一個 Session Id,會且在客戶端的 Cookie 存一個跟Session Id 對應的值,每次會話開啟時,伺服器會先發一個通行證 Cookie 到客戶端,客戶端每次和伺服器端溝通,都會回傳 Cookie 裡面的值到伺服器端,伺服器端會去找對應的 Session Id,得知目前開啟會話的客戶端對象是誰。

如果要做一個比喻就是:HTTP的對話就像是一個俱樂部,俱樂部內會紀錄會員編號,身為會員的我們必須要帶會員證來俱樂部,俱樂部只要對一下會員編號就可以知道是哪個會員惹~
而Cookie是客戶端存放資料的一種方式(通常是我們的個人電腦),以下方的圖片來說,在點開facebook.com跳出來的Name欄位,就是一張張的通行證,右邊的Value就是通行證的值(會員編號)。

第二個常聽到RD大大們在講的詞就是「商業邏輯」,主要是在伺服器端 (Server)。

(2) 商業邏輯 (Business Logic)

伺服器端的邏輯層通常負責網站做主要的邏輯部分,例如:假設有一個網站是心情留言板,那麼伺服器端的邏輯層便會負責留言的查詢/新增/刪除/修改等等邏輯。

回到火星人殖民地球的例子,火星母船上會有相對應的通訊兵,決定要進行的任務。


通訊兵就跟第一線的櫃檯人員一樣,接收前線火星人的要求並且回覆。對於網站也是一樣的概念。這些派遣食物/派遣車輛,或是查詢/新增/刪除/修改等等邏輯,在網站中有個專有名詞稱他們為商業邏輯 (Business Logic)。

最後一個詞是近幾年常聽到的「API(應用程式介面) 或是 網路服務(Web service)」

(3) 網路服務 (Web Service) 或 應用程式介面 (API)

第一線的通訊兵,要提供「服務」給第一線的火星人。他們也是一個「介面(窗口)」讓第一線的火星人呼叫。同樣的概念用在網站上,在 HTTP 請求進入商業邏輯之前,客戶端會先呼叫一層網路服務 (Web Service).這層網路服務也常被稱為應用程式介面 (API)。


🤔啟示或收穫?
Jayden的講解真的非常易懂,中間可以順便學習一些普遍駭客攻擊的程式語法,但對於PM或是想要對資安議題多了解的人來說,這些概念就已經非常足夠了!