Sono questi due modi sicuri?

2

Ho due scenari e voglio sapere se ognuno è sicuro o quale rischio ci sono.

Numero uno:

Se l'utente ha il link di modifica (modifica / [md5hash]) può modificare un post. Il tasto edit (l'hash) si trova in un campo nascosto per indicare all'azione del controller quale post verrà modificato.

L'utente potrebbe modificare il valore di quel campo, ma avrebbe bisogno di altre chiavi, per cambiare altri post, vero?

Numero due:

Quando l'utente crea un post. Un cookie con il nome "post [id]" e l'md5-edit-hash come valore è impostato.

Quando viene richiesto un post, il controller controlla se l'hash di modifica in quel cookie (se esistente) è uguale a quello dei dati del post.

Non è sicuro se molte persone condividano il browser e i cookie non vengano reimpostati, non è vero? Ci sono altri problemi o soluzioni per renderlo più sicuro e migliore?

Grazie

Modifica:

Sto usando Laravel 3 - un Framwork PHP Sì, sto evitando l'autenticazione per motivi speciali;)

Potrei usare qualsiasi altro metodo di hash come SHA, se questo fosse un problema

L'hash viene generato da un timestamp + salt + postid + salt + authorname

    
posta Strernd 02.05.2013 - 00:44
fonte

2 risposte

2

Non vedo alcuna somiglianza con il controllo degli accessi in nessuno dei due scenari. Se non ti è stato già detto questo: smetti di usare md5! è vecchio, rotto e inefficiente, usa SHA-256 o solo un semplice nonce crittografico .

Nel primo scenario, se l'attaccante conosce questo magico "md5hash", sarà in grado di utilizzare sempre questa funzione di modifica. Come fai a impedire all'utente di ottenere questo hash? Come viene generato questo hash?

Lo scenario 2 sembra ancora meno sicuro, è banale inviare un post arbitrario e una variabile del cookie:

curl http://some_vulnerable_site.com/edit  --data "post[id]=1&hash=somevalue" --cookie "hash=somevalue"

Tutti i valori di intestazione GET, POST, COOKIE e HTTP sono sotto il controllo degli hacker. Un cookie deve contenere un ID di sessione, che fa riferimento allo stato di tale utente (un id utente), che può essere utilizzato per imporre il controllo dell'accesso ai dati.

Se vuoi saperne di più sulla sicurezza, assicurati di leggere OWASP top 10 . In termini di questo post, dovresti leggere: OWASP A3- Autenticazione interrotta e gestione delle sessioni .

    
risposta data 02.05.2013 - 01:51
fonte
1

Stai implicando la sicurezza per oscurità. Questo è un numero casuale grande che non potrebbe essere facilmente indovinato, e potrebbe richiedere del tempo alla forza bruta attraverso. Tuttavia, dal momento che si esegue l'hashing di un valore, il valore md5 diventa più prevedibile, forse legato ad alcune variabili conosciute. La casualità aumentata è migliore, ma manca il punto.

Questi tipi di valori vengono talvolta utilizzati per le reimpostazioni e-mail, i ticket di supporto, ecc. Se utilizzati in questo modo, dovrebbero essere limitati nel tempo o per l'accesso di sola lettura. Se stai andando su HTTPS, sarebbe più difficile, ma non improbabile che un utente malintenzionato ottenga questo valore magico (MiTM, attacco di loca, attacchi di predizione, ecc.).

Se non si desidera implementare un sistema di autenticazione completo, è possibile prendere in considerazione un hash casuale + un tipo di pin per post. Se il pin non si basa sull'hash, allora questo è in qualche modo una password per pagina / modifica. Tuttavia, hai ancora molte considerazioni e ti consiglierei di non creare il tuo sistema di autenticazione. Se lo fai male, potresti finire per esporre le credenziali o renderlo facilmente aggirabile.

Solo perché hai l'autenticazione non significa che devi fare una verifica via email, ecc. Sembra che tu sia preoccupato che i tuoi utenti non vogliano essere rintracciati o fare lo sforzo di configurare un account, e che se dovevano passare attraverso tutta l'autenticazione, avrebbero semplicemente usato un altro servizio. Puoi fare l'autenticazione come fanno su notizie sugli hacker , dove devi solo creare un account con una password e non è legato all'email.

A lungo termine, consiglierei di aumentare la proposta di valore del tuo sito Web in modo che gli utenti vogliano utilizzare un'autenticazione reale. Se si tratta di una questione di privacy, permetti loro di utilizzare account email o account email. Anche senza account, è banale monitorare i singoli utenti su un sito web.

    
risposta data 03.05.2013 - 19:20
fonte

Leggi altre domande sui tag