Featured image of post Web應用程式的漏洞與對策(OWASP Top 10與安全編碼)

Web應用程式的漏洞與對策(OWASP Top 10與安全編碼)

SQL注入攻擊、XSS、CSRF等主要Web漏洞的機制與防禦手法。

Web應用程式的漏洞與對策(OWASP Top 10與安全編碼)

在現代的Web應用程式中,安全防護是不可或缺的要素。攻擊手法日益進化,開發者必須隨時掌握最新威脅的知識,並具備防禦這些威脅的 安全編碼 技術。本文將以Web應用程式安全的業界標準「OWASP Top 10」為基礎,非常詳細地解說主要漏洞的機制、攻擊造成的影響,以及具體的防禦手法。

OWASP Top 10 是什麼

OWASP(Open Worldwide Application Security Project)是一個旨在提升軟體安全的國際性非營利組織。OWASP定期發布的「OWASP Top 10」是一份統整了Web應用程式中最重大安全風險前10名的報告,許多企業與開發者皆將其採用為安全基準。

本文將聚焦於影響深遠且頻繁發生的「注入攻擊(Injection)」、「跨網站指令碼(XSS)」、「跨站請求偽造(CSRF)」、「伺服器端請求偽造(SSRF)」、「存取控制失效(Broken Access Control)」等漏洞,進行深入探討。


1. 注入攻擊(Injection)

注入攻擊是因不可信的資料作為指令或查詢的一部分被傳送到直譯器而產生的漏洞。攻擊者的惡意資料會被直譯器當作非預期的指令執行,或是未經適當授權便存取資料。

1.1. SQL注入攻擊

SQL注入攻擊發生在與資料庫互動的應用程式中,外部輸入的值被不當嵌入至SQL查詢中。這使得攻擊者能夠讀取資料庫內的機密資訊、竄改資料,甚至奪取資料庫伺服器的控制權。

攻擊的機制

作為一個典型的例子,讓我們思考一個使用使用者名稱與密碼進行登入的處理。

脆弱的程式碼範例(PHP):

1
2
3
4
5
6
$username = $_POST['username'];
$password = $_POST['password'];

// 危險:將輸入值直接結合至SQL查詢中
$query = "SELECT * FROM users WHERE username = '" . $username . "' AND password = '" . $password . "'";
$result = $mysqli->query($query);

假設攻擊者在此程式碼的 username 欄位輸入了以下的字串:

admin' OR '1'='1

那麼,被執行的SQL查詢將會變成這樣:

1
SELECT * FROM users WHERE username = 'admin' OR '1'='1' AND password = ''

因為 '1'='1' 恆為真(True),密碼的確認將會被繞過,攻擊者便能以 admin 使用者的身分登入。

SQL注入攻擊的防禦手法

防止SQL注入攻擊最確實的方法是使用 預備語句 (參數化查詢)。這能將SQL查詢的結構與資料分離,防止輸入值被解釋為SQL指令。

已採取對策的程式碼範例(PHP / PDO):

1
2
3
4
5
6
7
8
9
$username = $_POST['username'];
$password = $_POST['password'];

// 安全:使用預備語句
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username AND password = :password");
$stmt->bindParam(':username', $username);
$stmt->bindParam(':password', $password);
$stmt->execute();
$result = $stmt->fetchAll();

1.2. NoSQL注入攻擊

在近年普及的NoSQL資料庫(如MongoDB等)中,也會發生注入攻擊。NoSQL使用不同於SQL的查詢語言(如基於JSON等),但若對輸入值的驗證不足,便可能導致查詢結構被非預期地更改。

脆弱的程式碼範例(JavaScript / Node.js + MongoDB):

1
2
3
4
5
6
7
8
const username = req.body.username;
const password = req.body.password;

// 危險:將輸入值直接嵌入物件中
db.collection('users').find({
    username: username,
    password: password
});

如果攻擊者在 password 傳送了 {"$gt": ""} 這樣的物件,查詢將會變成這樣:

1
2
3
4
{
    "username": "admin",
    "password": {"$gt": ""}
}

這會變成「密碼大於空字串(也就是任意字串)」的條件,認證便會被突破。

NoSQL注入攻擊的防禦手法

為了防止NoSQL注入攻擊,必須嚴格進行輸入值的型別檢查,確保在預期為字串的地方不會被傳入物件,這點非常重要。

1.3. OS指令注入攻擊

OS指令注入攻擊是指,當應用程式透過Shell執行系統指令時,來自外部的輸入值被解釋為Shell指令一部分的漏洞。

脆弱的程式碼範例(Python):

1
2
3
4
5
import os

domain = request.args.get('domain')
# 危險:將輸入值直接結合至OS指令中
os.system(f"ping -c 4 {domain}")

如果攻擊者在 domain 輸入了 example.com; rm -rf /,在 ping 指令之後便會執行具破壞性的指令。

OS指令注入攻擊的防禦手法

應盡可能避免呼叫OS指令,而是使用語言內建的API(函式庫)。在不得已必須執行OS指令的情況下,應避免透過Shell,而是以陣列格式傳遞引數。

已採取對策的程式碼範例(Python):

1
2
3
4
5
import subprocess

domain = request.args.get('domain')
# 安全:不透過Shell,將引數作為陣列傳遞
subprocess.run(["ping", "-c", "4", domain])

2. 跨網站指令碼(XSS)

跨網站指令碼(XSS)是攻擊者將惡意腳本(通常是JavaScript)注入至Web頁面,並在其他使用者的瀏覽器上執行的攻擊。這會導致工作階段權杖(Session Token)遭竊取、以使用者權限進行不正當操作、重新導向至釣魚網站等情況。

攻擊的成功機率模型

在XSS等客戶端攻擊中,攻擊成功的機率取決於使用者觸發陷阱(如惡意連結)的機率。若將此以數學式建立模型,會如下所示。

攻擊至少成功1次的機率 $ P(success) $,若單次嘗試失敗的機率為 $ p $,嘗試次數(如傳送的連結數量等)為 $ n $,可表示如下:

$ P(success) = 1 - (1 - p)^n $

由此公式可知,若漏洞存在且攻擊的嘗試次數增加,攻擊成功的機率將呈指數型趨近於1。因此,從根本上排除漏洞是不可或缺的。

XSS的種類

XSS主要可分為以下三種。

2.1. Reflected XSS(反射型XSS)

誘使使用者點擊包含惡意腳本的URL,伺服器的回應(如錯誤訊息或搜尋結果等)會將該腳本直接反射(Reflect)輸出並執行。

  sequenceDiagram
    participant "攻擊者"
    participant "使用者的瀏覽器"
    participant "Web伺服器"

    "攻擊者"->>"使用者的瀏覽器": "傳送包含惡意腳本的URL"
    "使用者的瀏覽器"->>"Web伺服器": "點擊URL,並傳送請求"
    "Web伺服器"-->>"使用者的瀏覽器": "回應包含腳本的HTML"
    Note right of "使用者的瀏覽器": "瀏覽器執行腳本,並導致資訊外洩"
    "使用者的瀏覽器"->>"攻擊者": "傳送Cookie資訊等"

2.2. Stored XSS(儲存型XSS)

惡意腳本被保存(Store)在資料庫或留言板等地方,當其他使用者顯示該資料時便會執行腳本。這是被害範圍容易擴大的危險XSS。

2.3. DOM-based XSS

不透過伺服器,而是客戶端(瀏覽器上)的JavaScript在操作DOM(Document Object Model)的過程中,執行了不正當腳本的漏洞。

XSS的防禦手法

防止XSS的基本原則是 跳脫(過濾) 。當使用者的輸入值輸出至Web頁面時,將HTML中具有特殊意義的字元(如 <>&"' 等)轉換為無害的字串。

脆弱的程式碼範例(JavaScript / DOM操作):

1
2
3
4
5
6
7
8
9
<div id="greeting"></div>
<script>
    // 從URL參數取得名字
    const params = new URLSearchParams(window.location.search);
    const name = params.get('name');
    
    // 危險:未將輸入值跳脫便直接代入 innerHTML
    document.getElementById('greeting').innerHTML = "你好," + name + "!";
</script>

已採取對策的程式碼範例(JavaScript):

1
2
3
4
5
6
7
8
<div id="greeting"></div>
<script>
    const params = new URLSearchParams(window.location.search);
    const name = params.get('name');
    
    // 安全:使用 textContent 作為純文字處理
    document.getElementById('greeting').textContent = "你好," + name + "!";
</script>

在後端(如PHP等)輸出的情況下,也同樣使用適當的跳脫函式(如 htmlspecialchars 等)。此外,藉由導入Content Security Policy(CSP),即使腳本被注入,也能達成防止其執行的多層防禦。


3. 跨站請求偽造(CSRF)

CSRF是攻擊者強制已認證的使用者對Web應用程式傳送非預期請求的攻擊。這會導致使用者的密碼被非預期地更改、購買商品、執行退會處理等。

CSRF的攻擊流程

  sequenceDiagram
    participant "使用者的瀏覽器"
    participant "正規的Web網站"
    participant "攻擊者的陷阱網站"

    "使用者的瀏覽器"->>"正規的Web網站": "登入並建立認證會話"
    "正規的Web網站"-->>"使用者的瀏覽器": "發行 Cookie (會話 ID)"
    
    "使用者的瀏覽器"->>"攻擊者的陷阱網站": "瀏覽惡意頁面"
    "攻擊者的陷阱網站"-->>"使用者的瀏覽器": "包含隱藏表單或腳本的HTML"
    
    Note over "使用者的瀏覽器": "透過腳本,自動傳送請求至正規網站"
    "使用者的瀏覽器"->>"正規的Web網站": "非預期的請求 (會附帶 Cookie)"
    "正規的Web網站"-->>"正規的Web網站": "因 Cookie 有效而執行處理"

CSRF的防禦手法

為了防止CSRF,必須具備確認請求是否真為使用者意圖的機制。

3.1. CSRF Token

最常見的對策是在伺服器端產生隨機的Token,並在傳送表單時包含該Token。伺服器會驗證傳送過來的Token,若不一致則拒絕請求。

已採取對策的程式碼範例(HTML表單):

1
2
3
4
5
6
<form action="/update_profile" method="POST">
    <!-- 嵌入伺服器產生的CSRF Token -->
    <input type="hidden" name="csrf_token" value="abc123xyz456...">
    <input type="text" name="email">
    <button type="submit">更新</button>
</form>

較現代的對策是活用Cookie的 SameSite 屬性。藉由設定 SameSite=LaxSameSite=Strict,可使來自不同網域的請求不傳送Cookie,從根本上防止CSRF攻擊。

已採取對策的HTTP標頭範例:

1
Set-Cookie: session_id=12345; Secure; HttpOnly; SameSite=Lax

4. 伺服器端請求偽造(SSRF)

SSRF是當Web應用程式具備從外部URL取得資料的功能時,攻擊者讓伺服器傳送請求至其指定的任意URL的攻擊。這使得攻擊者能夠存取通常無法從外部存取的內部網路系統(如雲端的中繼資料API、公司內部資料庫等)。

SSRF的威脅與影響

在雲端環境(如AWS、GCP、Azure等)中,有時可藉由從執行個體內部存取特定IP位址(例如:169.254.169.254)來取得憑證等中繼資料。若利用SSRF存取此API,將導致致命的資訊外洩。

SSRF的防禦手法

  • 透過白名單限制URL: 嚴格以白名單管理應用程式可存取的網域或IP位址。
  • 禁止存取內部IP: 封鎖對 127.0.0.110.0.0.0/8169.254.169.254 等私人IP位址、回環位址、連結本地位址的請求。
  • DNS解析驗證: 確認解析URL網域後的IP位址是否在允許的範圍內,再傳送請求。

5. 存取控制失效(Broken Access Control)

存取控制(授權)失效是指使用者能夠執行超出自身權限的操作的漏洞。在OWASP Top 10 2021中被定位為最重大的風險(第1名)。

具體的情境

  • IDOR(不安全的直接物件參考): 藉由改寫URL參數(例如:user_id=123),便能存取其他使用者的個人資訊。
  • 權限提升: 一般使用者藉由直接存取管理介面的URL(例如:/admin/dashboard),便能執行管理員權限的操作。

存取控制的防禦手法

  • 預設拒絕(Default Deny): 預設拒絕所有存取,僅允許明確獲得許可的使用者・角色進行存取(導入RBAC/ABAC)。
  • 伺服器端嚴格的權限檢查: 不僅在客戶端(如隱藏瀏覽器UI等),務必在後端處理執行前確認權限。
  • 使用難以推測的識別碼: 參考物件時不使用連續編號的ID,而是使用如UUID等難以推測的隨機識別碼。

6. 邁向安全的Web應用程式開發

Web應用程式的漏洞大多源自於開發階段缺乏 安全 意識或知識不足。將以下的實踐納入開發流程中非常重要。

  1. Security by Design(安全設計): 從企劃・設計階段便定義安全需求,並將其納入架構中。
  2. 活用靜態・動態分析工具: 將SAST(靜態應用程式安全測試)與DAST(動態應用程式安全測試)納入CI/CD管線,及早發現漏洞。
  3. 依賴關係管理: 隨時監控第三方函式庫或框架的漏洞資訊(CVE),並迅速套用更新。
  4. 持續學習: 持續從OWASP等社群學習最新的威脅趨勢與防禦手法。

影響範圍的計算模型

當漏洞被置之不理時的影響範圍(風險),可用以下數學式量化。

$ Risk = Threat \times Vulnerability \times Impact $

  • Threat(威脅): 攻擊者存在的可能性或攻擊的頻率
  • Vulnerability(漏洞): 系統弱點的程度或被惡用的容易度
  • Impact(影響): 資訊外洩或系統停止造成的商業損害(金錢・信用上的損失)

此公式顯示,只要將其中任何一項趨近於零,便能大幅降低整體的風險。作為開發者,將「漏洞(Vulnerability)」最小化是最大的責任。


結論

本文解說了基於OWASP Top 10的主要Web應用程式漏洞(注入攻擊、XSS、CSRF、SSRF、存取控制失效)的機制,以及具體的 安全編碼 手法。

安全防護並非做過一次對策便能了事。在日常的開發流程中,隨時撰寫具備安全意識的程式碼,並實施持續的審查與測試,建構出安全且堅固的Web應用程式是我們所被要求的。

7. 詳細的防禦架構與維運 (Part 1)

在企業級規模的Web應用程式中,除了前述的編碼等級對策外,基礎設施等級的多層防禦也是不可或缺的。

7.1 WAF (Web Application Firewall) 的導入

Web Application Firewall (WAF) 是監控並過濾傳向Web應用程式的流量,在攻擊到達應用程式前阻擋如SQL注入攻擊或跨網站指令碼(XSS)等攻擊的系統。WAF不僅具備基於特徵碼的偵測,藉由結合行為偵測(異常偵測),也提升了對零日攻擊的應對能力。

7.2 安全CI/CD管線的建構

基於DevSecOps的概念,將安全測試自動化並納入持續整合/持續交付(CI/CD)的管線中非常重要。

  • SAST (Static Application Security Testing): 靜態分析原始碼,並偵測包含漏洞的編碼模式。
  • DAST (Dynamic Application Security Testing): 對運作中的應用程式傳送模擬的攻擊請求,並偵測執行時的漏洞。
  • SCA (Software Composition Analysis): 偵測所使用的開源函式庫或元件中包含的已知漏洞(CVE),並促使其更新。

7.3 定期實施滲透測試

不僅是透過自動化工具進行掃描,藉由定期實施安全專家的手動滲透測試(入侵測試),能夠找出工具難以發現的商業邏輯缺陷,或是複雜的存取控制漏洞。

8. 詳細的防禦架構與維運 (Part 2)

在企業級規模的Web應用程式中,除了前述的編碼等級對策外,基礎設施等級的多層防禦也是不可或缺的。

8.1 WAF (Web Application Firewall) 的導入

Web Application Firewall (WAF) 是監控並過濾傳向Web應用程式的流量,在攻擊到達應用程式前阻擋如SQL注入攻擊或跨網站指令碼(XSS)等攻擊的系統。WAF不僅具備基於特徵碼的偵測,藉由結合行為偵測(異常偵測),也提升了對零日攻擊的應對能力。

8.2 安全CI/CD管線的建構

基於DevSecOps的概念,將安全測試自動化並納入持續整合/持續交付(CI/CD)的管線中非常重要。

  • SAST (Static Application Security Testing): 靜態分析原始碼,並偵測包含漏洞的編碼模式。
  • DAST (Dynamic Application Security Testing): 對運作中的應用程式傳送模擬的攻擊請求,並偵測執行時的漏洞。
  • SCA (Software Composition Analysis): 偵測所使用的開源函式庫或元件中包含的已知漏洞(CVE),並促使其更新。

8.3 定期實施滲透測試

不僅是透過自動化工具進行掃描,藉由定期實施安全專家的手動滲透測試(入侵測試),能夠找出工具難以發現的商業邏輯缺陷,或是複雜的存取控制漏洞。

9. 詳細的防禦架構與維運 (Part 3)

在企業級規模的Web應用程式中,除了前述的編碼等級對策外,基礎設施等級的多層防禦也是不可或缺的。

9.1 WAF (Web Application Firewall) 的導入

Web Application Firewall (WAF) 是監控並過濾傳向Web應用程式的流量,在攻擊到達應用程式前阻擋如SQL注入攻擊或跨網站指令碼(XSS)等攻擊的系統。WAF不僅具備基於特徵碼的偵測,藉由結合行為偵測(異常偵測),也提升了對零日攻擊的應對能力。

9.2 安全CI/CD管線的建構

基於DevSecOps的概念,將安全測試自動化並納入持續整合/持續交付(CI/CD)的管線中非常重要。

  • SAST (Static Application Security Testing): 靜態分析原始碼,並偵測包含漏洞的編碼模式。
  • DAST (Dynamic Application Security Testing): 對運作中的應用程式傳送模擬的攻擊請求,並偵測執行時的漏洞。
  • SCA (Software Composition Analysis): 偵測所使用的開源函式庫或元件中包含的已知漏洞(CVE),並促使其更新。

9.3 定期實施滲透測試

不僅是透過自動化工具進行掃描,藉由定期實施安全專家的手動滲透測試(入侵測試),能夠找出工具難以發現的商業邏輯缺陷,或是複雜的存取控制漏洞。

10. 詳細的防禦架構與維運 (Part 4)

在企業級規模的Web應用程式中,除了前述的編碼等級對策外,基礎設施等級的多層防禦也是不可或缺的。

10.1 WAF (Web Application Firewall) 的導入

Web Application Firewall (WAF) 是監控並過濾傳向Web應用程式的流量,在攻擊到達應用程式前阻擋如SQL注入攻擊或跨網站指令碼(XSS)等攻擊的系統。WAF不僅具備基於特徵碼的偵測,藉由結合行為偵測(異常偵測),也提升了對零日攻擊的應對能力。

10.2 安全CI/CD管線的建構

基於DevSecOps的概念,將安全測試自動化並納入持續整合/持續交付(CI/CD)的管線中非常重要。

  • SAST (Static Application Security Testing): 靜態分析原始碼,並偵測包含漏洞的編碼模式。
  • DAST (Dynamic Application Security Testing): 對運作中的應用程式傳送模擬的攻擊請求,並偵測執行時的漏洞。
  • SCA (Software Composition Analysis): 偵測所使用的開源函式庫或元件中包含的已知漏洞(CVE),並促使其更新。

10.3 定期實施滲透測試

不僅是透過自動化工具進行掃描,藉由定期實施安全專家的手動滲透測試(入侵測試),能夠找出工具難以發現的商業邏輯缺陷,或是複雜的存取控制漏洞。

11. 詳細的防禦架構與維運 (Part 5)

在企業級規模的Web應用程式中,除了前述的編碼等級對策外,基礎設施等級的多層防禦也是不可或缺的。

11.1 WAF (Web Application Firewall) 的導入

Web Application Firewall (WAF) 是監控並過濾傳向Web應用程式的流量,在攻擊到達應用程式前阻擋如SQL注入攻擊或跨網站指令碼(XSS)等攻擊的系統。WAF不僅具備基於特徵碼的偵測,藉由結合行為偵測(異常偵測),也提升了對零日攻擊的應對能力。

11.2 安全CI/CD管線的建構

基於DevSecOps的概念,將安全測試自動化並納入持續整合/持續交付(CI/CD)的管線中非常重要。

  • SAST (Static Application Security Testing): 靜態分析原始碼,並偵測包含漏洞的編碼模式。
  • DAST (Dynamic Application Security Testing): 對運作中的應用程式傳送模擬的攻擊請求,並偵測執行時的漏洞。
  • SCA (Software Composition Analysis): 偵測所使用的開源函式庫或元件中包含的已知漏洞(CVE),並促使其更新。

11.3 定期實施滲透測試

不僅是透過自動化工具進行掃描,藉由定期實施安全專家的手動滲透測試(入侵測試),能夠找出工具難以發現的商業邏輯缺陷,或是複雜的存取控制漏洞。

12. 詳細的防禦架構與維運 (Part 6)

在企業級規模的Web應用程式中,除了前述的編碼等級對策外,基礎設施等級的多層防禦也是不可或缺的。

12.1 WAF (Web Application Firewall) 的導入

Web Application Firewall (WAF) 是監控並過濾傳向Web應用程式的流量,在攻擊到達應用程式前阻擋如SQL注入攻擊或跨網站指令碼(XSS)等攻擊的系統。WAF不僅具備基於特徵碼的偵測,藉由結合行為偵測(異常偵測),也提升了對零日攻擊的應對能力。

12.2 安全CI/CD管線的建構

基於DevSecOps的概念,將安全測試自動化並納入持續整合/持續交付(CI/CD)的管線中非常重要。

  • SAST (Static Application Security Testing): 靜態分析原始碼,並偵測包含漏洞的編碼模式。
  • DAST (Dynamic Application Security Testing): 對運作中的應用程式傳送模擬的攻擊請求,並偵測執行時的漏洞。
  • SCA (Software Composition Analysis): 偵測所使用的開源函式庫或元件中包含的已知漏洞(CVE),並促使其更新。

12.3 定期實施滲透測試

不僅是透過自動化工具進行掃描,藉由定期實施安全專家的手動滲透測試(入侵測試),能夠找出工具難以發現的商業邏輯缺陷,或是複雜的存取控制漏洞。

13. 詳細的防禦架構與維運 (Part 7)

在企業級規模的Web應用程式中,除了前述的編碼等級對策外,基礎設施等級的多層防禦也是不可或缺的。

13.1 WAF (Web Application Firewall) 的導入

Web Application Firewall (WAF) 是監控並過濾傳向Web應用程式的流量,在攻擊到達應用程式前阻擋如SQL注入攻擊或跨網站指令碼(XSS)等攻擊的系統。WAF不僅具備基於特徵碼的偵測,藉由結合行為偵測(異常偵測),也提升了對零日攻擊的應對能力。

13.2 安全CI/CD管線的建構

基於DevSecOps的概念,將安全測試自動化並納入持續整合/持續交付(CI/CD)的管線中非常重要。

  • SAST (Static Application Security Testing): 靜態分析原始碼,並偵測包含漏洞的編碼模式。
  • DAST (Dynamic Application Security Testing): 對運作中的應用程式傳送模擬的攻擊請求,並偵測執行時的漏洞。
  • SCA (Software Composition Analysis): 偵測所使用的開源函式庫或元件中包含的已知漏洞(CVE),並促使其更新。

13.3 定期實施滲透測試

不僅是透過自動化工具進行掃描,藉由定期實施安全專家的手動滲透測試(入侵測試),能夠找出工具難以發現的商業邏輯缺陷,或是複雜的存取控制漏洞。

14. 詳細的防禦架構與維運 (Part 8)

在企業級規模的Web應用程式中,除了前述的編碼等級對策外,基礎設施等級的多層防禦也是不可或缺的。

14.1 WAF (Web Application Firewall) 的導入

Web Application Firewall (WAF) 是監控並過濾傳向Web應用程式的流量,在攻擊到達應用程式前阻擋如SQL注入攻擊或跨網站指令碼(XSS)等攻擊的系統。WAF不僅具備基於特徵碼的偵測,藉由結合行為偵測(異常偵測),也提升了對零日攻擊的應對能力。

14.2 安全CI/CD管線的建構

基於DevSecOps的概念,將安全測試自動化並納入持續整合/持續交付(CI/CD)的管線中非常重要。

  • SAST (Static Application Security Testing): 靜態分析原始碼,並偵測包含漏洞的編碼模式。
  • DAST (Dynamic Application Security Testing): 對運作中的應用程式傳送模擬的攻擊請求,並偵測執行時的漏洞。
  • SCA (Software Composition Analysis): 偵測所使用的開源函式庫或元件中包含的已知漏洞(CVE),並促使其更新。

14.3 定期實施滲透測試

不僅是透過自動化工具進行掃描,藉由定期實施安全專家的手動滲透測試(入侵測試),能夠找出工具難以發現的商業邏輯缺陷,或是複雜的存取控制漏洞。

15. 詳細的防禦架構與維運 (Part 9)

在企業級規模的Web應用程式中,除了前述的編碼等級對策外,基礎設施等級的多層防禦也是不可或缺的。

15.1 WAF (Web Application Firewall) 的導入

Web Application Firewall (WAF) 是監控並過濾傳向Web應用程式的流量,在攻擊到達應用程式前阻擋如SQL注入攻擊或跨網站指令碼(XSS)等攻擊的系統。WAF不僅具備基於特徵碼的偵測,藉由結合行為偵測(異常偵測),也提升了對零日攻擊的應對能力。

15.2 安全CI/CD管線的建構

基於DevSecOps的概念,將安全測試自動化並納入持續整合/持續交付(CI/CD)的管線中非常重要。

  • SAST (Static Application Security Testing): 靜態分析原始碼,並偵測包含漏洞的編碼模式。
  • DAST (Dynamic Application Security Testing): 對運作中的應用程式傳送模擬的攻擊請求,並偵測執行時的漏洞。
  • SCA (Software Composition Analysis): 偵測所使用的開源函式庫或元件中包含的已知漏洞(CVE),並促使其更新。

15.3 定期實施滲透測試

不僅是透過自動化工具進行掃描,藉由定期實施安全專家的手動滲透測試(入侵測試),能夠找出工具難以發現的商業邏輯缺陷,或是複雜的存取控制漏洞。

16. 詳細的防禦架構與維運 (Part 10)

在企業級規模的Web應用程式中,除了前述的編碼等級對策外,基礎設施等級的多層防禦也是不可或缺的。

16.1 WAF (Web Application Firewall) 的導入

Web Application Firewall (WAF) 是監控並過濾傳向Web應用程式的流量,在攻擊到達應用程式前阻擋如SQL注入攻擊或跨網站指令碼(XSS)等攻擊的系統。WAF不僅具備基於特徵碼的偵測,藉由結合行為偵測(異常偵測),也提升了對零日攻擊的應對能力。

16.2 安全CI/CD管線的建構

基於DevSecOps的概念,將安全測試自動化並納入持續整合/持續交付(CI/CD)的管線中非常重要。

  • SAST (Static Application Security Testing): 靜態分析原始碼,並偵測包含漏洞的編碼模式。
  • DAST (Dynamic Application Security Testing): 對運作中的應用程式傳送模擬的攻擊請求,並偵測執行時的漏洞。
  • SCA (Software Composition Analysis): 偵測所使用的開源函式庫或元件中包含的已知漏洞(CVE),並促使其更新。

16.3 定期實施滲透測試

不僅是透過自動化工具進行掃描,藉由定期實施安全專家的手動滲透測試(入侵測試),能夠找出工具難以發現的商業邏輯缺陷,或是複雜的存取控制漏洞。

17. 詳細的防禦架構與維運 (Part 11)

在企業級規模的Web應用程式中,除了前述的編碼等級對策外,基礎設施等級的多層防禦也是不可或缺的。

17.1 WAF (Web Application Firewall) 的導入

Web Application Firewall (WAF) 是監控並過濾傳向Web應用程式的流量,在攻擊到達應用程式前阻擋如SQL注入攻擊或跨網站指令碼(XSS)等攻擊的系統。WAF不僅具備基於特徵碼的偵測,藉由結合行為偵測(異常偵測),也提升了對零日攻擊的應對能力。

17.2 安全CI/CD管線的建構

基於DevSecOps的概念,將安全測試自動化並納入持續整合/持續交付(CI/CD)的管線中非常重要。

  • SAST (Static Application Security Testing): 靜態分析原始碼,並偵測包含漏洞的編碼模式。
  • DAST (Dynamic Application Security Testing): 對運作中的應用程式傳送模擬的攻擊請求,並偵測執行時的漏洞。
  • SCA (Software Composition Analysis): 偵測所使用的開源函式庫或元件中包含的已知漏洞(CVE),並促使其更新。

17.3 定期實施滲透測試

不僅是透過自動化工具進行掃描,藉由定期實施安全專家的手動滲透測試(入侵測試),能夠找出工具難以發現的商業邏輯缺陷,或是複雜的存取控制漏洞。

18. 詳細的防禦架構與維運 (Part 12)

在企業級規模的Web應用程式中,除了前述的編碼等級對策外,基礎設施等級的多層防禦也是不可或缺的。

18.1 WAF (Web Application Firewall) 的導入

Web Application Firewall (WAF) 是監控並過濾傳向Web應用程式的流量,在攻擊到達應用程式前阻擋如SQL注入攻擊或跨網站指令碼(XSS)等攻擊的系統。WAF不僅具備基於特徵碼的偵測,藉由結合行為偵測(異常偵測),也提升了對零日攻擊的應對能力。

18.2 安全CI/CD管線的建構

基於DevSecOps的概念,將安全測試自動化並納入持續整合/持續交付(CI/CD)的管線中非常重要。

  • SAST (Static Application Security Testing): 靜態分析原始碼,並偵測包含漏洞的編碼模式。
  • DAST (Dynamic Application Security Testing): 對運作中的應用程式傳送模擬的攻擊請求,並偵測執行時的漏洞。
  • SCA (Software Composition Analysis): 偵測所使用的開源函式庫或元件中包含的已知漏洞(CVE),並促使其更新。

18.3 定期實施滲透測試

不僅是透過自動化工具進行掃描,藉由定期實施安全專家的手動滲透測試(入侵測試),能夠找出工具難以發現的商業邏輯缺陷,或是複雜的存取控制漏洞。

19. 詳細的防禦架構與維運 (Part 13)

在企業級規模的Web應用程式中,除了前述的編碼等級對策外,基礎設施等級的多層防禦也是不可或缺的。

19.1 WAF (Web Application Firewall) 的導入

Web Application Firewall (WAF) 是監控並過濾傳向Web應用程式的流量,在攻擊到達應用程式前阻擋如SQL注入攻擊或跨網站指令碼(XSS)等攻擊的系統。WAF不僅具備基於特徵碼的偵測,藉由結合行為偵測(異常偵測),也提升了對零日攻擊的應對能力。

19.2 安全CI/CD管線的建構

基於DevSecOps的概念,將安全測試自動化並納入持續整合/持續交付(CI/CD)的管線中非常重要。

  • SAST (Static Application Security Testing): 靜態分析原始碼,並偵測包含漏洞的編碼模式。
  • DAST (Dynamic Application Security Testing): 對運作中的應用程式傳送模擬的攻擊請求,並偵測執行時的漏洞。
  • SCA (Software Composition Analysis): 偵測所使用的開源函式庫或元件中包含的已知漏洞(CVE),並促使其更新。

19.3 定期實施滲透測試

不僅是透過自動化工具進行掃描,藉由定期實施安全專家的手動滲透測試(入侵測試),能夠找出工具難以發現的商業邏輯缺陷,或是複雜的存取控制漏洞。

20. 詳細的防禦架構與維運 (Part 14)

在企業級規模的Web應用程式中,除了前述的編碼等級對策外,基礎設施等級的多層防禦也是不可或缺的。

20.1 WAF (Web Application Firewall) 的導入

Web Application Firewall (WAF) 是監控並過濾傳向Web應用程式的流量,在攻擊到達應用程式前阻擋如SQL注入攻擊或跨網站指令碼(XSS)等攻擊的系統。WAF不僅具備基於特徵碼的偵測,藉由結合行為偵測(異常偵測),也提升了對零日攻擊的應對能力。

20.2 安全CI/CD管線的建構

基於DevSecOps的概念,將安全測試自動化並納入持續整合/持續交付(CI/CD)的管線中非常重要。

  • SAST (Static Application Security Testing): 靜態分析原始碼,並偵測包含漏洞的編碼模式。
  • DAST (Dynamic Application Security Testing): 對運作中的應用程式傳送模擬的攻擊請求,並偵測執行時的漏洞。
  • SCA (Software Composition Analysis): 偵測所使用的開源函式庫或元件中包含的已知漏洞(CVE),並促使其更新。

20.3 定期實施滲透測試

不僅是透過自動化工具進行掃描,藉由定期實施安全專家的手動滲透測試(入侵測試),能夠找出工具難以發現的商業邏輯缺陷,或是複雜的存取控制漏洞。

comments powered by Disqus