¿Cómo validar que un dominio determinado es propiedad del usuario?

10

Estoy escribiendo un software que será utilizado principalmente por las empresas.

Entonces tuve la idea de darles a las compañías una forma de registrar su dominio de correo electrónico para que cada usuario que se registra con un correo electrónico del dominio dado se coloque automáticamente en el grupo de la compañía.

Sé que Slack hace algo así y funciona, pero hay algunos problemas ... por ejemplo, acabo de registrar "live.it" (la versión italiana live.com de Microsoft).

No puedo asumir que si un usuario ha validado un correo electrónico con un dominio específico, entonces es seguro poner a todos los usuarios con el mismo dominio_mail en el mismo grupo.

Por ejemplo, si me registro en [email protected] no quiero permitir que el usuario se registre "gmail.com" tiene su propio dominio.

Me gustaría evitar el uso de métodos como "poner un archivo html en la raíz del dominio" o "establecer un registro TXT", así que me preguntaba cómo debería hacerlo.

Fez Vrasta
fuente
11
¿Por qué pedirle que coloque un archivo en la raíz del dominio es un problema para usted? Las Herramientas para webmasters de Google hacen exactamente eso. Además, no necesita solicitar un archivo permanente: el usuario lo coloca en el servidor, usted lo verifica y el archivo se puede eliminar.
Arseni Mourzenko
99
Si su configuración es tan incorrecta que los usuarios externos no pueden acceder a su sitio web principal, debería preocuparse por la configuración y culpar a sus administradores de sistemas, en lugar de preocuparse al agregar su sitio a las Herramientas para webmasters de Google y culpar a Google.
Arseni Mourzenko
1
¿En lugar de darles una forma que funcione y que ya hayan usado muchas veces antes?
Arseni Mourzenko
66
@FezVrasta: tenga en cuenta que tiene dos objetivos: permitir el acceso a usuarios autorizados y denegar el acceso a usuarios no autorizados. Hacerlo más fácil para los usuarios autorizados generalmente también lo hace más fácil para los usuarios no autorizados.
MSalters
44
En caso de que vaya a la ruta de registro DNS, probablemente debería usar registros TXT, no MX.
Aaron Dufour

Respuestas:

20

Archivo en el directorio raíz

No descarte la posibilidad de colocar un archivo en un directorio raíz del sitio web corporativo. Funciona bien y se usa ampliamente: Google Webmaster Tools es un ejemplo de dicha técnica. Esto hace que este enfoque sea atractivo: dado que la mayoría de los usuarios ya lo saben, no se perderán. Además, no requiere ningún conocimiento técnico, a diferencia de la modificación de registros MX (la mayoría de las pequeñas empresas ni siquiera sabrán qué es un registro MX).

Para evitar contaminar el directorio raíz, debe solicitar poner un archivo solo cuando realice sus comprobaciones. Una vez que haya encontrado el archivo, el usuario podrá eliminarlo.

Tenga en cuenta que los usuarios que no tienen ningún sitio web corporativo no podrán acceder a su servicio, pero no creo que haya muchos clientes en este caso.

Tenga en cuenta que:

  • Debe verificar tanto http://example.com/file como http://www.example.com/file , porque algunos sitios web están configurados de una manera que no admiten http://example.com/ forma.

  • También puede admitir HTTPS, dado que no creo que haya muchas empresas sin redireccionamiento de HTTP a HTTPS.

  • No debe aceptar ningún otro dominio de tercer nivel como http://mysite.example.com/ , ya que esto hará posible que alguien que compró un dominio de tercer nivel afirme que es el propietario del dominio de segundo nivel. ejemplo.com .

Enviando un correo electrónico

Enviar un correo electrónico con un enlace secreto es bastante problemático. No puede hacerlo a [email protected], porque una persona determinada puede no tener una dirección de correo electrónico corporativa (este suele ser el caso de las startups, donde las personas prefieren usar su dirección personal).

El uso de correos electrónicos como [email protected] no funcionará en algunos casos.

  • Primero, siempre hay empresas que no tienen [email protected], [email protected], etc., pero que tienen sus direcciones de correo electrónico particulares del "sistema" que no ha incluido en la lista blanca. Considere específicamente compañías extranjeras; por ejemplo, en Francia, no es inusual usar "Administrat eu r" en lugar de "Administrator", incluso para direcciones de correo electrónico y nombres de cuenta.

  • En segundo lugar, muchas pequeñas empresas no acceden y no saben cómo acceder a sus correos electrónicos del sistema. Pagan sin saber siquiera que tienen [email protected] con cientos de correos electrónicos urgentes esperando su respuesta.

    Por la misma razón, no puede basarse en los registros de WHOIS para la dirección de correo electrónico.

Arseni Mourzenko
fuente
¿Qué pasa con el envío de correos electrónicos de validación a los usuarios como "info @", "administrador @" "postmaster @"?
Fez Vrasta
@FezVrasta: las direcciones de correo electrónico son increíblemente fáciles de falsificar.
Oded
Quiero decir "envío un correo electrónico a info @ con un enlace de confirmación dentro"
Fez Vrasta
66
@FezVrasta: un dominio puede no tener ningún servidor de correo electrónico asociado, y si lo tiene, no hay garantía de que info@se definirá una (o cualquier dirección local) o de que tendrá una dirección general supervisada.
Oded
3
"registre su dominio de correo electrónico para que cada usuario que se registre con un correo electrónico del dominio dado se coloque automáticamente en el grupo de la empresa". Lo sentimos, pero la pregunta deja en claro que puede asumir un servidor de correo electrónico. Esta alternativa supone un servidor web, que no es un hecho.
MSalters
17

La pregunta está vigente: "¿Qué significa ser dueño de un dominio de correo electrónico?".

Ser propietario de un sitio web se define por la capacidad de colocar un archivo en la raíz . Los usuarios comunes pueden poner un archivo http://example.com/~user42/validation.txtpero no hacerlo http://example.com/validation.txt.

Para el correo electrónico, no existe tal jerarquía. Sin embargo, la postmasterdirección es especial. (Reservado por RFC2142 ) No podrá crear [email protected]. Por lo tanto, la capacidad de crear y / o acceder postmaster@es la prueba que necesita para la propiedad del dominio de correo electrónico.

MSalters
fuente
1
¿Es esa especialidad parte de una especificación, un componente integrado común de los servidores de correo electrónico, o simplemente una convención?
DougM
8
@DougM: Reservado por RFC 2142
MSalters el
Gracias, así que una opción adicional sería el uso de postmaster @, gracias
Fez Vrasta
55
@MSalters: Deberías poner ese RFC en tu respuesta
Bergi
1
Para muchos postmaster @ domain simplemente no va a la persona correcta ni a nadie. Si bien técnicamente se supone que es una forma de determinar la propiedad del dominio, prácticamente no se podría usar esto.
JamesRyan
10

Al ver en sus comentarios que es posible que no prefiera utilizar el método de archivo en la raíz del sitio web, una alternativa que podría funcionar es

Verifique la propiedad usando WHOIS

Debería obtener el dominio que se solicita (por ejemplo stackexchange.com) y uno de los correos electrónicos que figuran en la salida de WHOIS para ese dominio . (Tenga en cuenta que esto no funcionará para registros secretos / privados, pero si su audiencia son corporaciones, esto generalmente no es un problema)

Por ejemplo:

WHOIS information for stackexchange.com:**
...
Domain Name: STACKEXCHANGE.COM 
Registrar WHOIS Server: whois.name.com 
Registrar URL: http://www.name.com 
Updated Date: 2014-05-14T16:49:02-06:00 

Registrant Name: Sysadmin Team 
...
Registrant Email: [email protected] 
Admin Name: Sysadmin Team 
Admin Organization: Stack Exchange, Inc. 
...
Admin Email: [email protected] 
Tech Name: Sysadmin Team 
...
Tech Email: [email protected] 
Name Server: cf-dns02.stackexchange.com 
Name Server: cf-dns01.stackexchange.com 
DNSSEC: NotApplicable 

Incluso podría hacer la whoisbúsqueda de forma interactiva y proporcionar una lista desplegable de los correos electrónicos válidos (en este caso, solo [email protected]). Luego enviaría un código / enlace de verificación al correo electrónico elegido.

Chris digital
fuente
Esto es lo que se hace al validar ciertos certificados SSL. Es probable que no sea un enfoque automático. Pero sería una buena opción secundaria.
GrandmasterB
@GrandmasterB No veo por qué no se pudo automatizar: búsqueda de whois, capturar los correos electrónicos, dejar que el usuario elija uno, enviar el código de validación por correo electrónico.
Chris digital
He probado de esta manera con dos de mis mayores clientes y ambos no tienen un correo electrónico válido en el whois (uno no tiene correos electrónicos, el otro tiene el correo electrónico del soporte técnico del registrante del dominio ...
Fez Vrasta
1
Por cierto, este podría agregarse como una alternativa.
Fez Vrasta
6

Solicite a sus usuarios que agreguen un registro TXT a su dominio con una referencia a su cuenta de usuario en su sitio (su nombre de usuario, ID o un token arbitrario generado al solicitarle al usuario que verifique su dominio).

Recuerdo que agregué un registro llamado adn_verification=<my user name>en una red social para mostrar mi dominio como verificado, y pensé que es bastante bueno y no requiere que el dominio apunte a un servidor web.


fuente
Una gran parte de los usuarios no sabrá qué es el registro TXT, y aquellos que lo sepan no necesariamente tendrán el conocimiento suficiente para establecerlo.
Arseni Mourzenko
1
@MainMa sigue siendo una buena característica para implementar.
1
+1. El hecho de que tenga un dominio no significa que tenga un servidor web ejecutándose en él (aunque en este caso particular, una empresa probablemente siempre tendrá un sitio web :)).
Matt
FWIW, este es el enfoque que utiliza Microsoft si desea un dominio personalizado para Office 365.
Casey,
2

Para agregar a las sugerencias que ya están en la página: recomiendo dar al usuario opciones sobre cómo valida su dominio. Las otras sugerencias en la página son perfectamente utilizables, pero a veces se encuentra en una situación en la que alguien que quiere verificar su dominio solo tiene acceso limitado a su servidor o incluso a su sitio web. Por ejemplo, es posible que su usuario no pueda agregar registros o archivos de dominio en la raíz del dominio.

Por ejemplo, Troy Hunt permite a los usuarios buscar un dominio completo en su base de datos de cuentas comprometidas, pero primero debe verificarlo. Le da al usuario la opción de 4 métodos:

  1. Vía correo electrónico;
  2. a través de una metaetiqueta;
  3. Una carga de archivo;
  4. un registro TXT

En los 4 casos, requiere que el usuario ingrese un valor específico en algún lugar contra el cual verifique.

La explicación está en http://www.troyhunt.com/2014/01/im-pwned-youre-pwned-were-all-pwned.html .

Nzall
fuente
gracias, pero ¿cómo funciona la verificación por correo electrónico? ¿Cómo pueden evitar que valide un dominio "gmail.com" o "hotmail.com"? (o mejor, algún servicio gratuito de webmail desconocido).
Fez Vrasta
No importa lo que haga, a menos que diga explícitamente "estas direcciones NUNCA pueden validarse", siempre existe la posibilidad de que el proveedor de correo web registre su propio dominio, y no hay mucho que realmente pueda hacer al respecto. Lo único que puede hacer es evitar que algunos dominios se validen por completo. No necesita evitar la validación de mailprovider.com, solo debe evitar que [email protected] logre validar todo el dominio mailprovider.com en su nombre.
Nzall
ok, pero no tengo forma de saber si un correo electrónico es parte de una empresa o de un servicio gratuito de correo web.
Fez Vrasta
1
Tendrás que mantener una lista blanca para eso, me temo. Otra opción es que cada dominio debe ser aprobado por un ser humano. Sé que esto lo hace más problemático para los nuevos solicitantes, pero una aprobación solo tiene que suceder una vez. Luego, sabe que ese dominio está aprobado y no es un servicio de correo web gratuito.
Nzall
0

¿Podría permitirse evitar el uso de correos web gratuitos para el registro?

Eso es lo que Brium no: no se puede iniciar sesión con una @gmail.com, @live.cometc correo electrónico - que tienen que utilizar su propio.

Y te agrupa por esto.

Si se dirige a empresas, esa debería ser una buena manera de hacerlo.

Todavía podría tener el problema de saber quién es el jefe (por ejemplo, el administrador de ese grupo), pero puede que no sea tan importante: el jefe probablemente debería tener las herramientas para decirle a cualquier empleado que le transfiera la propiedad a él, siempre que alguien registrado ante el jefe.

mgarciaisaia
fuente
3
¿Cómo comprobarías que un dominio es un correo web gratuito? Hay al menos cientos de ellos.
svick
Estaba escribiendo lo mismo :)
Fez Vrasta
Aquí hay un proyecto no tan activo que enumera un montón de ellos: github.com/tarr11/Webmail-Domains . ¿Es tan crítico que se les escape alguno? ¿No es suficiente para cubrir a la gran mayoría de los usuarios (Gmail, Live, Yahoo y similares)? No sé qué hace su software, pero ¿será útil que alguien trate de evitar esta limitación? ¿Sería útil el software si está solo en un grupo o sin sus colegas?
mgarciaisaia
Permitiría un acceso básico a la información cargada en mi software, por lo que tener algún usuario no deseado en el grupo incorrecto podría causar problemas. Por cierto, podría ser una solución porque será un problema del propietario de los datos si registra un dominio que no es suyo ... Creo
Fez Vrasta