不只 Request.Form、Request.QueryString,Cookie、ServerVariables、Headers 同樣危險。
Function killn(ByVal s1)
If Not IsNumeric(s1) Then
killn = 0
Else
If s1 < 0 Or s1 > 2147483647 Then
killn = 0
Else
killn = CLng(s1)
End If
End If
End Function
✅ 強制轉 Long、範圍限制、非數值歸零
Function killc(ByVal s1)
If Not IsNumeric(s1) Then
killc = 0
Else
killc = FormatNumber(s1, 2, -1, 0, 0) ' 兩位小數、無千分位、前導零
End If
End Function
Function killw(ByVal s1)
If Len(s1) = 0 Then
killw = ""
Else
killw = Trim(Replace(s1, "'", "")) ' 移除單引號、去首尾空白
End If
End Function
Function killbad(ByVal s1)
If Len(s1) = 0 Then
killbad = ""
Else
killbad = Trim(Replace(Replace(Replace(Replace( _
Replace(Replace(Replace(Replace(s1, _
Chr(10), "
"), _ ' 換行
Chr(34), ""), _ ' 雙引號
">", ">"), _ ' 大於號
"<", "<"), _ ' 小於號
"&", "&"), _ ' & 符號
Chr(39), "'"), _ ' 單引號 HTML 實體
Chr(32), " "), _ ' 空白標準化
Chr(13), "")) ' 回車符
End If
End Function
Global.asa Session_OnStart 或公用 include 檔中集中呼叫SafeRequest("param") 包裝函數,自動判斷型別套用對應過濾ASP.NET 請直接使用 SqlParameter、Entity Framework、Dapper 等 ORM/微型 ORM 內建參數化機制,勿自行拼接 SQL。