Bloquear el inicio de sesión de un sitio web en una computadora determinada

3

Tengo un sistema basado en la web donde solo un sitio específico estará disponible en una computadora determinada. En esa computadora tengo una aplicación de escritorio. La aplicación de escritorio y el sitio web se comunican a través de una base de datos.

Por ejemplo: un usuario intenta usar este sitio web "bloqueado" y, por lo tanto, necesita autenticarse. El sitio web crea, por ejemplo, un archivo en la computadora que la aplicación de escritorio puede leer. Si la aplicación puede leer el archivo, responderá al sitio web que todo está bien.

¿Hay alguna buena manera de verificar que el usuario esté ubicado en la computadora correcta?

    
pregunta hgerdin 15.10.2014 - 10:56
fuente

4 respuestas

3

Un enfoque relativamente fácil sería crear una cookie persistente en el lado del cliente después del primer inicio de sesión. La cookie debe contener solo el nombre de usuario del usuario y una clave generada. Durante el siguiente registro, el servidor verificará la clave con la misma clave almacenada en la base de datos y si no coincide o si el usuario no tiene la cookie, puede reaccionar de la forma que desee, por ejemplo, algún tipo de autentificación de segundo nivel etc.

Sin embargo, esto plantea la pregunta, ¿qué hacer si el usuario, por ejemplo, borra la caché o cambia el navegador? Esto debería ser algo que tengas en cuenta. Probablemente, una de las aplicaciones más conocidas que utiliza este sistema de autenticación y verificación en computadoras nuevas es Steam. No hay cookies, pero el principio es básicamente el mismo.

    
respondido por el Dropout 15.10.2014 - 14:08
fuente
0

Como dice PiTheNumber, no puede simplemente crear o proteger un archivo en el disco del usuario.

Pero podría dejar que el usuario descargue el archivo generado para que pueda abrirlo con su aplicación de escritorio después de que termine de descargarlo.

Esto no es un problema con php, solo envía los encabezados correctos y casi todos los navegadores iniciarán la descarga.

header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($file).'"'); //<<< Note the " " surrounding the file name
header('Content-Transfer-Encoding: binary');
header('Connection: Keep-Alive');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));

Consulte esta pregunta SO para obtener más información.

Otro enfoque sería modificar su aplicación de escritorio para que envíe una solicitud al servidor (con alguna información, IP pública, sistema operativo, navegadores instalados, etc.) para que el usuario pueda iniciar sesión en el sitio web después de instalar la aplicación.

Una tercera solución posible sería una extensión del navegador escrita para la autenticación, por lo que su sitio web podría comunicarse directamente (o sobre un archivo) con su aplicación de escritorio.

    
respondido por el Tokk 15.10.2014 - 12:49
fuente
0

Debido a las restricciones de seguridad, no puede crear un archivo en el lado del cliente. Usando JavaScript puede sin embargo almacenar datos en Cookies o localStorage. Consulte enlace

Es posible que pueda leer estos datos desde su aplicación de escritorio. Consulte enlace y enlace

Actualizar

Pensándolo bien, escribiste:

  

Tengo un sistema basado en la web donde solo un sitio específico estará disponible en una computadora determinada.

Haría un inicio de sesión de usuario normal y adjuntaría una opción para este usuario para que pueda mostrar esta página. No es necesario crear un archivo o comunicarse con la aplicación de escritorio.

    
respondido por el PiTheNumber 15.10.2014 - 12:15
fuente
0

La mayoría de las soluciones del lado del cliente, como las cookies y los certificados de clientes, no están estrictamente vinculadas a la máquina y se pueden exportar a otro dispositivo o evitarse si un usuario realmente quiere hacerlo.

Una solución simple sería enrollar un cable de bloqueo Kensington a través del ojo de un dongle de contraseña de una sola vez conectado a la computadora.

    
respondido por el LateralFractal 15.10.2014 - 15:05
fuente

Lea otras preguntas en las etiquetas