¿Está sugiriendo una url correcta en una práctica incorrecta de 404 páginas?

43

Actualmente estoy escribiendo una aplicación web, y mi cliente me preguntó si sería posible sugerir una URL válida al usuario cuando accidentalmente escribiera un error tipográfico en la barra de URL, un ejemplo de esto sería así:

  
  • Bob navega a ' enlace '
  •   
  • El servidor web no puede encontrar la ruta '/ product' , pero sabe que la ruta '/ product s ' existe
  •   
  • El servidor web sugiere que Bob navegue a '/ products' en su lugar
  •   
  • Bob navega a '/ products' y continúa ofreciendo el sitio web
  •   

Este ejemplo haría que Bob tenga una mejor experiencia de usuario.

Sin embargo, me llevó a preguntarme si esto se considera una mala práctica, ya que el servidor podría exponer las URL que el administrador del sitio web no quiera mostrar públicamente.

    
pregunta Paradoxis 19.05.2016 - 11:16
fuente

7 respuestas

62

Si Bob está tratando de escribir productos y tipos de producto erróneos, ya sabe que hay una URL en el sitio web para productos y, por lo tanto, no le está diciendo nada que no sepa. Si no sugiere URL que no deberían ser públicas, no tendrá ningún problema.
Sin embargo, ¿por qué usar un mensaje 404 y no hacer una redirección inmediata?

    
respondido por el David Glickman 19.05.2016 - 11:39
fuente
13
  

Sin embargo, me llevó a preguntarme si esto se considera una mala práctica, ya que el servidor podría exponer las URL que el administrador del sitio web no quiera mostrar públicamente.

  1. Esto sugiere que la función se implementa al verificar una lista de todas las URL válidas posibles (una lista que el servidor ni siquiera puede tener o no puede obtener fácilmente), para incluir las que no son públicas y comparar la URL solicitada con ellas .
  2. Esto sugiere que hay URL que son un secreto. Si bien puede haber algunos casos de uso válidos para esto, en general , las páginas a las que no desea que accedan las personas no deberían permitirles acceder a ellas adivinando o conociendo la URL. Sin embargo, desde la perspectiva de la Experiencia del usuario, puede ser molesto para el usuario que se les sugiera una URL a la que realmente no pueden acceder.

La función podría implementarse fácilmente al tener una lista explícita de URL de páginas públicas con las que compara la URL solicitada. podría ser razonable, si solo hay una coincidencia, redirigir directamente al usuario (usando un código HTTP encontrado 302) a la URL adecuada, o a una página de búsqueda. Si hay varias coincidencias, puede ser razonable presentarlas en una lista con un código HTTP de 300 opciones múltiples.

    
respondido por el Random832 19.05.2016 - 17:34
fuente
12

Yo diría que mantener una URL secreta no es realmente la mejor práctica de seguridad. Puede tener algunos enlaces, ya sea ocultos o generados por Javascript, que mostrarán la URL del administrador o lo que sea para cualquiera que lo vea. Esto es aún más cierto para las aplicaciones de SPA (aplicación de página única), creo.

No creo que haya ningún motivo para ocultar las URL de navegación, si estás seguro de que hiciste tu trabajo para proteger esas URL, estás bien.

Yo diría que tener esta funcionalidad para desarrollar te haría estar más consciente de la seguridad de esas URL.

    
respondido por el Walfrat 19.05.2016 - 11:24
fuente
3

Creo que la mejor respuesta aquí es tratar la actividad necesaria como una redirección 301 (permanente).

Si puede anticipar errores ortográficos y problemas comunes y detectarlos en la configuración de su servidor web (ya sea Apache, Nginx o IIS), la actividad completa debe ser completamente transparente para el usuario.

En su aplicación web, podría agregar algo de manejo adicional para alertar al usuario de que ha sido redirigido si lo desea. He visto esto hecho con una especie de superposición de alerta discreta que desaparece después de unos segundos. Aunque no recuerdo dónde lo vi.

    
respondido por el Chris Giddings 20.05.2016 - 23:00
fuente
1

En el script que use para determinar las URL para ofrecer como sugerencias, filtre las URL de administrador.

    
respondido por el Micheal Johnson 19.05.2016 - 18:36
fuente
1

Esto no es un problema de seguridad. Un estado 404 tiene la intención de informar a su visitante que ha solicitado un recurso que el servidor no conoce. Es muy razonable incluir alguna ayuda en la respuesta. Por ejemplo, muchos servidores ofrecen funcionalidad de búsqueda en su página 404. Si puedes ofrecer sugerencias útiles, solo estás ayudando. (Por supuesto, ofrecer URL 'admin' probablemente no sea útil.)

Si su servidor está configurado de forma insegura, entonces debe resolver ese problema, pero debe hacerlo independientemente de si intenta proporcionar una respuesta 404 más útil.

    
respondido por el Dominic Cronin 21.05.2016 - 09:35
fuente
0

Sugerir una URL "real" solo sería un riesgo para la seguridad si (y el código fuente HTML - "ver fuente") identificara la tecnología de back-end (CMS, etc.) y si el sistema / CMS tenía fallas de seguridad.

Por ejemplo, si ejecuté un sitio de WordPress y vi los formatos de URL tradicionales de http://example.com/2016/05/20/my-article y el código fuente contenía los directorios wp-content como URL de recursos (CSS, JS, imágenes, etc.), entonces no importaría qué complicadas eran mis URL: el backend ha sido revelado y solo sería cuestión de tiempo antes de que un hacker encuentre las URL de su administrador.

En el otro lado de eso, si mis URL solo contuvieran URL sencillas y amigables y mi código fuente tuviera directorios o marcas no muy fáciles de identificar, sería muy difícil encontrar el sistema / CMS en segundo plano y sería mucho más difícil de atacar.

Obviamente, como muchos han dicho, ocultar las URL de administración "ayudaría" y usted podría implementar mecanismos como .htaccess para evitar algún acceso por IP (para sus páginas de administración, etc.) pero nunca habrá una protección al 100%.

Esencialmente, cuanto menos se regale su sitio, más seguro (OMI) se ha convertido; y sugerir direcciones URL reales (que no sean las de su administrador) no tiene ningún efecto en la seguridad de su sitio.

    
respondido por el Kinnectus 20.05.2016 - 17:05
fuente

Lea otras preguntas en las etiquetas