2010-05-27 32 views
8

Dado que hay tantos caracteres válidos para direcciones de correo electrónico, ¿hay direcciones de correo electrónico válidas que en sí mismas pueden ser ataques XSS o inyecciones de SQL? No pude encontrar ninguna información sobre esto en la web.Direcciones de correo electrónico válidas: XSS y SQL Injection

La parte local de la dirección de correo electrónico puede utilizar cualquiera de estos caracteres ASCII:

  • mayúsculas y letras inglesas en minúsculas (a-z, A-Z)
  • dígitos 0 a 9
  • Personajes! # $% & '* + -/=?^_ `{| } ~
  • Personaje. (punto, punto, punto) siempre que no sea el último carácter , y siempre que no aparezca dos o más veces consecutivas (por ejemplo, John..Doe @ example.com).

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

No te pido cómo prevenir estos ataques (ya estoy usando consultas parametrizadas y escapar/purificador de HTML), esto es más una prueba de concepto.

Lo primero que me vino a la mente fue 'OR [email protected], excepto que los espacios no están permitidos. ¿Todas las inyecciones de SQL requieren espacios?

Respuesta

12

espacios si están entre comillas, sin embargo, por lo "'OR 1=1--"@gmail.com es una dirección válida de correo electrónico. Además, es probable que sea una preocupación menor, pero técnicamente hablando, estos son los dos direcciones de correo electrónico válidas:

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

Incluso si esto no fuera posible, todavía no hay una razón que usted no debe utilizar consultas paramaterized y codificando todos los datos ingresados ​​por el usuario mostrados a los usuarios.

+0

Puede usar http://isemail.info/ para buscar cualquier dirección de correo electrónico que le guste, o simplemente probar con un filtro en direcciones de correo electrónico inyectables a través de alguna función de php como validar filtro de correo electrónico. Según isemail.info, la primera dirección no es válida y la segunda dirección es "La dirección es válida dentro del mensaje pero no se puede usar sin modificaciones para el sobre". – Kzqai

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

Creo que coincide como el 99,9999% de todas las direcciones de correo electrónico;) se les permite

+1

por cierto. eso solo es para verificar si el texto no está empaquetado con inyecciones xss/sql, etc. - no es una forma de validar una dirección de correo electrónico. – Tobias

Cuestiones relacionadas