68 votes

Adresse Email de Validation pour ASP.NET

Que voulez-vous utiliser pour valider une adresse email sur un ASP.NET forme. Je veux m'assurer qu'il ne contient pas XSS exploits.

C'est ASP.NET 1.1

126voto

WebDude Points 3326

Toutes les balises de script posté sur un ASP.NET formulaire web à cause de votre site afin de lancer et d'exception non gérée.

Vous pouvez utiliser un asp regex programme de validation pour confirmer l'entrée, juste vous assurer que vous enveloppez de votre code-behind de la méthode avec un si(IsValid) de la clause dans le cas où votre javascript est court-circuité. Si votre client javascript est court-circuité et les balises de script sont inscrites à votre asp.net forme, asp.net va lancer une exception non gérée.

Vous pouvez utiliser quelque chose comme:

<asp:RegularExpressionValidator ID="regexEmailValid" runat="server" ValidationExpression="\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" ControlToValidate="tbEmail" ErrorMessage="Invalid Email Format"></asp:RegularExpressionValidator>

19voto

John_ Points 1842

Voici un e-mail validateur je viens de créé sur la base de Simon Johnson idée. Il a juste besoin de la fonctionnalité supplémentaire de recherche DNS être ajouté si nécessaire.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.UI.WebControls;
using System.Text.RegularExpressions;
using System.Web.UI;

namespace CompanyName.Library.Web.Controls
{
    [ToolboxData("<{0}:EmailValidator runat=server></{0}:EmailValidator>")]
    public class EmailValidator : BaseValidator
    {

        protected override bool EvaluateIsValid()
        {
            string val = this.GetControlValidationValue(this.ControlToValidate);
            string pattern = @"^[a-z][a-z|0-9|]*([_][a-z|0-9]+)*([.][a-z|0-9]+([_][a-z|0-9]+)*)?@[a-z][a-z|0-9|]*\.([a-z][a-z|0-9]*(\.[a-z][a-z|0-9]*)?)$";
            Match match = Regex.Match(val.Trim(), pattern, RegexOptions.IgnoreCase);

            if (match.Success)
                return true;
            else
                return false;
        }

    }
}

7voto

Martin Brown Points 8593

Vous pouvez utiliser un RegularExpression validateur. La propriété ValidationExpression a un bouton, vous pouvez appuyer sur dans Visual Studio propriété panneau qui obtient des listes de beaucoup d'expressions utiles. Celui qu'ils utilisent pour des adresses email:

\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

5voto

Simon Johnson Points 4641

Dans notre code, nous avons une spécifiques du programme de validation héritée de la classe BaseValidator.

Cette classe ne comprend les éléments suivants:

  1. Valide l'adresse e-mail avec une expression régulière.
  2. Fait une recherche sur l'enregistrement MX pour le domaine pour vous assurer qu'il ya au moins un serveur à livrer.

C'est le plus proche que vous pouvez obtenir à la validation sans réellement l'envoi à la personne un e-mail de confirmation de lien.

4voto

JacquesB Points 19878

La prévention des XSS est une question différente de la validation d'une entrée.

Concernant XSS: Vous ne devriez pas essayer de vérifier d'entrée pour les XSS ou menaces liées. Vous devez empêcher les attaques de type XSS exploits, injection SQL, et ainsi de suite par la fuite correctement lors de l'insertion de chaînes de caractères dans une autre langue où certains personnages sont "magiques", par exemple, lors de l'insertion de chaînes de caractères en HTML ou en SQL. Par exemple, un nom comme O'Reilly est parfaitement valable d'entrée, mais pourrait causer un accident ou pire si elle est insérée sans échappement en SQL. Vous ne pouvez pas éviter ce genre de problèmes par la validation d'une entrée.

La Validation de la saisie de l'utilisateur est logique pour éviter manquant ou incorrect de données, par exemple. un utilisateur qui écrit "asdf" dans le code postal de champ, et ainsi de suite. Wrt. les adresses e-mail, la syntaxe est très complexe, cependant, qu'il ne marche pas fournir beaucoup d'avantages pour les valider à l'aide d'une expression régulière. Il suffit de vérifier qu'il contient un "@".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X