Question:
Suggérer une URL correcte dans une page 404 est-il une mauvaise pratique?
Paradoxis
2016-05-19 14:16:20 UTC
view on stackexchange narkive permalink

J'écris actuellement une application Web et mon client m'a demandé s'il était possible de suggérer une URL valide à l'utilisateur lorsqu'il écrit accidentellement une faute de frappe dans la barre d'URL, un exemple de ceci ressemblerait à ceci:

  • Bob accède à ' https://www.example.com/product'
  • Le serveur Web ne parvient pas à trouver l'itinéraire '/ product' , mais sait que l'itinéraire '/ product s ' existe
  • Le serveur Web suggère à Bob de naviguer vers '/ products' à la place
  • Bob accède à '/ products' et continue de naviguer sur le site Web

Cet exemple permettrait à Bob d'avoir une meilleure expérience utilisateur.

Cependant, cela m'a amené à me demander si cela est considéré comme une mauvaise pratique, car le serveur pourrait exposer les URL de l'administrateur de le site Web ne souhaite peut-être pas être diffusé publiquement.

N'est-ce pas une question à réponse spontanée?
@techraf Je sais que cela pourrait être considéré comme de la sécurité à travers l'obscurité, mais je voulais savoir si cela pouvait être considéré comme une mauvaise pratique
Ce n'est pas la sécurité par l'obscurité, cela dépend juste des exigences.Il y a des cas où une telle indication serait bénéfique, il y a des cas où elle devrait être évitée.
Pourquoi ne pas proposer des résultats de recherche à la place?
Gardez une liste noire des routages qui ne devraient jamais être suggérés (comme tout ce qui commence par «admin». Sinon, gardez une liste blanche d'URL que vous pouvez exposer.
Notez que https://httpd.apache.org/docs/2.4/mod/mod_speling.html est une chose bien que je pense qu'il est plus ciblé pour les fichiers que pour les sites Web avec des itinéraires plus dynamiques
J'ai personnellement eu des moments où j'ai tapé `http: // www.example.com / help /` (remarquez la barre oblique de fin), alors que l'administrateur Web avait espéré que j'avais tapé `http://www.example.com/help`sans barre oblique à la fin, et j'ai été accueilli par une liste de répertoire de` / var / www / html / help` par exemple.
Est-ce vraiment un problème pour vous?À quelle fréquence bob navigue-t-il vers `/ product` plutôt que de cliquer sur un signet ou de cliquer sur un lien ailleurs?Oubliez la sécurité, cela semble être beaucoup de travail pour un très petit avantage.
Un écueil potentiel: à moins que vous ne puissiez penser à une manière plus intelligente de l'implémenter, il semble que ce serait exponentiel dans le nombre de substitutions ou de suppressions que vous recherchez, c'est-à-dire O (L ^ n) où L est la longueur de la chaîne et nest le nombre de subs / dels.Veillez à définir la limite suffisamment bas pour éviter de rendre le DoS facile.
Je soutiens la réponse d'Anders, même si je voudrais ajouter quelque chose.Si le simple fait d'exposer une URL entraînait un problème de sécurité, alors vous avez ** déjà ** un problème de sécurité en ce moment.La sécurité par l'obscurité n'est ** pas ** une pratique recommandée.Cela étant dit, cela ne semble bien sûr pas professionnel lorsque des URL d'administrateur inaccessibles sont suggérées à un étranger visitant le site.
Sept réponses:
David Glickman
2016-05-19 14:39:37 UTC
view on stackexchange narkive permalink

Si Bob essaie de taper des produits et de saisir un produit par erreur, il sait déjà qu'il y a une URL sur le site Web pour les produits et vous ne lui dites rien qu'il ne sait pas. Si vous ne suggérez pas d'URL qui ne devraient pas être publiques, vous n'aurez aucun problème.
Pourquoi utiliser un message 404 et ne pas effectuer de redirection immédiate?

J'aime l'idée de la redirection.Et je veux juste ajouter que wordpress par défaut redirige l'utilisateur vers le bon site: example.com/pag est redirigé vers example.com/page
+1.Il n'y a qu'un détail: "Pourquoi ne pas utiliser une redirection immédiate?".Il peut y avoir plusieurs correspondances.Pensez simplement à la fonction de correction automatique de votre smartphone - même de petites fautes de frappe peuvent produire des résultats totalement inattendus.Il en va de même pour le problème de la redirection immédiate
Exactement ce que dit @Paul, il pourrait y avoir plusieurs URL avec des noms similaires
Bob et les êtres humains "qui connaissaient déjà l'URL" ne sont peut-être pas les seuls clients à accéder au serveur Web.
@Paul mod_speling gère ce cas - il redirige s'il y a une correspondance, et offre 300 choix multiples s'il y en a plus d'un.
@NiettheDarkAbsol bien sûr, il y a l'option qui diffère entre la situation de trouver une correspondance possible vs multiple.Mais OP ne diffère pas.
"Pourquoi utiliser un message 404 et ne pas faire une redirection immédiate?"- parce que la suggestion pourrait être erronée.Peut-être y a-t-il plus d'un chemin similaire à celui que l'utilisateur a tapé?
@DavidGlickman [C'est pourquoi.] (Http://www.catb.org/jargon/html/D/DWIM.html)
«[pourquoi] ne pas faire une redirection immédiate?» Mis à part les raisons techniques (qui ont été mentionnées), c'est un choix * terrible * UX, même si la redirection est correcte et qu'il n'y avait qu'une seule suggestion possible.Les redirections inattendues ne sont pas quelque chose à quoi la plupart des gens veulent être soumis à moins que cela ne soit absolument nécessaire.
Wikipédia faisait une redirection différée, mais plus maintenant: http://en.wikipedia.org/Example.
Faire une redirection immédiate pourrait nuire au référencement.Google a signalé cela comme un problème que nous devions résoudre.(Plusieurs URL pointant vers le même contenu.) Je ne sais pas si nous sommes pénalisés pour cela, mais si Google considère cela comme un problème qui mérite d'être mentionné, vous devez en tenir compte.
@NiettheDarkAbsol J'adore l'orthographe ironique de ce module, mais en même temps, cela irrite vraiment mon TOC interne.
@Paul "Produits (homonymie)"
@baconface: Vous pouvez [contourner ce problème] (https://support.google.com/webmasters/answer/139066?hl=fr).En particulier, une redirection HTTP 301 serait appropriée pour une situation où "l'URL A est un équivalent non canonique de l'URL B."
@Paul Un choix multiple HTTP 300 pourrait être utile
@Thomas Il ne me semble pas que cela s'applique vraiment ici.Cela s'appliquerait davantage s'il y avait une version HTML5 de la page ainsi qu'une version héritée pour un navigateur qui ne prend pas en charge HTML5.
@Andrew Au moins celui-là a une raison d'être, alors que l'en-tête Referer n'a aucune excuse: D
Un autre avantage d'un "Voulez-vous dire X?"page sur une redirection automatique: il donne à l'utilisateur l'information que son URL n'était pas correcte (ce qu'il ne remarquera peut-être pas si vous redirigez automatiquement).Cela leur permet de corriger leur URL, au cas où ils la partageraient, la lieraient sur leur propre site, etc.
Random832
2016-05-19 20:34:30 UTC
view on stackexchange narkive permalink

Cependant, cela m'a conduit à me demander si cela était considéré comme une mauvaise pratique, car le serveur pourrait révéler des URL que l'administrateur du site Web pourrait ne pas vouloir afficher publiquement.

  1. Cela suggère que la fonctionnalité est mise en œuvre en vérifiant une liste de toutes les URL valides possibles (une liste que le serveur n'a peut-être même pas ou ne peut même pas obtenir facilement), pour inclure des URL non publiques et en comparant l'URL demandée avec elles.
  2. Cela suggère qu'il existe des URL qui sont secrètes. Bien qu'il puisse y avoir des cas d'utilisation valables pour cela, en général , les pages auxquelles vous ne voulez pas que les gens accèdent ne doivent pas leur permettre d'y accéder en devinant ou en connaissant l'URL. Cependant, du point de vue de l'expérience utilisateur, il peut être ennuyeux pour l'utilisateur de se faire suggérer une URL à laquelle il ne peut pas vraiment accéder.

La fonctionnalité pourrait facilement être mise en œuvre en ayant un liste explicite des URL des pages publiques auxquelles il compare l'URL demandée à la place. Il peut être raisonnable, s'il n'y a qu'une seule correspondance, de rediriger directement l'utilisateur (en utilisant un code HTTP 302 Found) vers l'URL appropriée, ou vers une page de recherche. S'il y a plusieurs correspondances, il peut être raisonnable de les présenter dans une liste avec un code HTTP de 300 choix multiples.

Je suis d'accord avec l'utilisation de codes de statut comme 302, et non 200. Si vous créez une page disant "voici quelques URL plus valides que j'ai trouvées ...", et que cette page est 200, alors vous risquez que les web spiders (comme Googlebot) en apprennent plus surune telle page, et en l’indexant.Soudainement, / products / peut générer des tonnes de nouvelles URL "miroir".
@TOOGAM Oui, utilisez toujours le code d'état HTTP correct.Ajoutez un contenu de page utile à la réponse si vous le souhaitez, mais ne renvoyez jamais de réponse «fichier introuvable» sous forme de réponse HTTP 200.Cela cassera toutes sortes de choses!
Walfrat
2016-05-19 14:24:47 UTC
view on stackexchange narkive permalink

Je dirais que garder une URL secrète n'est pas vraiment la meilleure pratique de sécurité. Vous pouvez avoir des liens, qu'ils soient cachés ou générés par Javascript, qui montreront l'URL de l'administrateur ou quoi que ce soit à toute personne qui la regarde. C'est encore plus vrai pour les applications SPA (Single Page Application), je pense.

Je ne pense pas qu'il soit utile de cacher les URL de navigation, si vous êtes sûr que vous avez fait votre travail pour protéger ces URL, tout va bien.

Je dirais qu'avoir cette fonctionnalité à développer vous rendrait plus conscient de la sécurité de ces URL.

Chris Giddings
2016-05-21 02:00:33 UTC
view on stackexchange narkive permalink

Je pense que la meilleure réponse ici est de traiter l'activité nécessaire comme une redirection 301 (permanente).

Si vous pouvez anticiper les fautes d'orthographe et les problèmes courants et les détecter dans la configuration de votre serveur Web (que ce soit Apache, Nginx , ou IIS), toute l'activité doit être complètement transparente pour l'utilisateur.

Dans votre application Web, vous pouvez ajouter une gestion supplémentaire pour alerter l'utilisateur qu'il a été redirigé si vous le souhaitez. J'ai vu cela faire avec une sorte de superposition d'alerte discrète qui disparaît au bout de quelques secondes. Je ne me souviens pas où je l'ai vu.

Micheal Johnson
2016-05-19 21:36:21 UTC
view on stackexchange narkive permalink

Quel que soit le script que vous utilisez pour déterminer les URL à proposer en tant que suggestions, filtrez toutes les URL d'administrateur.

Dominic Cronin
2016-05-21 12:35:07 UTC
view on stackexchange narkive permalink

Ce n'est pas un problème de sécurité. Un statut 404 est destiné à informer votre visiteur qu'il a demandé une ressource que le serveur ne connaît pas. Il est très raisonnable d'inclure de l'aide dans la réponse. Par exemple, de nombreux serveurs proposent des fonctionnalités de recherche sur leur page 404. Si vous pouvez offrir des suggestions utiles, vous ne faites qu'aider. (Bien sûr, proposer des URL "admin" n'est probablement pas utile.)

Si votre serveur n'est pas configuré de manière sécurisée, vous devez résoudre ce problème, mais vous devez le faire, que vous essayiez ou non de fournir une réponse 404 plus utile.

Kinnectus
2016-05-20 20:05:27 UTC
view on stackexchange narkive permalink

Suggérer une URL "réelle" ne serait un risque de sécurité que si elle (et le code HTML source - "afficher la source") identifiait la technologie backend (CMS, etc.) et si le système / CMS présentait des failles de sécurité.

Par exemple, si j'ai dirigé un site WordPress et vu les formats d'URL traditionnels de http://example.com/2016/05/20/my-article et le code source contenu les répertoires wp-content en tant qu'URL de ressources (CSS, JS, images, etc.) alors peu importe la complexité de mes URL - le backend a été révélé et ce ne serait qu'une question de temps avant qu’un pirate ne trouve vos URL d’administration.

De l’autre côté, si mes URL ne contenaient que des URL simples et conviviales et que mon code source avait des répertoires ou un balisage difficiles à identifier, alors ce serait très difficile de trouver le système / CMS en arrière-plan et il serait beaucoup plus difficile d'attaquer.

De toute évidence, comme beaucoup l'ont dit, masquer les URL d'administration "aiderait" et vous pourriez implémenter des mécanismes tels que .htaccess to p empêcher certains accès par IP (pour vos pages d'administration, etc.) mais il n'y aura jamais de protection à 100%.

Essentiellement, moins votre site en donne, plus il est devenu sécurisé (IMO); et suggérer de vraies URL (qui ne sont pas celles de votre administrateur) n'a aucun effet sur la sécurité de votre site.



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...