gab*_*ira 2 .net vb.net asp.net visual-studio
我正在使用一个类检查我的应用程序中的某些单词以防止SQL注入.
在类中,有一个for循环尝试将特定单词与黑名单中的单词匹配.如果匹配,我必须重定向到系统的错误页面.
但是,当找到匹配并且我尝试重定向时,我不断收到错误"无法评估表达式".
这是代码:
Private Sub CheckInput(ByVal parameter As String)
Try
Dim errorPage As String = "error_page.aspx?Injection=" & parameter
For i As Integer = 0 To blackList.Length - 1
If (parameter.IndexOf(blackList(i), StringComparison.OrdinalIgnoreCase) >= 0) Then
'Handle the discovery of suspicious Sql characters here
'generic error page on your site
HttpContext.Current.Response.Redirect(errorPage)
End If
Next
Catch ex As Exception
Throw ex
End Try
Run Code Online (Sandbox Code Playgroud)
一旦Try块捕获到错误,它就会一直给出错误并且不会重定向到错误页面.
有任何想法吗?
"无法评估表达式"来自Visual Studio调试器,当它看到ThreadAbortException抛出时Response.Redirect.如果没有附加调试器,您的代码将按预期工作.
您可以传递false以防止当前请求结束(这是什么ThreadAbortException).然后,您负责"优雅地"结束请求.
FWIW,你也应该删除它try/catch,因为除了隐藏任何异常之外它没有任何用处.并且,如上所述,SQL参数是防止注入的方式 - 而不是白名单.