Pregunta

¿Hay una manera confiable de determinar de dónde viene un usuario en una aplicación ASP.NET? Tenemos una aplicación web que está vinculada desde dos ubicaciones diferentes. Los dos enlaces están en dominios separados y necesitan dictar ciertos permisos de usuario dentro de esta aplicación. Esto es lo que he intentado hasta ahora ...

  • Usando Request.UrlReferrer (que es el Referer encabezado HTTP). Esto siempre devuelve una cadena vacía. Creo que esto se debe a que los hipervínculos usan Javascript para abrir una ventana emergente. Según mi investigación, el agente de usuario proporciona este encabezado HTTP en hipervínculos estándar. Las ventanas emergentes de Javascript son una historia diferente (evidentemente).

  • Una cadena de consulta simple para indicar el referente. Esto no es realmente una opción porque necesitamos algo que no sea tan fácil de evitar (más seguro).

¿Alguna idea? Entiendo que, en el gran esquema de las cosas, esto podría tener un mejor diseño / estructura general. No publique una respuesta sugiriendo que rediseño todo, porque esa no es una opción.

¿Fue útil?

Solución

No hay una manera confiable de saber de dónde viene un usuario y esto no es solo una limitación de ASP.NET, sino todas las aplicaciones web en general. El URL de referencia se puede suplantar fácilmente, por lo que no es confiable. Creo que la mejor opción podría ser algún parámetro de URL encriptado, o cookie si lo prefiere.

Por lo tanto, ambas páginas deben acordar claves privadas comunes.

  1. Página1 usará la clave para encriptar su dirección y pasarla a la Página2
  2. Page2 verificará la presencia de este parámetro e intentará descifrarlo con la misma clave privada utilizada para cifrar
  3. Si esto tiene éxito, significa que Page2 será capaz de determinar quién lo llamó, si no, los datos han sido alterados

Otros consejos

Sin que el navegador pase un referente o use la cadena de consulta como usted describe, no hay forma de saberlo.

Otra opción es tener dos páginas de destino diferentes en la aplicación ASP.NET. Las páginas de destino pueden establecer las opciones de seguridad y luego redirigir a una página de inicio común. Esto es un poco más seguro que la opción de cadena de consulta.

O bien, puede colocar una imagen de 1x1 píxeles en los sitios de referencia extraídos de su sitio de aplicación ASP.NET. El referente debe pasarse al script y luego puede establecer una cookie en la máquina de los usuarios a la que puede hacer referencia cuando lleguen a la página de inicio de la aplicación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top