2008-09-18 14 views
5

Estoy intentando convertir un sistema de inicio de sesión de fabricación propia al control de inicio de sesión asp.net estándar incluido en .net. Quiero que todas las comunicaciones en el sitio web para un usuario que no haya iniciado sesión sean en texto claro, pero se bloquea todo en SSL una vez que el usuario inicie sesión, incluida la transmisión del nombre de usuario y la contraseña.Sitio parcial SSL utilizando el control de inicio de sesión de asp.net

Lo he hecho antes cargando una segunda página - "loginaction.aspx" - con un prefijo https: luego, sacando el nombre de usuario y la contraseña buscando los controles de texto apropiados en Request.Form.Keys. ¿Hay alguna manera de hacer algo similar con los controles de inicio de sesión de .net? No quiero tener una página de inicio de sesión separada, sino incluir este control (dentro de una vista de inicio de sesión) en cada página del sitio.

Respuesta

2

No podrá hacer simplemente lo que está diciendo, porque la devolución de datos (que es lo que usa el control de inicio de sesión) va a ser la seguridad de la página (SSL o no SSL) .

Su mejor opción en este escenario es utilizar un IFRAME que contenga una página HTTPS (SSL) que solo contenga el control de inicio de sesión. Es posible que deba redireccionar a otra página después del inicio de sesión que le permite salirse del IFRAME.

Plan B sería tener un formulario separado en la página (fuera de su FORMULARIO principal) que tiene la propiedad ACCIÓN apuntando a otra página donde maneja el inicio de sesión. Tendrá que pasar su propio código de inicio de sesión para manejar la autenticación de formularios.

+0

Tenga en cuenta que el uso de cualquiera de estas técnicas todavía no es seguro, ya que es susceptible a un hombre en medio del ataque. Para más información, lea esto. http://jlorenzen.blogspot.com/2009/11/preventing-insecure-login-pages.html –

0

No podrá tener su sitio como no SSL, con un cuadro de inicio de sesión en cada página, y luego envíe el nombre de usuario y la contraseña a través de SSL.

La única manera de lograr esto es mediante el uso de marcos de algún tipo. De esta forma, toda su página podría no ser SSL, pero el marco de inicio de sesión tendría que ser SSL.

La forma habitual de hacerlo es bloquear todo el sitio con SSL, no se preocupe por tener el nombre de usuario y la contraseña SSL encriptados e ir a SSL después de iniciar sesión, o seguir la ruta del cuadro que mencioné anteriormente .

1

Pude lograr esto agregando un evento OnClientClick al control del botón de inicio de sesión y configurándolo en la siguiente función de javascript.
`

function forceSSLSubmit() 
{ 

       var strAction = document.forms[0].action.toString(); 

       if (strAction.toLowerCase().indexOf("http:") == 0) { 
        strAction = "https" + strAction.substring(4); 

        document.forms[0].action = strAction; 
       } 

     } 

`

Cuestiones relacionadas