使用 ASP 制作网页
ASP(Active Server Pages)是微软的服务器端网页技术,运行在 IIS 上,并把服务器端代码与 HTML 混合在一起。ASP.NET Core 是目前的发展方向,但许多现有系统仍在使用 VBScript 的经典 ASP。本文说明请求的处理方式、表单数据的读取,以及需要了解的实践。
测试说明:编写本文所用的电脑没有 IIS 和 ASP,因此代码未在此运行。请先安装带 ASP 的 IIS 并自行测试后再使用。
需要准备的东西
- 启用了 IIS(Internet Information Services)和 ASP 功能的 Windows
- IIS 中的网站文件夹,例如 `C:\inetpub\wwwroot\demo`
工作原理
第一个 ASP 页面
创建 `hello.asp` 并输入:
<%@ Language="VBScript" %>
<html>
<body>
<h1>สวัสดี ASP</h1>
<p>เวลาบนเซิร์ฟเวอร์: <%= Now() %></p>
</body>
</html>
`<% ... %>` 是在服务器上运行的代码,`<%= ... %>` 则把值写入返回给浏览器的 HTML。
读取表单数据
<%@ Language="VBScript" %>
<%
Dim name
name = Request.Form("name")
%>
<form method="post" action="greet.asp">
ชื่อ: <input type="text" name="name">
<input type="submit" value="ส่ง">
</form>
<% If name <> "" Then %>
<p>ยินดีต้อนรับ <%= Server.HTMLEncode(name) %></p>
<% End If %>
`Request.Form` 读取提交的值。`Server.HTMLEncode` 防止用户把 HTML 或脚本注入页面。
连接数据库
经典 ASP 通常使用 ADO 连接数据库。切勿把用户输入直接拼接到 SQL 文本中,应使用参数,否则会产生 SQL 注入漏洞。
常见错误
- **直接显示用户输入而不做编码:** 始终使用 `Server.HTMLEncode`。
- **用用户输入拼接 SQL 语句:** 会导致 SQL 注入。应使用带参数的命令。
- **IIS 中未启用 ASP 功能:** 页面会显示源代码而不是运行结果。请先检查功能是否已安装。
下一步
对于新项目,建议考虑持续维护的 ASP.NET Core。已有的 ASP 系统应逐步迁移,并同时补充安全防护。
总结
ASP 通过 IIS 在服务器上运行代码,并与 HTML 结合。关键点是对显示的值进行编码,并在访问数据库时使用参数。