Impossible d'évaluer l'expression
J'utilise une classe pour vérifier certains mots dans ma demande pour prévenir l'Injection SQL.
Dans la classe, il est une boucle qui tente de faire correspondre un mot spécifique avec les mots d'une liste noire.
Si il y a un match, je dois rediriger vers le système de page d'erreur.
Toutefois, lorsqu'une correspondance est trouvée, et j'essaie de rediriger, je reçois le message d'erreur "Impossible d'évaluer l'expression."
Voici le code:
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
Une fois le bloc Try attrape l'erreur, il continue à l'erreur et n'est pas redirigé vers la page d'erreur.
Des idées?
vous devez utiliser des requêtes préparées pour l'injection sql.s
"Impossible d'évaluer l'expression" est à partir du débogueur, pas votre code. Vous avez probablement une montre sur un code qui est hors de portée.
"Impossible d'évaluer l'expression" est à partir du débogueur, pas votre code. Vous avez probablement une montre sur un code qui est hors de portée.
OriginalL'auteur gabsferreira | 2012-04-24
Vous devez vous connecter pour publier un commentaire.
"Impossible d'évaluer l'expression" est à partir du débogueur de Visual Studio, lorsqu'il voit le
ThreadAbortException
jetés parRéponse.Redirection
. Sans un débogueur, votre code fonctionne comme prévu.Vous pouvez passer
false
pour empêcher le courant de la demande de terminé (qui est ce que laThreadAbortException
est pour). Vous êtes alors responsable de la "fin" de la demande gracieusement.FWIW, vous devez également supprimer le
try/catch
, comme il est au service d' aucune utilité autre que de masquer les exceptions. Et, comme mentionné, SQL paramètres sont le moyen pour empêcher l'injection - pas de listes blanches.OriginalL'auteur Mark Brackett
Vous pourriez avoir une boucle infinie. Ne
CheckInput
courir pour votre page d'erreur aussi?Quand vous frappez une erreur, vous y compris la même chaîne, qui a provoqué l'erreur, de sorte que les tout recommencer depuis le début
OriginalL'auteur SouthShoreAK