Sicurezza del servizio Web

1

Attualmente stiamo progettando un servizio Web che restituisce un messaggio JSON formattato. Di seguito sono riportate le implementazioni pianificate per la sicurezza del servizio:

  • Una certificazione SSL al servizio per la sicurezza delle comunicazioni su Internet.

    Transport Layer Security (TLS) and its predecessor, Secure Sockets Layer (SSL), are cryptographic protocols that provide communication security over the Internet. The server sends back its identification in the form of a digital certificate. The certificate usually contains the server name, the trusted certificate authority (CA) and the server's public encryption key. - wikipedia.org

  • Crittografia di dati sensibili utilizzando hash e salt.

    Encryption is in Symmetric (Rijndael) Key - Rijndael can be specified with block and key sizes in any multiple of 32 bits, with a minimum of 128 bits. The blocksize has a maximum of 256 bits, but the keysize has no theoretical maximum. - wikipedia.org

  • Autenticazione client utilizzando nome utente e convalida password personalizzati

    WCF allows for custom user name and password authentication schemes, also known as validators. - msdn.microsoft.com

Il servizio verrà utilizzato da diversi client e i dati dovrebbero essere protetti. I seguenti sono i possibili rischi [1] :

  • Autenticazione e gestione delle sessioni interrotte - Le funzioni dell'applicazione relative all'autenticazione e alla gestione delle sessioni spesso non vengono implementate correttamente, consentendo agli autori di attacchi di compromettere password, chiavi, token di sessione o sfruttare altri difetti di implementazione per assumere le identità degli altri utenti.
  • Riferimenti agli oggetti diretti non sicuri : un riferimento ad oggetti diretti si verifica quando uno sviluppatore espone un riferimento a un oggetto di implementazione interno, ad esempio un file, una directory o una chiave di database. Senza un controllo di accesso o altra protezione, gli autori di attacchi possono manipolare questi riferimenti per accedere a dati non autorizzati.
  • Configurazione errata della sicurezza : una buona protezione richiede che sia definita e distribuita una configurazione sicura per l'applicazione, i framework, il server delle applicazioni, il server Web, il server di database e la piattaforma. Tutte queste impostazioni devono essere definite, implementate e gestite in quanto non vengono fornite con impostazioni predefinite sicure. Ciò include l'aggiornamento di tutti i software, incluse tutte le librerie di codici utilizzate dall'applicazione.
  • Archiviazione crittografica non sicura : molte applicazioni Web non proteggono adeguatamente dati sensibili, come carte di credito, SSN e credenziali di autenticazione, con crittografia o hashing appropriati. Gli aggressori possono rubare o modificare tali dati debolmente protetti per compiere furti d'identità, frodi con carte di credito o altri crimini.
  • Protezione livello di trasporto insufficiente : le applicazioni spesso non riescono a autenticare, crittografare e proteggere la riservatezza e l'integrità del traffico di rete sensibile. Quando lo fanno, a volte supportano algoritmi deboli, utilizzano certificati scaduti o non validi o non li usano correttamente.

Se un attacco è riuscito a penetrare nel nostro servizio, una grande perdita cadrà nella nostra azienda. I seguenti sono i possibili risultati di un attacco riuscito:

  • Qualsiasi dato manipolato in modo malevolo potrebbe causare una grande perdita nei profitti della nostra azienda.
  • L'accesso ai client non autenticati consente loro di modificare e aggiungere dati dannosi e / o di rallentare o interrompere il servizio, rendendo il servizio inaccessibile.

La nostra implementazione pianificata per la sicurezza del servizio è sufficiente per prevenire questi rischi? Quali altri problemi di sicurezza dobbiamo prendere in considerazione?

[1] Il nome e la definizione del rischio si basano su Rischi per la sicurezza delle applicazioni OWASP .

    
posta John Isaiah Carmona 25.04.2012 - 08:51
fonte

1 risposta

5

Ti suggerisco di approfondire ulteriormente su quale sia il modello di minaccia che potrebbe causare una grande perdita. In generale, mi chiedo se il web sia la tecnologia giusta per implementarlo: i problemi di sicurezza del web sono all'ordine del giorno, quindi se un qualsiasi errore di sicurezza potrebbe davvero causare una grande perdita di profitti, forse dovresti ripensare all'intera iniziativa. Ma forse puoi spiegare di più sui rischi con la massima priorità nelle tue impostazioni. Immagino che ci sia un server e che ci sia un client. Ci sono più minacce. Potremmo preoccuparci di un client malevolo che riesce a modificare la copia autorevole dei dati sul server. Oppure potremmo preoccuparci di un utente malintenzionato (forse un client malintenzionato) in grado di manomettere i dati visualizzati da altri client. Oppure potremmo preoccuparci di un client malintenzionato che è in grado di accedere ai dati riservati, senza autorizzazione. Oppure potremmo preoccuparci delle irruzioni al server. Quali sono i rischi più gravi nella tua impostazione?

Direi anche che sto avendo difficoltà a capire qual è il tuo piano preciso. Non ho familiarità con cosa sia una "certificazione SSL". Vuoi dire che usi SSL per tutte le connessioni ai dati JSON? Inoltre, non si dice come viene eseguita la crittografia (i dettagli sono importanti) o perché è necessaria la crittografia in primo luogo. Inoltre, non si dice se esiste un controllo di accesso e, in caso affermativo, come viene fatto (come vengono eseguiti l'autenticazione e l'autenticazione?). Quindi non c'è abbastanza per rivedere il sistema come la domanda al momento.

Consentitemi di iniziare con un consiglio generale: dato il potenziale per una grande perdita di profitti in caso di problemi di sicurezza, è necessario assumere un professionista della sicurezza con esperienza (magari come consulente). Offri loro pieno accesso al tuo sistema e chiedi loro di verificare la sicurezza del tuo sistema. Richiedi analisi del rischio architettonico (modellazione delle minacce), analisi del codice sorgente (ad es. Per vulnerabilità della sicurezza) e consigli su come proteggersi al meglio. Se sono in gioco grandi profitti, non dovresti fare affidamento su questo sito web.

Senza dettagli, è difficile fornire consigli specifici. Ma farò alcuni suggerimenti:

  • Distribuire un server dedicato per fornire l'accesso a questi dati e utilizzarlo solo a tale scopo. Bloccalo saldamente (ci sono molte guide su questo sito su come indurire un server).

  • Utilizza SSL in tutto il sito: ad esempio, utilizza solo HTTPS, non HTTP. Non usare HTTP per nulla; utilizzare solo HTTPS. Abilita HSTS. Imposta il flag di sicurezza su tutti i cookie.

  • Pensa attentamente a come autenticerai gli utenti.

  • Adotta buone pratiche di sicurezza, come l'integrazione della sicurezza nel ciclo di vita dello sviluppo del software. Microsoft ha alcune risorse eccellenti. Cerca su questo sito e troverai altro (Microsoft SDL, BSIMM, ecc.).

Si noti che probabilmente non saranno sufficienti: sarebbe necessario comprendere più dettagliatamente gli obiettivi e i requisiti del proprio servizio Web per fornire un elenco più completo. Questo è solo un punto di partenza.

    
risposta data 25.04.2012 - 09:17
fonte

Leggi altre domande sui tag