J'ai un site ASP.NET 4 sur lequel je veux permettre aux gens de mettre '<' dans leur mot de passe. Cependant, .NET fait obstacle en bloquant (ce qu'il voit comme) une tentative de mettre du HTML dans un champ de formulaire. Je sais que je peux désactiver complètement la validation d'entrée, mais je veux seulement l'éteindre pour ce champ. Est-ce que quelqu'un sait un moyen facile de le faire?Désactiver la validation d'entrée pour un seul champ
Répondre
Vous pouvez uniquement désactiver la validation d'entrée pour toute la page. La seule solution que je peux penser est de désactiver la validation d'entrée, puis nettoyer tous les autres champs de saisie (sans mot de passe) en utilisant quelque chose comme Anti-XSS.
Merci de pointer sur un lien sans citer l'exemple. Dead link now –
Ce n'est pas un exemple, c'était un lien vers une bibliothèque qui fournit des fonctionnalités anti-xss. Maintenant à https://www.nuget.org/packages/AntiXSS/4.3.0. –
Ok désolé, mais maintenant je ne peux pas annuler mon down-vote. Pourriez-vous modifier votre message avec le nouveau lien afin que je puisse le faire? –
Vous pouvez désactiver la validation d'entrée pour l'action MVC unique à l'aide de ValidateInputAttribute. Puisque vous n'acceptez que le nom d'utilisateur/mot de passe (je suppose), vous devriez être en mesure de nettoyer vous-même les caractères non valides. Utilisez le Microsoft Web Protection Library pour le faire.
Ceci est Webforms, pas MVC, et je avoir beaucoup d'entrées sur cette page. Sinon, cela fonctionnerait très bien :) – eliah
Mah bad. Il existe une propriété ValidateRequest sur la directive @Page que vous pouvez utiliser pour désactiver la validation uniquement pour cette page particulière, mais je pense que c'est aussi granulaire que vous pouvez obtenir. –
Remarque dans ASP.NET 4 et supérieur pour que ValidateRequest dans la directive @Page fonctionne, vous devez ajouter <httpRuntime requestValidationMode="2.0" />
à web.config. Voir cette page pour plus de détails: http://www.asp.net/whitepapers/aspnet4/breaking-changes
Mais ceci est mon approche préférée:
namespace Controls
{
public class HtmlTextBox : TextBox
{
protected override bool LoadPostData(string postDataKey, System.Collections.Specialized.NameValueCollection postCollection)
{
bool res = base.LoadPostData(postDataKey, postCollection);
Text = Text.Replace("<", "<").Replace(">", ">").Replace("&", "&");
return res;
}
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
ScriptManager.RegisterOnSubmitStatement(this, this.GetType(), "htmlTextBox" + UniqueID, "try { var item = document.getElementsByName('" + UniqueID + "')[0]; item.value = item.value.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>'); } catch (err) {}");
}
}
}
Et puis enregistrer le contrôle web.config:
<system.web>
<pages>
<controls>
<add tagPrefix="uc1" namespace="Controls" />
</controls>
</pages>
</system.web>
De cette façon, vous pouvez simplement utiliser <uc1:HtmlTextBox runat="server" />
Si vous souhaitez autoriser la zone de texte à publier le code HTML, les autres contrôles sur la page seront toujours bloqués de la publication de HTML contrairement à l'approche consistant à désactiver ValidateRequest.
Ceci est possible. Il suffit d'ajouter [AllowHtml]
sur la propriété qui ne doit pas être validée.
voir ValidateInputAttribute does not contain a definition for Exclude
Il est maintenant possible avec 4,5 .NET.
Mettez à jour votre web.config:
<httpRuntime targetFramework="4.5" requestValidationMode="4.5" />
Réglez ensuite ValidateRequestMode="Disabled"
sur les commandes de votre mot de passe:
<asp:YourControl id="YourControl" runat="server" ValidateRequestMode="Disabled"/>
Note - après la mise à jour web.config, vous croiserez peut-être l'erreur WebForms UnobtrusiveValidationMode requires a ScriptResourceMapping for 'jquery'.
Voir ASP.Net 2012 Unobtrusive Validation with jQuery pour plus d'informations à ce sujet.
Plus d'informations sur RequestValidationMode 4.5: requestValidationMode 4.5 vs 2.0
- 1. Validation multiple + $ .validator sur un seul champ
- 2. Struts Validation avec plusieurs règles de validation pour un seul champ
- 3. Désactiver la validation Jquery
- 4. Désactiver la validation pour jaxb 1 marshaller
- 5. Désactiver la validation Dojo sur certains champs
- 6. Désactiver Intellisense dans VS 2008 pour un seul projet
- 7. WordPress: Désactiver ajouter un champ personnalisé
- 8. Comment désactiver gzip pour un seul gestionnaire .ashx
- 9. Désactiver la sélection d'un seul UITableViewCell
- 10. désactiver la validation pour un bouton spécifique lors de l'utilisation du plugin jQuery: Validation
- 11. Plugin jQuery Validation: désactiver la validation pour les boutons d'envoi spécifiés lorsqu'il existe un gestionnaire submitHandler
- 12. Tourner un seul champ partylist en plusieurs
- 13. Des tables séparées pour un seul champ peuvent être logiques?
- 14. Critère de multi-critère pour un seul champ dans symfony?
- 15. Utilisation du validateur de champ obligatoire pour désactiver ListBox
- 16. Appliquer la validation à un seul objet - Rails 3
- 17. JPA - désactiver la validation de persistence.xml
- 18. Désactiver la validation sur certains champs
- 19. Désactiver la validation FreeMarker dans Eclipse 3.5
- 20. Désactiver la validation Javascript dans CGI :: Formbuilder
- 21. jQuery Désactiver la validation de formulaire
- 22. Comment désactiver la validation à Nokogiri?
- 23. Validation JQuery pour la valeur de chaîne
- 24. Validation de champ pour une adresse IP
- 25. Validation de champ non autorisée
- 26. Comment désactiver la méthode de validation personnalisée à condition
- 27. jquery validation - champ optionnel
- 28. Désactiver la compression IIS7 pour un seul fichier à partir de web.config
- 29. Plusieurs messages pour un seul validateur JSF
- 30. ExtJS désactivant la validation de champ onkeyup
Y at-il une raison particulière que vous avez besoin <être un mot de passe? –
@ eddy556 - a-t-il besoin d'une raison particulière? – Oded
@Oded - Bien sûr qu'il le fait, je peux comprendre les avantages d'avoir un caractère supplémentaire, mais si c'est vrai pourquoi veut-il seulement permettre vient à l'esprit. –