Please enable JavaScript.
Coggle requires JavaScript to display documents.
AGGIRARE I CONTROLLI CLIENT-SIDE - Coggle Diagram
AGGIRARE I CONTROLLI CLIENT-SIDE
1. CONCETTO FONDAMENTALE
I controlli client-side sono controlli effettuati dal browser dell'utente, ad esempio tramite:
HTML, javascript, campi hidden,disabled, cookie, parametri URL, header HTTP
Problema principale
Il client è sotto il controllo dell'utente.
Quindi l'utente può modificare la richiesta prima che arrivi al server.
Un controllo effettuato solo lato client non è una misura di sicurezza.
I controlli client-side servono soprattutto per migliorare la UX,
mentre la sicurezza deve essere verificata lato server.
2. ESEMPI DI CONTROLLI AGGIRABILI
Hidden
Un campo hidden non è visibile nella pagina, ma il suo valore può essere modificato.
Esempio: un prezzo nascosto nel form può essere alterato dall'utente.
→ Il server deve recuperare il prezzo corretto dal database.
HTML e JavaScript
Attributi come:
min, max, maxlengthm requiredm pattern
e i controlli JavaScript possono essere modificati o bypassati.
Il browser non è un ambiente affidabile per la sicurezza.
Disabled
Un campo disabled può essere riattivato o aggiunto direttamente nella richiesta.
Quindi:
disabilitare un campo nell'interfaccia non significa disabilitare la funzionalità sul server.
COOKIE, URL E HEADER HTTP
Anche questi dati possono essere modificati dal client.
Cookie
Esempio:
user_role=standard
potrebbe essere modificato in:
user_role=admin
→ Il server non deve fidarsi del ruolo ricevuto dal cookie.
Parametri URL
Esempio:
/account?user_id=123
L'utente può modificare l'ID.
Se il server non verifica i permessi, può verificarsi un:
IDOR – Insecure Direct Object Reference
Header HTTP
Anche header come Referer possono essere falsificati.
Quindi non possono essere utilizzati da soli come meccanismi di sicurezza.
4. PRINCIPIO GENERALE: IL CLIENT NON È AFFIDABILE
L'attaccante può modificare:
parametri URL e POST, cookiem header,campi HTML, Javascript, body richieste
Quindi:
nessun dato proveniente dal client deve essere considerato automaticamente affidabile.
Non importa se il dato è:
hidden, disabled, offuscato, dentro un cookie o controllato da JavaScript.
5. OFFUSCAMENTO
L'offuscamento consiste nel rendere un dato difficile da comprendere.
Esempio:
6.5 → s5injk88m
Può essere realizzato tramite:
codifica
cifratura
hashing
algoritmi personalizzati
Problema
Nascondere un dato non significa renderlo sicuro.
L'attaccante può analizzare il funzionamento dell'applicazione oppure riutilizzare valori già validi.