2010-05-27 20 views
8

Étant donné qu'il y a tant de caractères valides pour les adresses e-mail, y a-t-il des adresses e-mail valides qui peuvent être des attaques XSS ou des injections SQL? Je n'ai trouvé aucune information à ce sujet sur le web.Adresses e-mail valides - Injection XSS et SQL

La partie locale de l'adresse e-mail peut utiliser ces caractères ASCII:

  • Majuscules et anglais minuscules (a-z, A-Z)
  • Digits 0 à 9
  • Caractères! # $% & '* + -/=?^_ `{| } ~
  • Caractère. (point, point, point) à condition que ce ne soit pas le dernier caractère et à condition qu'il n'apparaisse pas deux fois ou plus de fois de suite (par exemple John..Doe @ example.com).

http://en.wikipedia.org/wiki/E-mail_address#RFC_specification

Je ne demande pas comment empêcher ces attaques (je suis déjà en utilisant des requêtes paramétrées et échapper/purificateur HTML), ce qui est plus une preuve de concept.

La première chose qui est venue à l'esprit était 'OR [email protected], sauf que les espaces ne sont pas autorisés. Toutes les injections SQL nécessitent-elles des espaces?

Répondre

12

Les espaces sont autorisés, si toutefois, ils sont entre guillemets, donc "'OR 1=1--"@gmail.com est une adresse e-mail valide. En outre, il est probablement moins d'inquiétude, mais techniquement parlant, ce sont les deux adresses e-mail valides:

' BAD SQL STUFF -- <[email protected]> 
[email protected] (' BAD SQL STUFF --) 

Même si cela n'a pas été possible, il n'y a toujours pas de raison que vous ne devriez pas utiliser les requêtes paramaterized et coder toutes les données entrées par l'utilisateur affichées aux utilisateurs.

+0

Peut utiliser http://isemail.info/ pour vérifier l'adresse e-mail que vous aimez, ou tout simplement tester avec un filtre sur les adresses e-mail injectables via une fonction PHP comme filtrer les e-mails de validation. Basé sur isemail.info, la première adresse est invalide, et la deuxième adresse est "L'adresse est valide dans le message mais ne peut pas être utilisée non modifiée pour l'enveloppe" – Kzqai

-5
/^[a-z0-9.-_+]@[a-z0-9.-]$/i 

Je pense que des matches comme 99,9999% de tous les emails adresses;)

+1

btw. C'est seulement pour vérifier si le texte n'est pas emballé avec des injections xss/sql etc. - ce n'est pas un moyen de valider une adresse e-mail. – Tobias