AngularJS Funzione di sanitizzazione rispetto alla codifica di output lato server

2

Controllo principalmente le applicazioni Web e fornisco alle aziende contromisure e raccomandazioni di sicurezza. Attualmente, ho un problema con dare una raccomandazione corretta quando si tratta della funzione Sanitize di AngularJS contro la protezione XSS. Ho dei dubbi nel dire che va bene o raccomandare che la codifica dell'output sia applicata sul lato server.

Qualcuno può aiutarmi con questo problema o è in grado di chiarire la differenza?

    
posta sgres 01.02.2018 - 11:41
fonte

1 risposta

1

tl; dr: La codifica dovrebbe essere eseguita nel momento in cui i dati vengono utilizzati nel contesto - quando il codice sta componendo HTML, javascript, ecc. Da dati non attendibili - questo è vero sia che tu stia scrivendo sul server o sul client. A quel punto sai quali parti sono i dati e qual è il contesto di codifica. È necessario sfruttare il binding (ng-bind) in Angular per la codifica specifica del contesto. La funzione AngularJS Sanitize è utile quando è necessario "disinfettare" un hunk di HTML non attendibile.

Dettagli: È bene fare attenzione quando viene usato il termine "sanitizza", perché le diverse librerie lo usano in modo diverso - può significare validazione, canonicalizzazione, codifica semplice, analisi e codifica.

La funzione AngularJS Sanitize "sanifica" gli input analizzando l'HTML in token. Tutti i token sicuri (da una whitelist) vengono quindi serializzati su valori codificati correttamente. In questo modo si comporta in modo simile a il OWASP HTML Sanitizer Project e il precedente progetto OWASP Antisamy.

Vedere link per ulteriori informazioni sull'utilizzo della libreria.

Questo è un ottimo modo per codificare input non attendibili se non si ha il lusso di comporre HTML, javascript o URL dalle sue parti. Tuttavia:

  • L'analisi e la rimozione dei tag è più incline ad essere aggirata - Non conosco alcun problema corrente
  • Modifica l'HTML per rimuovere i tag non riconosciuti, che a volte possono essere fragili
  • Deve fare ipotesi sul fatto che il contenuto sottostante sia codificato
  • Il supporto per i tag sarà limitato alla lista bianca - tuttavia, puoi decorare il servizio $ sanitize per modificare l'elenco

Quindi dove puoi:

  • Codifica nel momento in cui i dati vengono utilizzati nel contesto, ad esempio utilizzando l'associazione.
  • Utilizza la funzione Sanitize se non la componi
  • Prova a sfruttare il CSP (Content Security Policy) come difesa in profondità
risposta data 03.02.2018 - 23:33
fonte

Leggi altre domande sui tag