¿Cómo puedo permitir que solo los navegadores autorizados accedan a un sitio web?

3

Tengo un sitio web y quiero que sea accesible solo para clientes / navegadores autorizados (por ejemplo, con un certificado).

La idea es que los usuarios solo puedan acceder a la página web en las computadoras de sus oficinas (ubicadas en diferentes áreas geográficas y que sean compañías diferentes, por lo que no puedo verificar la IP o instalar algo manualmente).

Estaba pensando en algún certificado de clave privada instalable o algo así.

¿Qué opciones tengo?

EDITAR:

Estoy usando PHP

    
pregunta user1532587 18.04.2014 - 15:32
fuente

8 respuestas

4

Hay un caso de uso muy interesante en esta otra respuesta, usando certificados del lado del cliente:

¿Por qué el sitio web de la BBC siempre solicita un certificado personal y cómo evito regalarlo?

Otra opción rápida y sucia podría ser implementar una VPN y cambiar el dominio del problema de PHP a la administración del sistema. Esto podría ser útil si, en el futuro, necesita dar acceso no solo a un sitio web, sino también a otros recursos como carpetas compartidas, etc.

    
respondido por el lorenzog 18.04.2014 - 17:55
fuente
3

esa es una larga historia, no puedo comentar, así que déjelo como enlace aquí Uso de certificados de cliente SSL con PHP

también puedes echarle un vistazo a apache Directiva SSLRequire puede ser una historia bastante clasificada

también el módulo PHP OpenSSL php.net/openssl

muchas cosas alrededor de esa pregunta

    
respondido por el MolbOrg 18.04.2014 - 17:30
fuente
2

En el servidor, es fácil verificar los encabezados de cada solicitud HTTP (el encabezado User-Agent , en su caso) y redirigir a una página de destino que explica por qué no se puede usar el navegador y qué navegadores son compatibles .

Deberá instalar un formulario de autenticación para validar las solicitudes que se originan en clientes no autorizados. Instalar un certificado X.509 en cada cliente puede ser una opción en algunos casos, pero seguro que suena como un problema de mantenimiento. Probablemente se encuentre en mejor situación al proporcionar la funcionalidad de inicio de sesión, para la cual existen varias soluciones.

    
respondido por el Steven Volckaert 18.04.2014 - 15:53
fuente
2

Limitar el acceso para el navegador web (usuario-agente) es algo que es muy fácil de manipular utilizando una herramienta como los datos de manipulación. Puede cambiar el encabezado para que parezca que la solicitud proviene de cualquier navegador que desee. Si desea asegurarse de que solo puedan acceder al sitio web desde la oficina (si se trata de una ubicación), podría restringir el acceso según la dirección IP. Aparte de eso, creo que tendrá que usar algún tipo de escenario en el que instale certificados en el cliente para confirmar quiénes son.

    
respondido por el BadSkillz 18.04.2014 - 16:20
fuente
2

Puede configurar SSL y crear su propio certificado. Creo que hay una opción para crear algo así como certificados aprobados por el cliente. Eso significa que necesita instalar la parte del cliente del certificado en el cliente (el navegador). Si el cliente no tiene esto instalado, no funcionará.

Para ser honesto, esto es algo sobre lo que leí la semana pasada, y antes de eso no sabía que existía. En este momento no puedo encontrarlo de nuevo, y podría llamarse otra cosa.

    
respondido por el SPRBRN 18.04.2014 - 17:13
fuente
1

Usted está buscando encriptación de clave simétrica aquí. Ambas llaves deben mantenerse en secreto. Esto se puede hacer en el nivel de aplicación de su sistema.

Aquí hay un ejemplo de algoritmo:

  1. Genere una clave para que cada usuario se autentique.
  2. dé la (s) clave (s) a los usuarios (use Diffie-Hellman )
  3. Calcule sent_challenge = encrypt(k1,challenge) y agréguelo a su cola con algún identificador para cada cliente
  4. enviarlo al cliente, el navegador debería calcular el desafío de vuelta por recv_challenge = decrypt(k1,sent_challenge)
  5. ahora compara sent_challenge ?= recv_challenge

nota: k1 aquí es la clave para el cliente de conexión

    
respondido por el AK_ 02.06.2014 - 13:51
fuente
1

Cree una página de "registro" que establezca una cookie a un GUID aleatorio. En otras páginas, verifique el valor de la cookie. El proceso de autenticación ahora es simplemente una cuestión de agregar GUID "buenos" a una base de datos de autorización.

Los detalles exactos se adaptan fácilmente. Por ejemplo, puede permitir que los usuarios ingresen a su afiliación y verifíquela manualmente antes de agregar el GUID a la base de datos. O simplemente les pasa el GUID por correo electrónico y la página de registro simplemente establece el GUID ingresado como el valor de la cookie.

El beneficio es que el proceso manual ahora se puede realizar desde una sola PC, en lugar de tener que visitar cada PC.

    
respondido por el MSalters 02.06.2014 - 18:05
fuente
-1

Php puede determinar qué es el navegador que se está ejecutando y otros detalles del sistema ejecutando un poco de código.

Intente identificar la dirección MAC de cada computadora por php, de modo que solo las computadoras conocidas puedan obtener acceso.

    
respondido por el tommyip 19.04.2014 - 19:01
fuente

Lea otras preguntas en las etiquetas