Come posso mantenere segreto l'URL del browser durante la modifica dei dati?

1

Si supponga, C'è un elenco utenti.

<a href="user/5">Edit</a>
<a href="user/6">Edit</a> 

Quando un utente del sistema ha fatto clic per modificare le informazioni utente. Quindi va in url al browser come

link

Può sostituire manualmente da 5 a 155 e modificare (aggiornare) le informazioni dell'utente. È un problema per me. Come posso rimuovere questo problema?

Ho un'idea: chiamare la pagina di modifica di ajax. In modo che il numero sarà nascosto. C'è qualche buona idea?

    
posta Kabir Hossain 06.07.2015 - 10:14
fonte

4 risposte

1

La tua applicazione probabilmente ha diverse azioni con diversi livelli di accesso, ad esempio un amministratore sarà probabilmente più interessato di un semplice utente.

Quindi è meglio costruire alcuni diritti di accesso utente (-roles) di riepilogo dati matrice e controllare brefore per trattare qualsiasi richiesta se l'utente loggato corrente (o anche Guest non registrato se si dispone di tale ruolo) ha il diritto o non eseguire questa azione. Ovviamente questo potrebbe sembrare eccessivo, ma se ti preoccupi della sicurezza ne hai sicuramente bisogno. Non puoi MAI fidarti dell'utente, devi sempre convalidare il lato server.

    
risposta data 06.07.2015 - 13:15
fonte
5

Ho riscontrato questo problema diverse volte e ho trovato quella che secondo me è la soluzione più semplice. Dato che il tuo utente può modificare le informazioni (personali / account?), Presumo tu abbia un qualche tipo di sistema di autenticazione attivo e funzionante. Se si utilizzano le sessioni per tenere traccia dei client riconosciuti, è possibile memorizzare l'ID dell'utente al suo interno. Quindi è possibile recuperare l'ID dalla sessione quando viene richiesta la pagina appropriata. Dovresti modificare la struttura dell'URL in users/edit (o qualcosa di simile) in modo che NON abbia informazioni sensibili.

Ora hai nascosto i dati sensibili dall'URL. Questo ha anche un bonus. Immagina un utente che collega il suo attuale URL (la tua vecchia struttura con l'ID) in una e-mail e il destinatario lo fa clic. Il tuo utente convalidato ora ha consegnato involontariamente il suo ID.

Riassumi

  1. Rimuovi l'ID utente dalla struttura URL
  2. Archivia l'ID utente all'interno di una sessione
  3. Modifica la struttura dell'URL per NON includere alcuna informazione sensibile
  4. Recupera l'ID dalla sessione quando viene richiesta la pagina appropriata
  5. Continua come al solito

Alternativa

Se l'ID all'interno dell'URL è un requisito puoi "prendere in prestito" parte del concetto da quanto sopra. Se si archivia l'ID utente all'interno della sessione (o la memoria temporanea utilizzata degli utenti riconosciuti), è possibile confrontare l'ID dall'URL con esso. Se corrisponde, siamo pronti, altrimenti possiamo mostrare ed errori, disconnettere l'utente e così via.

Spero che questo ti possa aiutare, felice codifica!

    
risposta data 06.07.2015 - 12:20
fonte
3

Utilizza solo un URL con alcuni parametri di query, come

<a href="user/5?checksum=12345">Edit</a>

Ovviamente il checksum è calcolato, magari usando un cookie di sessione, e il codice del server ha qualcosa da convalidare. Pertanto, se il tuo utente abusa del sistema modificando l'URL (ad esempio, sostituendo user/5 con user/567 ), il checksum non dovrebbe più essere valido.

Sii gentile con i tuoi utenti. Non avere un checksum assurdamente lungo (come fa linkedin ). Rendilo di lunghezza ragionevole (ad esempio 48 caratteri è più che sufficiente).

Aspettati che gli utenti avanzati alla fine (e legittimamente) aggiungano un URL di questo tipo, quindi assicurati che funzioni quando qualcuno lo utilizza il mese prossimo o il prossimo anno.

    
risposta data 06.07.2015 - 12:22
fonte
0

Non puoi semplicemente permettere ai tuoi utenti di modificare l'account di altri popoli. Se stai pensando che il tuo problema sia nell'URL, allora penso che ti sbagli. Se si dispone di un'autenticazione utente e di una sessione corrette, ciò non si verificherebbe. Quindi se davvero non ti piace avere valori leggibili nel tuo URL, puoi provare a eseguire l'hash o crittografarli.

    
risposta data 01.08.2015 - 03:27
fonte

Leggi altre domande sui tag