Suggerisce un URL corretto in una cattiva pratica di 404 pagine?

43

Attualmente sto scrivendo un'applicazione web, e il mio cliente mi ha chiesto se sarebbe stato possibile suggerire un URL valido all'utente quando ha accidentalmente scritto un errore di battitura nella barra degli indirizzi, un esempio di questo sarebbe come questo:

  • Bob navigates to 'https://www.example.com/product'
  • The web server is unable to find the route '/product', but knows that the route '/products' does exist
  • The web server suggests Bob to navigate to '/products' instead
  • Bob navigates to '/products' and continues browing the website

Questo esempio indurrebbe Bob ad avere un'esperienza utente migliore.

Tuttavia, mi ha portato a chiedermi se questo è considerato una cattiva pratica, in quanto il server potrebbe esporre l'URL che l'amministratore del sito web potrebbe non voler mostrare pubblicamente.

    
posta Paradoxis 19.05.2016 - 11:16
fonte

7 risposte

62

Se Bob sta provando a digitare prodotti e scrive correttamente i prodotti, sa già che c'è un URL nel sito web per i prodotti e quindi non gli stai dicendo nulla che non sappia. Se non suggerisci URL che non dovrebbero essere pubblici, non avrai problemi.
Perché usare un messaggio 404 e non eseguire un reindirizzamento immediato?

    
risposta data 19.05.2016 - 11:39
fonte
13

However, it led me to wonder if this is considered bad practice, as the server might expose URL's the admin of the website might not want to show publicly.

  1. Ciò suggerisce che la funzionalità sia implementata controllando un elenco di tutti gli URL validi possibili (un elenco che il server potrebbe non avere o potrebbe facilmente ottenere), includendo quelli non pubblici e confrontando l'URL richiesto con loro .
  2. Questo suggerisce che ci sono URL che sono un segreto. Sebbene possano esserci alcuni casi d'uso validi per questo, in generale , le pagine a cui non vuoi che la gente acceda non dovrebbero permettere loro di accedervi indovinando o conoscendo l'URL. Tuttavia, dal punto di vista dell'esperienza utente, potrebbe essere fastidioso per l'utente avere un URL suggerito a cui non possono realmente accedere.

La funzionalità potrebbe essere facilmente implementata avendo un elenco esplicito di URL di pagine pubbliche che confronta invece l'URL richiesto. potrebbe essere ragionevole, se esiste una sola corrispondenza, per reindirizzare direttamente l'utente (utilizzando un codice HTTP 302 trovato) all'URL appropriato o a una pagina di ricerca. Se ci sono più corrispondenze, potrebbe essere ragionevole presentarle in un elenco con un codice HTTP 300 scelte multiple.

    
risposta data 19.05.2016 - 17:34
fonte
12

Direi che mantenere un URL segreto non è in realtà la migliore pratica di sicurezza. Potresti avere alcuni collegamenti, sia nascosti che generati da Javascript, che mostreranno l'URL dell'amministratore o qualsiasi altra cosa a chiunque dia un'occhiata. Ciò è ancora più vero per le applicazioni SPA (applicazione per pagina singola) che penso.

Non penso ci sia alcun punto di nascondere gli URL di navigazione, se sei sicuro di aver fatto il tuo lavoro per proteggere quegli URL, stai bene.

Direi che avere questa funzionalità per svilupparsi ti renderebbe più consapevole della sicurezza di quegli URL.

    
risposta data 19.05.2016 - 11:24
fonte
3

Penso che la migliore risposta qui sia di trattare l'attività necessaria come reindirizzamento 301 (permanente).

Se puoi anticipare errori ortografici e problemi comuni e individuarli nella configurazione del tuo server web (sia Apache, Nginx o IIS), l'intera attività dovrebbe essere completamente trasparente per l'utente.

Nella tua applicazione web potresti aggiungere un ulteriore trattamento per avvisare l'utente che è stato reindirizzato, se lo desideri. Ho visto questo fatto con una sorta di overlay di avviso non invadente che scompare dopo pochi secondi. Non riesco a ricordare dove l'ho visto però.

    
risposta data 20.05.2016 - 23:00
fonte
1

In qualunque script tu usi per determinare gli URL da offrire come suggerimenti, filtra qualsiasi URL di amministrazione.

    
risposta data 19.05.2016 - 18:36
fonte
1

Questo non è un problema di sicurezza. Lo stato 404 ha lo scopo di informare il visitatore che ha richiesto una risorsa di cui il server non è a conoscenza. È molto ragionevole includere un aiuto nella risposta. Ad esempio, molti server offrono funzionalità di ricerca sulla loro pagina 404. Se puoi offrire suggerimenti utili, stai solo aiutando. (Naturalmente, offrire gli URL "admin" probabilmente non è utile.)

Se il tuo server non è configurato correttamente, dovresti risolvere il problema, ma devi farlo indipendentemente dal fatto che provi a fornire una risposta 404 più utile.

    
risposta data 21.05.2016 - 09:35
fonte
0

Suggerire un URL "effettivo" sarebbe solo un rischio per la sicurezza se (e l'HTML sorgente - "visualizza sorgente") identificasse la tecnologia back-end (CMS ecc.) e se il sistema / CMS avesse qualche difetto di sicurezza. p>

Ad esempio, se gestivo un sito WordPress e vedevo i formati URL tradizionali di http://example.com/2016/05/20/my-article e il codice sorgente conteneva le directory wp-content come URL di risorse (CSS, JS, immagini ecc.), non avrebbe importanza Quanto erano complicati i miei URL - il backend è stato rivelato e sarebbe solo una questione di tempo prima che un hacker abbia trovato i tuoi URL di amministratore.

Dall'altro lato, se i miei URL contenessero solo URL semplici e amichevoli e il mio codice sorgente non avesse directory o markup facilmente identificabili, sarebbe molto difficile trovare il sistema / CMS in background e sarebbe molto più difficile da attaccare.

Ovviamente, come molti hanno detto, nascondere gli URL di amministratore sarebbe "di aiuto" e potresti implementare meccanismi come .htaccess per impedire l'accesso tramite IP (per le tue pagine di amministrazione, ecc.) ma non ci sarà mai protezione al 100%.

Essenzialmente, meno il tuo sito dà via, più è sicuro (IMO) è diventato; e suggerire URL reali (che non sono quelli del tuo amministratore) non ha alcun effetto sulla sicurezza del tuo sito.

    
risposta data 20.05.2016 - 17:05
fonte

Leggi altre domande sui tag