顯示具有 ZAP 標籤的文章。 顯示所有文章
顯示具有 ZAP 標籤的文章。 顯示所有文章

2025年7月8日 星期二

[研究]ASP.NET WebForm 網站用 OWASP ZAP 2.16.1 掃描發現【Content Security Policy (CSP) Header Not Set】弱點,該如何解 ?

[研究]ASP.NET WebForm 網站用 OWASP ZAP 2.16.1 掃描發現【Content Security Policy (CSP) Header Not Set】弱點,該如何解 ?

2025-07-07

環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C# + SQL Server 2019 + SQL Server Management Studio (SSMS) 20

********************************************************************************

ASP.NET WebForm 網站用 OWASP ZIP 2.16.1 掃描發現【Content Security Policy (CSP) Header Not Set】弱點,該如何解 ?

證據: (沒寫)

來源: 被動 (10038 - Content Security Policy (CSP) Header Not Set)

說明:

Content Security Policy (CSP) is an added layer of security that helps to detect and mitigate certain types of attacks, including Cross Site Scripting (XSS) and data injection attacks. These attacks are used for everything from data theft to site defacement or distribution of malware. CSP provides a set of standard HTTP headers that allow website owners to declare approved sources of content that browsers should be allowed to load on that page — covered types are JavaScript, CSS, HTML frames, fonts, images and embeddable objects such as Java applets, ActiveX, audio and video files.

解決方案:

Ensure that your web server, application server, load balancer, etc. is configured to set the Content-Security-Policy header.

參考資料

https://developer.mozilla.org/en-US/docs/Web/Security/CSP/Introducing_Content_Security_Policy

https://cheatsheetseries.owasp.org/cheatsheets/Content_Security_Policy_Cheat_Sheet.html

https://www.w3.org/TR/CSP/

********************************************************************************

ChatGPT 說:

針對 ASP.NET WebForm 網站,OWASP ZAP 2.16.1 掃描出【Content Security Policy (CSP) Header Not Set】弱點,解決方法如下:

【弱點說明】

CSP(Content Security Policy,內容安全政策)是透過 HTTP Response Header 控制瀏覽器僅允許來自指定來源的資源(JS、CSS、圖片、字型、iframe、影片、物件等),可有效降低:

  • XSS(跨站腳本)
  • 資料注入
  • 惡意外部資源載入

【ASP.NET WebForm 解決方式】

通常在 Global.asax.cs 的 Application_BeginRequest 事件中加入 CSP Header:

protected void Application_BeginRequest(object sender, EventArgs e)
{
    // 基本範例,限制所有資源來源
    Response.Headers.Add("Content-Security-Policy", "default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self'; font-src 'self';");

    // 依實際需求開放特定來源,例如允許 Google 字型與 reCAPTCHA
    // Response.Headers.Add("Content-Security-Policy", "default-src 'self'; script-src 'self' https://www.google.com https://www.gstatic.com; style-src 'self' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com; img-src 'self' data:;");
}

【常見注意事項】

分階段導入建議:

初期可用 Content-Security-Policy-Report-Only 測試,不會強制阻擋資源,僅回報違規內容,利於觀察:

Response.Headers.Add("Content-Security-Policy-Report-Only", "default-src 'self'; report-uri /csp-report-endpoint");

避免破壞現有功能:

  • 若網站使用 CDN、Google 字型、外部 API、第三方驗證(如 reCAPTCHA),需在 script-src、style-src 等開放指定來源。

慎用 unsafe-inline、unsafe-eval:

  • unsafe-inline:允許內嵌 <script> 或 style,易有 XSS 風險。
  • 強烈建議重構前端程式碼,避免使用內嵌腳本或樣式。

【進階示例:CSP 常見設定】

Response.Headers.Add("Content-Security-Policy",
    "default-src 'self'; " +
    "script-src 'self' https://www.google.com https://www.gstatic.com; " +
    "style-src 'self' https://fonts.googleapis.com; " +
    "font-src 'self' https://fonts.gstatic.com; " +
    "img-src 'self' data:; " +
    "frame-src 'self' https://www.google.com;");

【其他參考資源】

MDN 官方文件:CSP

https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/CSP

OWASP CSP Cheat Sheet

https://cheatsheetseries.owasp.org/cheatsheets/Content_Security_Policy_Cheat_Sheet.html

【總結】

  • ✅ 建議從 Content-Security-Policy-Report-Only 開始測試,逐步收斂政策。
  • ✅ 明確設定允許的資源來源,降低 XSS 等攻擊面。
  • ✅ 設定位置建議放在 Global.asax.cs,或在 IIS/Web.config 統一透過 httpProtocol 加入 Header(如 IIS 無特別設定可用程式碼方式處理)。

********************************************************************************

ChatGPT 說:

根據你的網站環境:

  • 有用 Google reCAPTCHA
  • ❌ 無外部 CDN
  • ❌ 無第三方 iframe

以下是安全且符合你需求的 CSP 設定,可加入 Global.asax.cs:

【完整範例:Global.asax.cs】

protected void Application_BeginRequest(object sender, EventArgs e)
{
    // 正式上線用,強制生效
    Response.Headers.Add("Content-Security-Policy",
        "default-src 'self'; " +
        "script-src 'self' https://www.google.com https://www.gstatic.com; " +
        "style-src 'self'; " +
        "img-src 'self' data:; " +
        "font-src 'self'; " +
        "frame-src https://www.google.com; " +
        "connect-src 'self';"
    );
}


【說明】

  • 政策類型 說明
  • default-src 'self' 預設只允許同源內容 (本網站)
  • script-src 允許本網站及 Google reCAPTCHA 所需的 JS 檔
  • style-src 'self' 僅允許網站本身 CSS
  • img-src 'self' data: 圖片來源限制本網站,可額外允許 Base64 圖片
  • font-src 'self' 字型來源限制本網站
  • frame-src 僅允許載入 Google reCAPTCHA 生成的 iframe
  • connect-src 'self' 僅允許網站本身的 AJAX、API 請求

【開發階段建議:觀察模式】

若怕 CSP 設太嚴格破壞功能,可先用 Report-Only 模式:

protected void Application_BeginRequest(object sender, EventArgs e)
{
    Response.Headers.Add("Content-Security-Policy-Report-Only",
        "default-src 'self'; " +
        "script-src 'self' https://www.google.com https://www.gstatic.com; " +
        "style-src 'self'; " +
        "img-src 'self' data:; " +
        "font-src 'self'; " +
        "frame-src https://www.google.com; " +
        "connect-src 'self';"
    );
}

這樣瀏覽器只回報違規,不會強制擋掉,適合邊測試邊調整。

【其他提醒】

  • 若 reCAPTCHA 是 v2 Invisible 或 v3 版本,來源 https://www.google.com 和 https://www.gstatic.com 足夠。
  • 若網站未來改用 Google 字型或其他第三方服務,需另外調整 script-src、style-src 或其他規則。
  • 若想收集違規報告,可加上 report-uri,不過新版 CSP 改用 report-to,可再討論設置。

【結論】

  • ✅ 這份 CSP 適合你目前環境
  • ✅ 可強化 XSS、防止不明外部內容載入
  • ✅ 可先用 Report-Only 模式安全測試

********************************************************************************

還是有問題,續這篇

[研究]ASP.NET WebForm 網站 OWASP ZAP 2.16.1 發現【CSP: Failure to Define Directive with No Fallback】弱點,該如何解 ?
https://shaurong.blogspot.com/2025/07/aspnet-webform-owasp-zap-2161-csp.html


(完)

相關

[研究]ASP.NET WebForm 網站用 OWASP ZAP 2.16.1 掃描發現【Absence of Anti-CSRF Tokens】弱點,該如何解 ?

[研究]ASP.NET WebForm 網站用 OWASP ZAP 2.16.1 掃描發現【Absence of Anti-CSRF Tokens】弱點,該如何解 ?

2025-07-08

環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C# + SQL Server 2019 + SQL Server Management Studio (SSMS) 20

********************************************************************************


ASP.NET WebForm 網站用 OWASP ZIP 2.16.1 掃描發現【Absence of Anti-CSRF Tokens】弱點,該如何解 ?

證據: <form name="aspnetForm" method="post" action="./Login.aspx" id="aspnetForm">

來源: 被動 (10202 - Absence of Anti-CSRF Tokens)

說明: No Anti-CSRF tokens were found in a HTML submission form.

A cross-site request forgery is an attack that involves forcing a victim to send an HTTP request to a target destination without their knowledge or intent in order to perform an action as the victim. The underlying cause is application functionality using predictable URL/form actions in a repeatable way. The nature of the attack is that CSRF exploits the trust that a web site has for a user. By contrast, cross-site scripting (XSS) exploits the trust that a user has for a web site. Like XSS, CSRF attacks are not necessarily cross-site, but they can be. Cross-site request forgery is also known as CSRF, XSRF, one-click attack, session riding, confused deputy, and sea surf.

CSRF attacks are effective in a number of situations, including:

    * The victim has an active session on the target site.

    * The victim is authenticated via HTTP auth on the target site.

    * The victim is on the same local network as the target site.

CSRF has primarily been used to perform an action against a target site using the victim's privileges, but recent techniques have been discovered to disclose information by gaining access to the response. The risk of information disclosure is dramatically increased when the target site is vulnerable to XSS, because XSS can be used as a platform for CSRF, allowing the attack to operate within the bounds of the same-origin policy.

解決方案

Phase: Architecture and Design

Use a vetted library or framework that does not allow this weakness to occur or provides constructs that make this weakness easier to avoid.

For example, use anti-CSRF packages such as the OWASP CSRFGuard.

Phase: Implementation

Ensure that your application is free of cross-site scripting issues, because most CSRF defenses can be bypassed using attacker-controlled script.

Phase: Architecture and Design

Generate a unique nonce for each form, place the nonce into the form, and verify the nonce upon receipt of the form. Be sure that the nonce is not predictable (CWE-330).

Note that this can be bypassed using XSS.

Identify especially dangerous operations. When the user performs a dangerous operation, send a separate confirmation request to ensure that the user intended to perform that operation.

Note that this can be bypassed using XSS.

Use the ESAPI Session Management control.

This control includes a component for CSRF.

Do not use the GET method for any request that triggers a state change.

Phase: Implementation

Check the HTTP Referer header to see if the request originated from an expected page. This could break legitimate functionality, because users or proxies may have disabled sending the Referer for privacy reasons.

********************************************************************************

ChatGPT 說:

針對 ASP.NET WebForm 被 OWASP ZAP 2.16.1 掃描發現「Absence of Anti-CSRF Tokens」弱點,具體解決方法如下:

一、背景說明

此弱點表示:

  • 你的 <form> 沒有包含防止 CSRF(跨站請求偽造)的 Token。
  • ASP.NET WebForms 預設沒有內建 CSRF 保護,必須自行實作。

二、標準解法 — 手動實作 Anti-CSRF Token

你可以參考以下方式為 WebForm 網站加上 Anti-CSRF:


1. 產生 CSRF Token

在 Page_Load 事件內,若為第一次載入頁面,產生 Token 並儲存在 Session,再寫入隱藏欄位:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        string csrfToken = Guid.NewGuid().ToString();
        Session["CSRFToken"] = csrfToken;
        hiddenCsrfToken.Value = csrfToken;
    }
}

2. 前端 <form> 加入隱藏欄位

你的 .aspx 頁面:

<form id="aspnetForm" runat="server">
    <asp:HiddenField ID="hiddenCsrfToken" runat="server" />
    
    <!-- 其他表單內容 -->

    <asp:Button ID="btnSubmit" runat="server" Text="送出" OnClick="btnSubmit_Click" />
</form>


3. 驗證 CSRF Token

在伺服器端驗證:

protected void btnSubmit_Click(object sender, EventArgs e)
{
    string postedToken = hiddenCsrfToken.Value;
    string sessionToken = Session["CSRFToken"] as string;

    if (string.IsNullOrEmpty(postedToken) || postedToken != sessionToken)
    {
        // 驗證失敗,拒絕請求
        Response.StatusCode = 403;
        Response.End();
    }

    // 驗證通過,處理正常流程
}


三、進階建議

  • Token 重新產生:驗證成功後可重新產生 Token 以防重放攻擊。
  • Token 儲存方式:使用 Session、ViewState 或 HttpOnly Cookie 組合提升安全性。
  • 避免 XSS:CSRF 防禦易被 XSS 攻擊繞過,請先確保網站無其他 XSS 弱點。


四、其他方案

1. 使用 OWASP CSRFGuard

  • 官方推薦使用 OWASP CSRFGuard,但 ASP.NET 原生支援不佳,需額外整合。
  • 若不想自製,可考慮 ASP.NET MVC 或 .NET Core 這類內建 CSRF 防禦的框架。

2. 驗證 Referer 或 Origin

可以額外驗證 Request.UrlReferrer,但不可靠,容易因瀏覽器、代理設定導致判斷失準。

if (Request.UrlReferrer == null || !Request.UrlReferrer.Host.Equals(Request.Url.Host, StringComparison.OrdinalIgnoreCase))
{
    Response.StatusCode = 403;
    Response.End();
}


五、結論

針對 WebForm:

  • ✅ 必須自行在每個重要 <form> 加入 Anti-CSRF Token。
  • ✅ 伺服器端驗證 Token 與 Session 是否匹配。
  • ✅ 減少 GET 觸發狀態變更操作。
  • ✅ 確保無其他 XSS 弱點。

這樣即可通過 OWASP ZAP 對「Absence of Anti-CSRF Tokens」的檢測。

********************************************************************************

若為使用 MasterPage 的 ASP.NET WebForm 網站,且 <form id="form1" runat="server"> 在 MasterPage 中,但 button 不在 MasterPage 中,上面程式如何改 ?

ChatGPT 說:

✅ 一、MasterPage (Site.Master)

MasterPage 中 <form> 只能有一個。請加上隱藏欄位:

<form id="form1" runat="server">
    <asp:HiddenField ID="hiddenCsrfToken" runat="server" />
    
    <asp:ContentPlaceHolder ID="MainContent" runat="server" />
</form>

✅ 二、Content Page (Login.aspx + Login.aspx.cs)


protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        string csrfToken = Guid.NewGuid().ToString();
        Session["CSRFToken"] = csrfToken;

        // 從 MasterPage 尋找 HiddenField 並設定值
        HiddenField hiddenToken = (HiddenField)Master.FindControl("hiddenCsrfToken");
        if (hiddenToken != null)
        {
            hiddenToken.Value = csrfToken;
        }
    }
}


protected void btnLogin_Click(object sender, EventArgs e)
{
    string postedToken = "";
    string sessionToken = Session["CSRFToken"] as string;

    // 取出 MasterPage 中的 HiddenField
    HiddenField hiddenToken = (HiddenField)Master.FindControl("hiddenCsrfToken");
    if (hiddenToken != null)
    {
        postedToken = hiddenToken.Value;
    }

    if (string.IsNullOrEmpty(postedToken) || postedToken != sessionToken)
    {
        // 驗證失敗,封鎖請求
        Response.StatusCode = 403;
        Response.End();
        return;
    }

    // 驗證成功,執行登入流程
}


✅ 三、可選擇改成 ViewStateUserKey

ASP.NET 內建 CSRF 防禦之一是設定 ViewStateUserKey,但它只能保護 ViewState,不保護 <form> 自己送出的資料。建議與上述 Token 一起使用:

protected void Page_Init(object sender, EventArgs e)
{
    if (Session["SessionID"] == null)
        Session["SessionID"] = Guid.NewGuid().ToString();

    this.ViewStateUserKey = Session["SessionID"].ToString();
}

*******************************************************************************

(完)

相關

2023年11月21日 星期二

[研究][ASP.NET]ZAP 與 AWVS 黑箱弱點掃描工具結果比較

[研究][ASP.NET]ZAP 與 AWVS 黑箱弱點掃描工具結果比較

2023-11-21

ZAP  是 OWASP Zed Attack Proxy (敝人用 14.2.0)

AWVS 是 Acunetix Web Vulnerability Scanner , Acunetix Web Application Security Scanner (可能是 15.x,不確定)

環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C#

敝人沒有 AWVS 修復後掃描結果,因該修復前 AWVS 不是敝人掃描。敝人想測試修復是否成功,故找了免費的 ZAP 來測試。

********************************************************************************

某些低等級弱點修復前,AWVS掃描結果

Low:

  • Cookies without Secure flag set(Cookies 未設定 Secure flag)
  • HTTP Strict Transport Security (HSTS) not implemented(未使用 HSTS 強制安全傳輸技術)
  • Possible virtual host found(可能虛擬主機存在)
  • Clickjacking: X-Frame-Options header(點閱綁架, User Interface redress attack, UI redress attack, UI redressing)
  • Cookies with missing, inconsistent or contradictory properties(部分Cookie屬性設定有衝突、缺少或不符合格式)

********************************************************************************

某些等級弱點修復,ZAP掃描結果

Medium:

  • Absence of Anti-CSRF Tokens (11)
  • Content Security Policy (CSP) Header Not Set (12)
  • ELMAH 資訊外洩
  • Vulnerable JS Library (2)
Low:
  • Cookie Without Secure Flag (3)
  • Cookie without SameSite Attribute
  • Cross-Domain JavaScript Source File Inclusion (3)
  • Strict-Transport-Security Header Not Set (46)
Info:
  • Authentication Request Identified
  • Information Disclosure - Suspicious Comments (51)
  • Modern Web Application (11)
  • Re-examine Cache-control Directives (14)
  • Session Management Response Identified (5)
  • User Agent Fuzzer (12)
  • User Controllable HTML Element Attribute (Potential XSS) (11)

********************************************************************************

某些低等級弱點修復,ZAP掃描結果

Medium:
  • Absence of Anti-CSRF Tokens (11)
  • Content Security Policy (CSP) Header Not Set (12)
  • ELMAH 資訊外洩
  • Vulnerable JS Library (2)
Low:
  • Cookie without SameSite Attribute
  • Cross-Domain JavaScript Source File Inclusion (3)
Info:
  • Authentication Request Identified
  • Information Disclosure - Suspicious Comments (17)
  • Modern Web Application (11)
  • Re-examine Cache-control Directives (14)
  • Session Management Response Identified (18)
  • User Agent Fuzzer (12)
  • User Controllable HTML Element Attribute (Potential XSS) (11) 

********************************************************************************

不同的工具,判定結果本就可能不同。

********************************************************************************

SameSite 問題在 AWVS 是在 Cookies with missing, inconsistent or contradictory properties 弱點,因為 ASP.NET WebForm 的 Web.Config 並沒有直接支援該屬性,是以程式方式解決,但 ZAP 似乎仍判定有問題。

[研究][ASP.NET]弱點掃描出現Cookies with missing, inconsistent or contradictory properties之解決
https://shaurong.blogspot.com/2023/11/aspnetcookies-with-missing-inconsistent.html

敝人沒有 AWVS 修復後掃描結果,因該修復前 AWVS 不是敝人掃描。敝人想測試修復是否成功,故找了免費的 ZAP 來測試。

(完)

相關

[研究][ASP.NET]ZAP 與 AWVS 黑箱弱點掃描工具結果比較https://shaurong.blogspot.com/2023/11/aspnetzap-awvs.html

[研究][ASP.NET]OWASP Zed Attack Proxy (ZAP) 2.14.0 弱掃試用https://shaurong.blogspot.com/2023/11/aspnetowasp-zed-attack-proxy-zap-2140.html

[研究] OWASP Zed Attack Proxy (ZAP) v2.7.0 黑箱弱點掃描工具安裝與試用
http://shaurong.blogspot.com/2018/06/owasp-zed-attack-proxy-zap-v270.html

[研究] OWASP WebGoat 8.0 安裝
http://shaurong.blogspot.com/2018/06/owasp-webgoat-80.html

[研究] OWASP WebGoatFor.Net 安裝
http://shaurong.blogspot.com/2016/12/owasp-webgoatfornet.html

[研究] OWASP WebGoat 7.1 安裝
http://shaurong.blogspot.com/2016/12/owasp-webgoat-71.html

[研究] OWASP Zed Attack Proxy (ZAP) 2.4.2、2.6.0 滲透測試、弱點掃描工具安裝與試用
http://shaurong.blogspot.com/2015/10/owasp-zed-attack-proxy-zap-242.html

[研究][ASP.NET]OWASP Zed Attack Proxy (ZAP) 2.14.0 弱掃試用

[研究][ASP.NET]OWASP Zed Attack Proxy (ZAP) 2.14.0 弱掃試用

2023-11-21

環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C#

OWASP Zed Attack Proxy (ZAP) 是免費黑箱 Web 弱點掃描工具

********************************************************************************

Default.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" 
Inherits="WebApplication3.Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            Test
        </div>
    </form>
</body>
</html>


Default.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication3
{
    public partial class Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }
    }
}

基本上就是預設的 WebForm Code。

********************************************************************************

測試2次,每次測試完,都把 ZAP 關閉,再重新啟動。

第一次測試 https://localhost

第二次測試 https://xxx.xxx.xxx.xxx


(下圖) 注意,預設是 http,要改成 https (配合敝人的環境)



********************************************************************************

Medium:

Absence of Anti-CSRF Tokens

Content Security Policy (CSP) Header Not Set

Missing Anti-clickjacking Header


Low:

Server Leaks Information via "X-Powered-By" HTTP Response Header Field(s)

Server Leaks Version Information via "Server" HTTP Response Header Field

Strict-Transport-Security Header Not Set

X-AspNet-Version Response Header

X-Content-Type-Options Header Missing


Info:

Re-examine Cache-control Directives Informational

User Agent Fuzzer Informational

User Controllable HTML Element Attribute (Potential XSS)

(完)

相關

[研究][ASP.NET]OWASP Zed Attack Proxy (ZAP) 2.14.0 弱掃試用https://shaurong.blogspot.com/2023/11/aspnetowasp-zed-attack-proxy-zap-2140.html

[研究] OWASP Zed Attack Proxy (ZAP) v2.7.0 黑箱弱點掃描工具安裝與試用
http://shaurong.blogspot.com/2018/06/owasp-zed-attack-proxy-zap-v270.html

[研究] OWASP WebGoat 8.0 安裝
http://shaurong.blogspot.com/2018/06/owasp-webgoat-80.html

[研究] OWASP WebGoatFor.Net 安裝
http://shaurong.blogspot.com/2016/12/owasp-webgoatfornet.html

[研究] OWASP WebGoat 7.1 安裝
http://shaurong.blogspot.com/2016/12/owasp-webgoat-71.html

[研究] OWASP Zed Attack Proxy (ZAP) 2.4.2、2.6.0 滲透測試、弱點掃描工具安裝與試用
http://shaurong.blogspot.com/2015/10/owasp-zed-attack-proxy-zap-242.html

2018年6月9日 星期六

[研究] OWASP Zed Attack Proxy (ZAP) v2.7.0 黑箱弱點掃描工具安裝與試用

[研究] OWASP Zed Attack Proxy (ZAP) v2.7.0 滲透測試、弱點掃描工具安裝與試用

2018-06-09

ZAP 的前身是 WebScarab

Category:OWASP WebScarab Project
https://www.owasp.org/index.php/Category:OWASP_WebScarab_Project




















(下圖) 也可直接點右上角的叉叉關閉,獲選 No 先不決定

(下圖) 安裝過程雖然不提供中文介面,但是程式啟動後,卻是簡體中文和英文混合的介面,建議切換到英文介面使用



 (下圖) 再次啟動

(下圖) 英文介面了,試著掃描自己建立的 WebGoat 網站看看


(完)

相關

[研究] OWASP Zed Attack Proxy (ZAP) v2.7.0 黑箱弱點掃描工具安裝與試用
http://shaurong.blogspot.com/2018/06/owasp-zed-attack-proxy-zap-v270.html

[研究] OWASP WebGoat 8.0 安裝
http://shaurong.blogspot.com/2018/06/owasp-webgoat-80.html

[研究] OWASP WebGoatFor.Net 安裝
http://shaurong.blogspot.com/2016/12/owasp-webgoatfornet.html

[研究] OWASP WebGoat 7.1 安裝
http://shaurong.blogspot.com/2016/12/owasp-webgoat-71.html

[研究] OWASP Zed Attack Proxy (ZAP) 2.4.2、2.6.0 滲透測試、弱點掃描工具安裝與試用
http://shaurong.blogspot.com/2015/10/owasp-zed-attack-proxy-zap-242.html