Web 資訊安全的防護措施
撰寫者: 技術經理 邱義州
♦一、 常見的Web資訊安全問題
越來越多的企業組織使用Web服務,向客戶提高公司產品的商業價值,例如銷售、交易及跨多個供應商(包括B-B和B-C電子商務)的庫存管理等,攻擊者利用應用程序中的漏洞發起各種攻擊,並獲得對未經授權的資源。 成功的網路攻擊可能會對企業造成:
- 1. Financial Loss (經濟損失)
- 2. Disclosure of Business Information (洩漏商業機密)
- 3. Affects Business Continuity (影響業務連續性)
- 4. Damages Reputation (名譽受損)
- 5. Closure of Business (停業)
- 6. Fraudulent Transactions (詐欺交易)
雖然伺服器有防火牆和IDS系統可以保護應用程式的安全,但因網路服務 需開放80、443 port,攻擊者便可利用此端口進入做攻擊。 在資訊安全攻擊中,有75%的攻擊是來自於網路攻擊,有2/3的Web應用程式是不安全的,許多開發者往往專注在應用程式的開發,而忽略了資訊安全的重要性。
常見的Web資訊安全的攻擊手法:
是一種透過 script 來讓瀏覽器在未經過濾惡意程式碼的情況下,將這些惡意程式執行在瀏覽器上,通常會透過網址列來進行攻擊,也可以透過網頁的表單輸入讓Javascript存入資料庫,讓使用者在讀取網頁時載入惡意程式碼。當受害者進入網頁時,執行惡意的 JavaScript 程式碼來讀取使用者的 Cookies,接著將竊取來的資料傳送到攻擊者的伺服器。
防範方式: 最基本的作法就是對於所有不信任來源的資料輸入都要以 encode 的方式呈現在瀏覽器上而不是直接執行。
是一種挾制用戶在當前已登入的 Web 應用程式上執行非本意的操作的 攻擊方法。 攻擊者通過一些技術手段欺騙用戶的瀏覽器去存取一個自己曾經認證過的網站並執行一些操作(如發郵件、發訊息、轉帳或購買商品)。由於瀏覽器曾經認證過,所以被存取的網站會認為是真正的用戶操作而去執行。這利用了Web用戶身分驗證的一個漏洞,簡單的身分驗證只能保證請求來自於用戶的瀏覽器,卻不能保證請求是用戶自行發出的。
防範方式:
● 檢查 Referer:
request 的 header 裡面會帶一個欄位叫做 referer,代表這個 request 是從哪個地方過來的,可以檢查這個欄位看是不是合法的 domain不是的話直接 reject 掉。
● 添加驗證 token:
在表單加入由 Server 生成的隨機驗證 CSRF 的碼,可以協助防止 CSRF 攻擊。
- SQL Injection:
-
攻擊者可以在注入惡意的 SQL 語法去改變資料庫
圖 1 SQL Injection 示意圖
- Cross-site scripting (XSS):
- Cross-site Request Forgery (CSRF):
-
4. DoS
Dos 阻斷式攻擊(Denial of Service Attack)目的在於使目標電腦的網路或系統資源耗盡,使服務暫時中斷或停止,導致真正的使用者無法使用服務。例如:User Registration DoS、User Enumeration、Login Attacks、 Account Lock Out Attacks。
防範方式:
防火牆、路由器或交換機設定規則阻擋簡單攻擊。♦二、安全的應用程序設計和架構
- Use Least Privilege Principle
- 使用最小權限為原則,例如:資料庫帳號管理綁定權限讓Web應用程 式使用,減少SQL 漏洞的影響。
- Secure by Default
- 資訊系統中的預設設定是以最高的資訊安全等級為主,而不是使用者最容易使用的設定。
- Threat Modeling
- 系統設計階段安全性威脅的分析,是一個重複執行的過程,重複分析安全性的威脅,並且提出相對應的解決方式,驗證是否解決或是降低威脅性;當系統增加功能或是改變原有的功能時,也可以利用它來分析系統的變動是否出現安全性的威脅。
圖 2 Threat Modeling建置流程
● 攻擊者導向(Attacker-centric): 是以攻擊者為出發點,評估攻擊者的目的與如何達成目的。在這種分析下,攻擊者的動機最常列入考量,例如:某人想讀某郵件。這種分析方式通常從侵入點或是目標的資產著手思考。
● 軟體導向(Software-centric) 又稱為系統導向(system-centric)、設計導向(design-centric)或架構導向(architecture-centric)。思考點是系統的設計方式與系統的運作目的,並尋找對此系統或其內部模組相關類型的攻擊方式,例如:微軟的SDL(Security Development Lifecycle)便是利用此方式。
● 資產導向(Asset-centric) 資產導向的分析方式是從系統所託管的資源著手分析,例如:系統收集到的敏感性個人資訊。
♦三、Web應用安全測試
圖 3 DAST 動態應用程式安全測試 (圖片來源: kknews.cc/tech/8poyqlq.html)
圖 4 SAST 靜態應用程式安全測試
- DAST 動態應用程式安全測試(Dynamic Application Security Testing): 分析應用程式的動態運行狀態,它模擬駭客的行為對應用程式進行動態攻擊,分析應用程式的反應並判斷定該應用程式是否容易受攻擊。
- SAST 靜態應用程式安全測試(Static Application Security Testing): 分析應用程式的原始碼或二進位文件的語法、結構等來發現程式代碼存在的安全漏洞。
-
IAST:交互式應用程式安全測試(Interactive Application Security Testing): 是2012年Gartner公司提出的一種新的應用程式安全測試方案,通過代理、VPN或者在服務端部署Agent程序,收集、監控Web應用程式運行時函數執行、數據傳輸,並與掃描器端進行實時交互,高效、準確的識別安全缺陷及漏洞,同時可準確確定漏洞所在的代碼文件、行數、函數及參數。IAST相當於是DAST和SAST結合的一種互相關聯運行時安全檢測技術。 (資料來源: kknews.cc/tech/8poyqlq.html)
圖 5 代理模式原理 (圖片來源:kknews.cc/tech/8poyqlq.html)