none
envío correo app Windows 8 RRS feed

  • Pregunta

  • Hola, necesito me ayudeís con lo siguiente:

    Estoy trabajando en una app. que por seguridad, si el cliente olvida su contraseña, ésta le es enviada por correo electronico a la dirección que el haya indicado previamente. El problema es que no encuentro como enviar un email desde una cuenta distinta a la de windows live, y sin tener que pasar por la interfaz de envío de correo. La intensión es que con presionar un boton se le envíe el correo a la dirección que indico el cliente al momento que configuro su app.

    Espero vuestra ayuda, saludos.

    lunes, 18 de febrero de 2013 12:14

Respuestas

  • Para enviar un correo de forma local tendrías que realizar tu propia implementación del protocolo SMTP y contar con un servidor SMTP en alguna parte que realizara el envío. Otra opción es que la aplicación local comunique la contraseña a un backend y que sea ese backend quien realice el envío del correo.

    De cualquier modo, el envío del correo en la máquina local es altamente ineficiente. Supongamos que soy un atacante que quiere entrar de forma ilícita en la aplicación:

    1. Hago click en el botón de "he olvidado mi contraseña"
    2. El programa genera una contraseña temporal
    3. El programa envía la contraseña a la dirección de correo usuario@servidor.com

    Si antes de lanzar la aplicación modifico el fichero hosts para que servidor.com apunte a una IP bajo mi control, la aplicación estaría enviando el correo a mi máquina y no a servidor.com, con lo que el proceso deja de ser seguro.

    Todo esto suponiendo siempre que una vez realizado el envío de la contraseña la aplicación solo guarde su hash y no su texto en claro...

    Personalmente te recomiendo que dejes la autenticación en manos de servicios de autenticación como Microsoft Account.

    lunes, 18 de febrero de 2013 19:06

Todas las respuestas

  • Hola Eucall.

    ¿La aplicación es totalmente local o interactúa con algún sistema en internet que controles?

    Si la aplicación se contecta con un sistema de internet que controles, sería el sistema el que debería enviar el correo, con lo que tu app de Windows 8 sólo debería mandar la orden al sistema para que realice el envío.

    Si la aplicación fuera totalmente local, no tendría mucho sentido el envío de la contraseña ya que para acceder a la aplicación ya debes pasar por la validación del usuario. Aunque, se me ocurre algún caso (que no es muy lógico) en el que compartas un mismo inicio de sesión para diferentes usuarios y, en este caso, yo me plantearía tener un usuario administrador que pudiera asignar una contraseña temporal o que se use el correo de la Microsoft Account logueada en el sistema para el envío desde esa cuenta hacia el correo del usuario.


    "En los momentos de crisis, sólo la imaginación es más importante que el conocimiento"
    MCTS | SharePoint 2010, Application Development
    MCTS | SharePoint 2010, Configuring
    MS | Programming in HTML5 with JavaScript and CSS3 (MS)
    Twitter | @saintwukong

    lunes, 18 de febrero de 2013 13:22
  • Gracias por tu respuesta. Te explico un poco más la idea. El dia que el usuario no pueda ingresar a la aplicación porque olvido su contraseña, podrá recuperarla presionando un boton que esta siempre desde el inicio, sin necesidad de loguearse. Este boton lo que hará será enviar una clave generada de forma aleatoria al correo que previamente registro el usuario. Así, cuando ingrese la contraseña generada podrá reestablecer sus contraseñas. El problema es que no sé como enviar un correo al presionar un boton creado por mi, y que este correo sea enviado desde mi cuenta especial (no la de windows live), por ejemplo: miCorreo@miDominio.com.

    Espero tu respuesta, agradecido de antemano.

    lunes, 18 de febrero de 2013 14:38
  • Para enviar un correo de forma local tendrías que realizar tu propia implementación del protocolo SMTP y contar con un servidor SMTP en alguna parte que realizara el envío. Otra opción es que la aplicación local comunique la contraseña a un backend y que sea ese backend quien realice el envío del correo.

    De cualquier modo, el envío del correo en la máquina local es altamente ineficiente. Supongamos que soy un atacante que quiere entrar de forma ilícita en la aplicación:

    1. Hago click en el botón de "he olvidado mi contraseña"
    2. El programa genera una contraseña temporal
    3. El programa envía la contraseña a la dirección de correo usuario@servidor.com

    Si antes de lanzar la aplicación modifico el fichero hosts para que servidor.com apunte a una IP bajo mi control, la aplicación estaría enviando el correo a mi máquina y no a servidor.com, con lo que el proceso deja de ser seguro.

    Todo esto suponiendo siempre que una vez realizado el envío de la contraseña la aplicación solo guarde su hash y no su texto en claro...

    Personalmente te recomiendo que dejes la autenticación en manos de servicios de autenticación como Microsoft Account.

    lunes, 18 de febrero de 2013 19:06
  • Gracias por tu respuesta Pablo.

    Efectivamente utilizo un servodr SMPT que me provee goddady.com, pero no sé como hacer esa implementación que indicas. Con el tema de la seguridad, no es problema, efectivamente guardo el hash de la clave generada, y el correo que ingresa el usuario está cifrado, lo cual añade un nivel de seguridad. Agradezco tu recomendación de utilizar la autenticación del Microsoft Account, pero para este caso en especifico, no puedo utilizarla. Me podrias dar algun ejemplo de codigo en C# /VB de como enviar el correo???

    martes, 19 de febrero de 2013 12:39