2010-01-16 8 views
0

Ma page ASP.NET contient "ValidateRequest = true". Toutefois, il existe une zone de texte dans la page pour laquelle je ne veux pas que ASP.NET à valider. Y at-il un moyen de le rendre faux pour ce contrôle? Si ce n'est pas le cas, existe-t-il un moyen d'ignorer l'erreur "Menace potentielle", en supposant qu'elle provienne de ce contrôle particulier?ValidateRequest par contrôle

Merci

+0

Pourquoi voudriez-vous pour permettre l'entrée subreptice de tout contrôle d'entrée? – IrishChieftain

+0

Ceci est en partie lié à mon autre poste: http://stackoverflow.com/questions/2045188/is-password-input-sanitization-required Comme le mot de passe est en cours de hachage, je n'ai pas à me soucier de ce particulier entrée car elle n'est jamais affichée ni stockée dans la base de données. Cependant, j'aimerais qu'ASP.NET couvre les autres entrées. – XSL

Répondre

0

La seule façon que je connaisse pour ce faire serait d'appeler la ValidateString de la classe HttpRequest. Malheureusement, c'est privé, donc vous devez le faire avec la réflexion.

Je n'ai pas testé cela - ce n'est pas exactement le même code que j'utilise. il est adapté du code que j'ai écrit il y a quelques années, alors peut-être que Microsoft a quelque chose de nouveau qui rend cela plus facile.

MethodInfo _validateMethodInfo = typeof(HttpRequest).GetMethod("ValidateString", BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.InvokeMethod); 
foreach (string key in Request.Form.AllKeys) { 
    if (key = "< skipped field name >") { 
    continue; 
    } 
    object[] parameters = { Request.Form[key], key, "Request.Form" }; 
    _validateMethodInfo.Invoke(Request, parameters); 
} 
Questions connexes