A quali attacchi di sicurezza è aperto il mio semplice sistema di carrelli?

1

Sto mettendo insieme un sito semplice con un processo di checkout di base. Sto usando laravel 5.2. Quando un utente fa una visita, le applicazioni controllano se un cookie è stato inserito con un hash cookie - l'hash è lungo 70 caratteri. Se c'è un cookie, l'hash del carrello viene cercato nel database e, se trovato, estratto dall'utente. Se l'hash non esiste, il cookie viene eliminato.

Se non esiste alcun cookie, viene creato un nuovo carrello, memorizzato nel db, e l'hash è memorizzato in un cookie.

Un carrello contiene una matrice di cart products . Un carrello contiene un hash univoco in sé.

Carrello I prodotti vengono aggiunti al carrello tramite un percorso, che contiene l'ID del prodotto, e i prodotti vengono rimossi dal carrello da un percorso che contiene l'hash del carrello.

Attualmente si trova su un dominio non ssl.

Questa parte di base del sistema è aperta agli attacchi di cui dovrei preoccuparmi?

    
posta user3791372 19.08.2016 - 13:57
fonte

1 risposta

1

Come hanno sottolineato i commentatori, hai del lavoro essenziale da fare (spostare tutto su HTTPS, rendere i cookie sicuri e probabilmente anche HttpOnly, ecc.) e, se possibile, evitare di reinventare la ruota. Inoltre, sei a rischio di tutti i tipi di vulnerabilità di sicurezza delle applicazioni Web standard (cross-site scripting, cross-site request forgery, clickjacking, SSL stripping, ecc.); dovrai stare attento a questi.

Alcuni problemi specifici che mi saltano addosso durante la lettura della descrizione:

  • Iniezione SQL. Se stai cercando il valore del cookie in un database, questo è un ovvio vettore di iniezione. Utilizzare query parametrizzate / stored procedure, o quantomeno rendere molto sicuro che si convalida il contenuto del cookie prima di controllare il database (non fare affidamento sull'igienizzazione / fuga del cookie, meglio lasciarlo cadere sul pavimento se è anche formato leggermente in modo errato ).
  • Predizione dei token. Descrivi il valore del cookie come un hash (anche se non sono a conoscenza di alcuna funzione di hash con un digest di 70 caratteri anche in codifica esadecimale); cosa stai facendo? È qualcosa che un aggressore potrebbe essere in grado di prevedere, come una combinazione di valori costanti e forse un valore ID in aumento sequenziale o simili? Se due persone hanno le stesse cose nel carrello, i loro cookie hanno lo stesso valore? In caso contrario, cosa li distingue?
  • Fissazione della sessione / piantatura di cookie. Se i cookie vengono utilizzati per identificare i carrelli (piuttosto che gli utenti con metodi di pagamento), un utente malintenzionato potrebbe provare ad aggiungere elementi che l'autore dell'attacco sta vendendo ai carrelli di altre persone, calcolando quale hash (ad esempio) un carrello con 10 AttackerThings in esso è, e quindi mettendo quel cookie sul maggior numero possibile di utenti. Alcuni di loro potrebbero effettuare l'acquisto senza guardare da vicino cosa-tutto ciò che stanno acquistando, causandone la spesa eccessiva e dando l'extra (tramite il tuo negozio) all'attaccante.

Le app Web, sfortunatamente, sono davvero facili da sbagliare. Lingue come PHP facilitano lo sviluppo di un'applicazione web ma non aiutano a proteggerla (anzi, il linguaggio PHP è noto per tutte le app web insicure scritte da persone che pensano che l'apprendimento di PHP significhi che sanno tutto ciò di cui hanno bisogno su come scrivere web apps). Buon per te, pensa alla sicurezza a questo punto, ma hai bisogno di molto di più che avere la logica di business di base sicura.

    
risposta data 20.08.2016 - 07:15
fonte

Leggi altre domande sui tag