Sono sufficienti le sessioni per proteggere un'app Web

1

Immagina questo scenario:

  1. Il record SQL viene creato per l'utente
  2. ID record è memorizzato nella sessione
  3. Il record SQL può essere aggiornato dove ID sessione = ID SQL
  4. l'utente può visualizzare i dati nel record SQL dove ID sessione = ID SQL

Semplicemente no?!

Ad ogni modo, immagina che l'utente A (senza intenzioni malevole) possa visualizzare i dati dell'utente B.

Come diavolo potrebbe accadere?

    
posta user91107 04.11.2015 - 19:32
fonte

1 risposta

1

Se ti capisco bene ... Immagina di spiare i tuoi meccanismi interni Javascript per un po '. Immagina di essere in grado di cercare quanto segue:

  1. DeleteUserRecord()
  2. UpdateUserRecord()

E in ciascuno, stai abbinando questi ID alla chiave primaria nel database. Ad esempio, il tuo codice lo esclude: DELETE [record] FROM [table] WHERE [id] = '1234' , e il tuo Javascript è simile al seguente: DeleteUser(1234) . Cosa succede se lo cambio in 1 ? Cosa succede se elimino ogni singolo utente? Cosa succede se elimini il primo utente, che potrebbe presumibilmente essere il admin ?

O se potessi aggiornare il record di un singolo utente, ma cambio l'ID in 1 e make myself the admin ? UpdateUser(1) anziché UpdateUser(1234)

Sembra che il tuo codice possa essere vulnerabile a un riferimento diretto all'oggetto exploit.

Tutto quello che devo fare è manomettere la tua richiesta javascript e sei Teh PwNz0rEd. Prova leggendo questa discussione per una spiegazione migliore.

    
risposta data 04.11.2015 - 19:48
fonte

Leggi altre domande sui tag