J'ai un site ASP.NET 4 sur lequel je veux permettre aux gens de mettre "<'dans leur mot de passe. Cependant, .NET obtient dans la voie en bloquant (ce qu'il considère comme) une tentative de mettre HTML dans un champ de formulaire. Je sais que je peux désactiver la validation d'entrée entièrement, mais je veux seulement l'éteindre pour ce champ un. Est-ce que quelqu'un sait un moyen facile de faire ça? P>
5 Réponses :
Vous pouvez désactiver la validation d'entrée pour l'action MVC unique à l'aide du ValidateInputationTribute . Puisque vous n'acceptez que le nom d'utilisateur / mot de passe (je supposerais), vous devriez être capable de frotter les saisies de caractères non valides. Utilisez le Microsoft Web Protection Library pour le faire. P>
Ceci est WebForms, pas MVC, et j'ai beaucoup d'entrées sur cette page. Sinon cela fonctionnerait bien :)
Mah mauvais. 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 granuleux que vous pouvez obtenir.
Vous ne pouvez éteindre que la validation d'entrée pour la page entière. La seule solution à laquelle je passe est de désactiver la validation d'entrée, puis de frotter tous les champs de saisie des autres (non-mot de passe) à l'aide de quelque chose comme anti-XSS . P>
Merci de pointer un lien sans citer l'exemple. Lien mort maintenant
Ce n'est pas un exemple, c'était un lien vers une bibliothèque qui fournit une fonctionnalité anti-XSS. Maintenant, à Nuget.org/packages/antixsss/4.3.0 .
Ok désolé, mais maintenant je ne peux pas annuler mon vote en bas. Pourriez-vous modifier votre message avec le nouveau lien pour que je puisse le faire?
Remarque dans ASP.NET 4 Et plus pour obtenir VALIDATEREQUEST dans la directive @page Pour fonctionner, vous devez ajouter Mais c'est mon approche préférée: p> puis enregistrez la commande dans web.config: p> De cette façon, vous pouvez simplement utiliser
Ceci est une réponse intelligente, mais ne fonctionnerait pas pour le champ de mot de passe dans l'OP où le contenu doit être préservé. Veuillez suggérer comment procéder à cela pour un champ de mot de passe (décodage HTML, peut-être?
C'est possible. Il suffit d'ajouter voir
1 commentaires
Cette réponse s'applique au MVC, mais la question concerne les webforms. [allechtml] code> sur la propriété qui ne doit pas être validée. P>
Ceci est maintenant possible avec .NET 4.5.
Mettez à jour votre web.config: p> puis définissez validateeQuestMode = "désactivé" code> sur vos commandes de mot de passe: p>
<asp:YourControl id="YourControl" runat="server" ValidateRequestMode="Disabled"/>
Y a-t-il une raison particulière dont vous avez besoin
@ eddy556 - a-t-il besoin d'une raison particulière?
@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 ne veulent-t-il pas autoriser vient à l'esprit.
@ eddy556 Je veux en fait permettre à n'importe quel caractère; <Était juste celui qui jetais des erreurs sur moi, donc c'était au sommet de mon esprit.
@ Eddy556 - Je suis allé trop de sites qui ont des règles arbitraires sur quels mots de passe sont autorisés. Même si je veulent i> un mot de passe sécurisé, je ne peux pas l'avoir ... Donc, vous demandez d'avoir une meilleure entrée de mot de passe est une évidence pour moi et ne nécessite aucun réson.
@ODed - Bien dit. Je n'avais aucun problème à autoriser les caractères supplémentaires (aussi longtemps que c'est seulement i> le champ unique). Je voulais juste connaître le raisonnement derrière la question incassible désactiver la validation des intrants n'était pas la meilleure voie à suivre ...
Le .NET Framework devrait autoriser automatiquement tous les caractères dans les champs de mot de passe imo