Come dovrei interpretare, "i controlli di accesso sul livello di presentazione sono applicati sul lato server?

0

Questa domanda riguarda lo standard OWASP (le regole di controllo dell'accesso sul livello di presentazione vengono applicate sul lato server - OWASP ASVS 3.0 - 4.9)

Sto cercando di capire profondamente cosa significa in modo che io possa comunicarlo a un collega meno tecnico.

Ho preso in considerazione un esempio: se il controllo non è applicato, una pagina web che non consente a un utente di cambiare una password ma consente di inviare una stringa php che imporrà la funzionalità della password di modifica mentre la pagina è codificata per cambiare le password.

Penso che sia un po 'difficile da capire e non penso che sia l'esempio migliore.

Qualche suggerimento su come interpretarlo al meglio? Qualche esempio di non aderenza a questo standard?

    
posta ellefc 31.10.2018 - 12:22
fonte

2 risposte

1

Semplicemente reiterando la regola più basilare della sicurezza di Internet: non fidarsi mai di nulla da parte del client (ovvero livello di presentazione, ovvero browser, ecc.). Poiché il "livello di presentazione" opera su un sistema esterno (cioè il computer della persona che sta navigando sul tuo sito web) il server / sito web non ha alcun controllo su ciò che accade laggiù, e quindi non può fidarsi di nulla che dice. Di conseguenza, deve ricontrollare tutto da solo. Un esempio dovrebbe aiutare.

Immagina di avere un portale per gli utenti, e c'è un portale di amministrazione che è solo per gli utenti a cui è stata data l'autorizzazione. Il livello di presentazione "impone" questa restrizione di accesso semplicemente non mostrando un collegamento alla sezione di amministrazione se non si è un amministratore. Questo, di per sé, non è un controllo di accesso sufficiente. Il server stesso deve applicare quel controllo di accesso e negare l'accesso al sistema di amministrazione a chiunque non sia un amministratore. In caso contrario, qualsiasi utente può accedere al sistema di amministrazione semplicemente digitando la sua posizione nel proprio browser e ottenere automaticamente l'accesso al sistema di amministrazione. Questo è un semplice esempio, ma anche il più comune:

  • Livello di presentazione: non mostrare collegamenti ad aree che l'utente non ha accesso a
  • Lato server: rifiuta una richiesta a un'area che l'utente non ha accesso a

Se fai solo il primo hai un problema.

Quindi questo è il breve riassunto. Il server non può fidarsi di nulla che il browser dice perché un utente malintenzionato ha il pieno controllo su ciò che dice il browser (in realtà potrebbe non utilizzare nemmeno un browser, ma potrebbe semplicemente fingere di esserlo). Pertanto, il server deve verificare tutto da solo.

    
risposta data 31.10.2018 - 12:42
fonte
0

Un esempio potrebbe essere il punto in cui il server invia più dati al client di quanto il client sia destinato a mostrare all'utente. Poiché il client può essere manipolato in modi che il server non può, è necessario presumere che qualsiasi cosa inviata al client possa essere vista dall'utente.

Diciamo che John Smith va su Amazon e fa clic su "I miei ordini". Se il server ha inviato una risposta JSON contenente ordini per ogni utente con il cognome "Smith", e il javascript in esecuzione nel browser web era responsabile del filtro e mostrava solo gli articoli di "John", allora questo è un caso in cui il livello di presentazione viene applicato sul lato client. Il problema di sicurezza è che l'utente può manipolare il software client (o alterare il javascript o utilizzare un proxy MITM) per vedere tutti i dati, e non solo quello a cui era destinato il codice di presentazione del client rivelare.

Ho visto piccoli esempi nel corso degli anni ma nessuno abbastanza grande da essere documentato come riferimento. Questo è il tipo di errore più comune in pacchetti software di piccole dimensioni e meno professionali.

    
risposta data 31.10.2018 - 12:42
fonte

Leggi altre domande sui tag