從零開始學習 VB.NET 防範 XSS攻擊教學

更新於 發佈於 閱讀時間約 1 分鐘

什麼是 XSS 攻擊?

XSS(Cross-Site Scripting,跨站腳本攻擊)是一種常見的 Web 安全漏洞,攻擊者透過向網站輸入惡意 JavaScript 程式碼,使其在其他使用者的瀏覽器中執行。這可能導致惡意重導、竊取 Cookie、偽造請求等安全風險。

在 ASP.NET Web Forms 應用程式中,如果沒有適當處理使用者輸入,攻擊者可以透過 <script> 標籤插入惡意指令碼。

XSS 攻擊測試範例

假設我們有一個簡單的表單,讓使用者輸入姓名並顯示歡迎訊息。

ASP.NET Web Forms 頁面(Default.aspx)

<%@ Page Title="Home Page" Language="VB" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.vb" Inherits="WebApplication1._Default" ValidateRequest="false" %>

<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">

<main>
<section class="row" aria-labelledby="aspnetTitle">
<h1 id="aspnetTitle">ASP.NET</h1>
<p class="lead">ASP.NET is a free web framework for building great Web sites and Web applications using HTML, CSS, and JavaScript.</p>
<p><a href="http://www.asp.net" class="btn btn-primary btn-md">Learn more &raquo;</a></p>
</section>

<div class="row">
<section class="col-md-4" aria-labelledby="gettingStartedTitle">
<h2 id="gettingStartedTitle">Getting started</h2>
<p>
ASP.NET Web Forms lets you build dynamic websites using a familiar drag-and-drop, event-driven model.
A design surface and hundreds of controls and components let you rapidly build sophisticated, powerful UI-driven sites with data access.
</p>
<p>
<a class="btn btn-default" href="https://go.microsoft.com/fwlink/?LinkId=301948">Learn more &raquo;</a>
</p>
</section>
<section class="col-md-4" aria-labelledby="librariesTitle">
<h2 id="librariesTitle">Get more libraries</h2>
<p>
NuGet is a free Visual Studio extension that makes it easy to add, remove, and update libraries and tools in Visual Studio projects.
</p>
<p>
<a class="btn btn-default" href="https://go.microsoft.com/fwlink/?LinkId=301949">Learn more &raquo;</a>
</p>
</section>
<section class="col-md-4" aria-labelledby="hostingTitle">
<h2 id="hostingTitle">Web Hosting</h2>
<p>
You can easily find a web hosting company that offers the right mix of features and price for your applications.
</p>
<p>
<a class="btn btn-default" href="https://go.microsoft.com/fwlink/?LinkId=301950">Learn more &raquo;</a>
</p>
</section>
</div>
<div>
<asp:Label ID="Label1" runat="server" Text="請輸入您的名字:" />
<asp:TextBox ID="TextBox1" runat="server" AutoPostBack="True"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="送出" OnClick="Button1_Click" CssClass="btn btn-primary"/>
<br /><br />
<asp:Label ID="ResultLabel" runat="server" ForeColor="Blue" />
</div>
</main>
</asp:Content>

後端程式碼(Default.aspx.vb)

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
Dim userName As String = TextBox1.Text.Trim()

If userName <> "" Then
ResultLabel.Text = "Hello, " & userName & "!歡迎來到 ASP.NET Web Forms!"
Else
ResultLabel.Text = "請輸入您的名字!"
End If
End Sub



模擬 XSS 測試

正常頁面如下

raw-image

如果用戶輸入以下內容:

<script>alert('XSS 測試成功!')</script>

這段腳本將會被執行,導致彈出提示框,這就代表網站存在 XSS 漏洞。

raw-image

如何防範 XSS 攻擊?

使用 Server.HtmlEncode() 來轉譯輸入

如果你的應用程式不需要 HTML 標籤,那麼最簡單的方法就是對所有輸入進行 HTML 編碼,防止 JavaScript 執行。

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
Dim userName As String = TextBox1.Text.Trim()

If userName <> "" Then
ResultLabel.Text = "Hello, " & Server.HtmlEncode(userName) & "!歡迎來到 ASP.NET Web Forms!"
Else
ResultLabel.Text = "請輸入您的名字!"
End If
End Sub


這樣即使輸入 <script>alert('XSS')</script>,也只會顯示成純文字,而不會執行 JavaScript。

raw-image

結論

XSS(跨網站指令碼攻擊)是一種常見的 Web 安全漏洞,攻擊者可以利用未經過濾的輸入來注入惡意腳本,進而影響其他用戶的瀏覽體驗,甚至竊取敏感資訊,透過防護措施,我們可以有效降低 XSS 攻擊的風險,確保 ASP.NET 應用程式的安全性,提供用戶更可靠的使用體驗。

如果你有興趣進一步學習,請留言告訴我或留言與我分享~~~~

留言
avatar-img
留言分享你的想法!
avatar-img
小猴工程師
2會員
23內容數
小猴工程師的其他內容
2025/04/15
這篇文章提供教學,如何使用 Python 和 Pandas 函式庫將 Elasticsearch 的 JSON 資料(透過 Elasticdump 匯出)轉換成 Excel 可讀取且支援繁體中文的 CSV 檔案,並解決常見的中文編碼問題。
2025/04/15
這篇文章提供教學,如何使用 Python 和 Pandas 函式庫將 Elasticsearch 的 JSON 資料(透過 Elasticdump 匯出)轉換成 Excel 可讀取且支援繁體中文的 CSV 檔案,並解決常見的中文編碼問題。
2025/03/25
演算法是解決問題的系統性流程,廣泛應用於各領域,如廚師的食譜、音樂家的樂譜和程式設計師的程式碼。河內塔問題是經典的遞迴演算法示例,透過觀察、數學建模與遞推關係,揭示演算法設計的核心思維。掌握這些技巧有助於拆解複雜問題並找到最佳解法。如果你對演算法有興趣,歡迎留言交流!
Thumbnail
2025/03/25
演算法是解決問題的系統性流程,廣泛應用於各領域,如廚師的食譜、音樂家的樂譜和程式設計師的程式碼。河內塔問題是經典的遞迴演算法示例,透過觀察、數學建模與遞推關係,揭示演算法設計的核心思維。掌握這些技巧有助於拆解複雜問題並找到最佳解法。如果你對演算法有興趣,歡迎留言交流!
Thumbnail
2025/03/21
本文介紹 VB.NET 的 If...Else 和 Select Case 條件判斷結構,包含語法、範例及適用情境。If...Else 適合多變數與複雜邏輯,Select Case 則適用於單一變數的多值判斷,語法簡潔且效能較佳。文章並比較其效能、靈活性與可讀性,幫助選擇最佳控制結構。
Thumbnail
2025/03/21
本文介紹 VB.NET 的 If...Else 和 Select Case 條件判斷結構,包含語法、範例及適用情境。If...Else 適合多變數與複雜邏輯,Select Case 則適用於單一變數的多值判斷,語法簡潔且效能較佳。文章並比較其效能、靈活性與可讀性,幫助選擇最佳控制結構。
Thumbnail
看更多
你可能也想看
Thumbnail
本文介紹XSS (跨站腳本攻擊) 的原理、ASP.NET Web Forms 應用程式中常見的漏洞、測試範例以及如何使用Server.HtmlEncode()函式來防止XSS攻擊。透過適當的輸入驗證和編碼,可以有效降低XSS攻擊風險,提升網站安全性。
Thumbnail
本文介紹XSS (跨站腳本攻擊) 的原理、ASP.NET Web Forms 應用程式中常見的漏洞、測試範例以及如何使用Server.HtmlEncode()函式來防止XSS攻擊。透過適當的輸入驗證和編碼,可以有效降低XSS攻擊風險,提升網站安全性。
Thumbnail
  自從之前發現被對岸網站盜文,就決定在文章中間或末端加上一些文字聲明。由於我連載的平台有好幾個,所以花了一些時間,把每一個平台的每一篇文全都加上聲明,想藉此查看盜文都是從哪個連載平台盜的﹙雖然本來我心裡就有底了,但總要有證據嘛﹚。   而且,因為怕盜文時設有自動屏蔽、替換功能,我還特地將文字聲明
Thumbnail
  自從之前發現被對岸網站盜文,就決定在文章中間或末端加上一些文字聲明。由於我連載的平台有好幾個,所以花了一些時間,把每一個平台的每一篇文全都加上聲明,想藉此查看盜文都是從哪個連載平台盜的﹙雖然本來我心裡就有底了,但總要有證據嘛﹚。   而且,因為怕盜文時設有自動屏蔽、替換功能,我還特地將文字聲明
Thumbnail
在數碼時代,網站安全變得越來越重要。特別是對於使用 WordPress 平臺的網站,保障安全尤為關鍵。本文將介紹一些實用的方法,幫助您保護 WordPress 網站免受各種威脅。為什麼 WordPress 安全至關重要?
Thumbnail
在數碼時代,網站安全變得越來越重要。特別是對於使用 WordPress 平臺的網站,保障安全尤為關鍵。本文將介紹一些實用的方法,幫助您保護 WordPress 網站免受各種威脅。為什麼 WordPress 安全至關重要?
Thumbnail
【駭入別人銷售漏斗,模仿驗證有效流程】
Thumbnail
【駭入別人銷售漏斗,模仿驗證有效流程】
Thumbnail
1. 如何分辨詐騙、避免被詐騙 2. 掃毒、增強帳號安全、多段驗證、安全金鑰 3.快速取回帳號
Thumbnail
1. 如何分辨詐騙、避免被詐騙 2. 掃毒、增強帳號安全、多段驗證、安全金鑰 3.快速取回帳號
Thumbnail
我們分析了許多加密貨幣詐騙案例,歸納出一些共通的行為特徵要告訴你,讓你防患於未然;萬一日後自己或朋友遇到類似情境,就可以馬上辨識出這些警訊,避免成為加密貨幣詐騙的受害者。
Thumbnail
我們分析了許多加密貨幣詐騙案例,歸納出一些共通的行為特徵要告訴你,讓你防患於未然;萬一日後自己或朋友遇到類似情境,就可以馬上辨識出這些警訊,避免成為加密貨幣詐騙的受害者。
Thumbnail
假網站攻擊近10年一直是全球銀行業的頭痛問題,過去發卡機構也致力去防止因為日漸盛行的網上購物而引發的騙財技倆。 有一定年資的網購使用者,對於使用保安編碼器會有點印象,但成本太高,而且每天要帶着外出也十分不便(也容易出現遺失的風險),近年智能手機普及,很多銀行已經轉用mobileapp作為主要保安編
Thumbnail
假網站攻擊近10年一直是全球銀行業的頭痛問題,過去發卡機構也致力去防止因為日漸盛行的網上購物而引發的騙財技倆。 有一定年資的網購使用者,對於使用保安編碼器會有點印象,但成本太高,而且每天要帶着外出也十分不便(也容易出現遺失的風險),近年智能手機普及,很多銀行已經轉用mobileapp作為主要保安編
Thumbnail
談了許多網路安全的議題,提醒民眾要注意哪些事情,建構哪些網路安全思維,讓我們可以降低踏入詐騙陷阱的風險。但除了民眾本身要不斷學習、提升防詐意識外,是不是還有其他方面的作法呢? 本文就來聊聊在企業端可以做些什麼。 要打造一個密不可破的防護網,企業端就不能夠缺席。 舉幾個例子讓大家知道。
Thumbnail
談了許多網路安全的議題,提醒民眾要注意哪些事情,建構哪些網路安全思維,讓我們可以降低踏入詐騙陷阱的風險。但除了民眾本身要不斷學習、提升防詐意識外,是不是還有其他方面的作法呢? 本文就來聊聊在企業端可以做些什麼。 要打造一個密不可破的防護網,企業端就不能夠缺席。 舉幾個例子讓大家知道。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News