Application Security Input Validation: convalida delle variabili di ambiente e dei file di configurazione

2

Sto guardando un video di formazione chiamato "Creazione di un codice J2EE sicuro". Il video fa questa affermazione:

Perform all validation in a secure context on the server. Do not rely on client-side validation as a security mechanism. Validate all application input, including user input, API return values, environment variables, configuration files, and other applications.

Convalidare le variabili di ambiente e i file di configurazione è un nuovo concetto per me. Puoi fornire una panoramica di alto livello su come potrebbe essere?

I miei pensieri sono di trattare sia le variabili di ambiente che i file di configurazione simili all'input dell'utente. Vorrei:

  • Sanitizza,
  • Durata del test (min. e max.),
  • Intervallo di prova,
  • Formato di prova
  • Tipo di test (int, decimal, char, ecc.)

Suppongo che i file di configurazione contengano coppie chiave / valore. Non sono sicuro di come gestire un file di configurazione che potrebbe contenere qualsiasi altro formato.

Sono sulla buona strada?

    
posta medokr 30.06.2014 - 15:01
fonte

1 risposta

3

(probabilmente dovrebbe essere un commento ma sono un po 'prolisso)

Validating environment variables and config files is a new concept to me

All'inizio questo mi sembrò strano - poi ricordai che non tutte le applicazioni di alJ2EE giravano in un ambiente controllato. È una questione di fiducia. Mi occupo di applicazioni web in cui ripongo più fiducia nella configurazione dell'ambiente piuttosto che nel codice stesso: qui questa affermazione non ha senso. OTOH se scrivessi un'app da eseguire su PC desktop, sarei un po 'sospettoso di qualsiasi cosa venga prelevata dal sistema locale.

I would....sanitize it

No.

Convalida gli input (ad esempio, accettali o rifiutali nella loro interezza)

Sanitize output (convertili in una rappresentazione appropriata nel mezzo in cui stanno andando).

L'igienizzazione degli input è una pessima idea. Non sai dove vanno i dati finché il tuo codice non lo guarda. Se può arrivare nel tuo codice in uno stato in cui può fare qualcosa di inaspettato (iniezione di codice, buffer overflow, ecc.) È troppo tardi per risolvere il problema.

    
risposta data 30.06.2014 - 18:17
fonte

Leggi altre domande sui tag