SQL Server 2000 透過 SQL ISAPI Extension (sqlisapi.dll) 在 IIS 中發布 HTTP 端點,允許用戶端以 URL 直接執行查詢、模板、XPath,回傳 XML。核心組件:
.xml 檔包含 SQL/XPath、參數宣告、XSLT 參考,儲存於虛擬目錄 template 子資料夾。AUTO, RAW, EXPLICIT)。Northwind)、實體路徑 (存放模板/XSLT)、資料庫連線 (伺服器、資料庫、認證)。Allow URL Queries、Allow Template Queries、Allow XPath、Allow POST。
https://server/Northwind?sql=SELECT+*+FROM+Customers+FOR+XML+AUTO&root=Customers
缺點:SQL 曝露於 URL、長度限制、無法重用、安全性差 (SQL Injection 風險)。
檔案: C:\Inetpub\Northwind\template\GetCustomers.xml
SELECT CustomerID, CompanyName, ContactName, Phone
FROM Customers
WHERE Country = @Country
FOR XML AUTO, ELEMENTS
呼叫:
https://server/Northwind/template/GetCustomers.xml?Country=Germany
建立 Customers.xsd 定義 sql:relation、sql:field,註冊於虛擬目錄 schema 資料夾。
https://server/Northwind/schema/Customers.xsd/Customer[@Country='UK']
| 措施 | 說明 |
|---|---|
| 停用 URL 查詢 | 虛擬目錄設定取消 Allow URL Queries,僅允許模板/XPath。 |
| Windows 整合驗證 + SSL | IIS 設定 整合式 Windows 驗證、綁定憑證啟用 HTTPS,禁止 Basic/匿名。 |
| 最小權限資料庫使用者 | 虛擬目錄連線使用僅具 SELECT/EXECUTE 權限的資料庫使用者,非 sa/db_owner。 |
| 參數化模板 | 所有使用者輸入透過 sql:param 綁定,防止注入。 |
| 防火牆限制存取 IP | 僅允許應用伺服器/閘道 IP 存取虛擬目錄埠。 |
Cache-Control: max-age=...。FOR XML EXPLICIT 複雜邏輯。IXSLTemplate 編譯快取,避免每請求重新編譯。Pooling=true (預設)。HTTP 端點在 SQL 2005 引入 原生 HTTP 端點 (CREATE ENDPOINT),移除 IIS 依賴;SQL 2008+ 建議改用 WCF Data Services / OData / ASP.NET Web API 配合 FOR JSON,架構更標準、生態更豐、安全性更佳。舊系統維護期內,上述設定仍適用。