¿Qué tan bueno es validar la fuente con request.referer que checksum?

2

Tengo 2 portales (ambos están bajo mi control y los nombres de dominio son diferentes)

En el primer portal, hay un enlace al hacer clic en el cual el usuario puede iniciar sesión directamente en el segundo portal.

El enlace que será golpeado en el primer portal para iniciar sesión en el segundo portal se ve como abajo (es un GET)

https://SecondPortalDomain/someServlet?param1=base64Encoded

Esta URL tiene problemas, ya que se puede almacenar en caché y marcar como favorito. Además, si un Usuario no se autentica en mi 1er Portal, pero golpea directamente la URL directamente, también puede iniciar sesión (contra mi deseo).

Entonces, estoy pensando en poner un cheque usando Referer . Si la URL de origen es tal y cual, entonces solo permita iniciar sesión.

¿Qué tan fuerte es el uso del Referer en comparación con la validación de la suma de comprobación entre el origen y el destino? El Referer es un valor controlado por el cliente y, por lo tanto, puede ser falsificado a algo completamente diferente o incluso eliminado. Pero, incluso un valor de suma de comprobación puede ser estudiado y falsificado.

    
pregunta Vikas V 30.04.2013 - 06:26
fuente

3 respuestas

1

Tienes razón en que el encabezado de referencia puede ser fácilmente falsificado o completamente perdido. Hay complementos del navegador que bloquean el envío del remitente, por lo que si agrega una comprobación al remitente, estaría impidiendo que los usuarios con esos complementos utilicen su sitio.

Una mejor opción sería que el primer portal genere un token largo y aleatorio para cada usuario, y de alguna manera comparta ese token con el segundo portal. Luego, el portal 1 muestra al usuario un enlace que incluye el token como parámetro, por ejemplo, https://SecondPortalDomain/someServlet?token=13a82b00-b17e-11e2-9e96-0800200c9a66 . Tiene muchas opciones sobre cómo los portales pueden compartir el token, por ejemplo, pueden compartir una base de datos, o el portal 1 podría enviarlo al portal 2 a través de SOAP o una publicación RESTful.

Si esta opción no funciona para usted, entonces otra alternativa sería hacer algo basado en el tiempo. El portal 1 podría cifrar la hora actual y usarlo como el token en un enlace al portal 2. Luego, el portal 2 lo descifraría y verificará si la hora desde el token estuvo dentro de los últimos 10 minutos (o la tolerancia que desee).

    
respondido por el davidwebster48 30.04.2013 - 12:25
fuente
0

No confíes en los referentes en absoluto. Como bien ha señalado, se pueden falsificar fácilmente y, por lo tanto, son ridículos como una "medida de seguridad".

Implemente algún tipo de mecanismo de inicio de sesión único entre los dos portales. Una solución simple como un token de tiempo restringido sería altamente recomendable para este tipo de funcionalidad.

Si sus portales comparten servicios comunes de infraestructura o aplicaciones, las funciones de SSO están disponibles en muchas de las plataformas de aplicaciones populares, enlace o < a href="http://www-10.lotus.com/ldd/portalwiki.nsf/dx/Setting_up_single_sign-on_for_WebSphere_Application_Server"> enlace para un ejemplo.

    
respondido por el clark0r 30.04.2013 - 12:30
fuente
0

En términos generales, No confíe en ninguna cosa (encabezados, forma oculta, validación, etc.) que dependa del navegador (lado del cliente)

use burpsuite, WebScarab o cualquier otro proxy para interceptar su solicitud, verá lo peligroso que es.

Puede imaginar que si su autorización depende de "referer" y el usuario cambia el refere al válido durante la navegación, él obtendrá la autorización que no es lo que está buscando.

regla simple? el usuario es tu enemigo.

Este enlace es útil - (OWASP)

enlace

    
respondido por el KING SABRI 02.05.2013 - 14:24
fuente

Lea otras preguntas en las etiquetas