<!-- Register.aspx -->
<form action="GetUserInfo.aspx" method="get">
<input name="username" />
<input name="pwd" type="password" />
<input type="submit" />
</form>
// GET
string user = Request.QueryString["username"];
// POST
string user = Request.Form["username"];
// 兩者皆可 (QueryString 優先)
string user = Request["username"];
// 危險:字串串接
string sql = "SELECT * FROM Users WHERE UserName='" + txtUser.Text + "'";
// 安全:參數化
string sql = "SELECT * FROM Users WHERE UserName=@User";
using (var cmd = new SqlCommand(sql, conn))
{
cmd.Parameters.AddWithValue("@User", txtUser.Text);
// ...
}
參數化查詢將資料與程式碼分離,資料庫引擎將參數視為字面值而非可執行 SQL,徹底阻斷注入。
原生 HTML 標籤加 `runat="server"` 並賦予 `id`,即成為伺服器控件。
<input type="text" id="txtName" runat="server" />
<select id="ddlCity" runat="server"></select>
後台可存取 `txtName.Value`、`ddlCity.Items` 等屬性。轉譯時保持原標籤結構。
理解 HTML 表單 Get/Post 語意差異、正確取得伺服器端資料、統一 UTF-8 編碼、堅持參數化查詢防 SQL Injection,是 ASP.NET Web 開發的安全基石。伺服器端表單與 HTML 伺服器控件提供輕量級的伺服器端程式設計入口,進階開發則使用功能更豐富的 Web 伺服器控件 (`asp:` 開頭)。