Considerazioni sulla protezione con metadati

Quando si utilizzano le funzionalità dei metadati in Windows Communication Foundation (WCF), considerare le implicazioni di protezione della pubblicazione, del recupero e dell'utilizzo dei metadati del servizio.

Quando pubblicare metadati

I servizi WCF non pubblicano metadati per impostazione predefinita. Per pubblicare metadati per un servizio WCF, è necessario attivare esplicitamente la pubblicazione dei metadati aggiungendo endpoint dei metadati al servizio (vedere Pubblicazione di metadati). Se si lascia disattivata la pubblicazione dei metadati, si riduce la superficie di attacco del servizio e il rischio di diffusione non intenzionale di informazioni. Non tutti i servizi devono pubblicare metadati. Se non è necessario pubblicare metadati, considerare l'ipotesi di lasciare la funzione disattivata. Si noti che è comunque possibile generare metadati e codice client direttamente dagli assembly del servizio utilizzando ServiceModel Metadata Utility Tool (Svcutil.exe). Per ulteriori informazioni sull'utilizzo di Svcutil.exe per esportare metadati, vedere Procedura: utilizzare Svcutil.exe per esportare metadati dal codice del servizio compilato.

Pubblicazione di metadati tramite un'associazione sicura

Le associazioni di metadati predefinite fornite da WCF non sono protette e consentono l'accesso anonimo ai metadati. I metadati di servizio pubblicati da un servizio WCF contengono una descrizione dettagliata del servizio e potrebbero contenere, in modo intenzionale o non intenzionale, informazioni riservate. I metadati del servizio possono, ad esempio, contenere informazioni su operazioni dell'infrastruttura non destinate ad essere trasmesse pubblicamente. Per proteggere metadati del servizio dall'accesso non autorizzato, è possibile utilizzare un'associazione protetta per l'endpoint dei metadati. Gli endpoint dei metadati rispondono alle richieste HTTP/GET che possono utilizzare SSL (Secure Sockets Layer) per proteggere i metadati. Per ulteriori informazioni, vedere Procedura: proteggere endpoint dei metadati.

La protezione degli endpoint dei metadati offre inoltre ai richiedenti un modo sicuro per recuperare i metadati del servizio, senza rischi di manomissioni o spoofing.

Utilizzo dei soli metadati attendibili

È possibile utilizzare metadati del servizio per costruire automaticamente i componenti runtime necessari per chiamare il servizio. È inoltre possibile utilizzare i metadati in fase di progettazione, per sviluppare un'applicazione client, o in fase di esecuzione, per aggiornare dinamicamente l'associazione utilizzata da un client per chiamare un servizio.

I metadati del servizio possono essere manomessi o sottoposti a spoofing quando vengono recuperati in modo non protetto. I metadati manomessi possono reindirizzare il client a un servizio dannoso, contenere impostazioni di protezione compromesse o strutture XML dannose. I documenti di metadati possono essere di grandi dimensioni e vengono spesso salvati nel file system. Per evitare manomissioni e spoofing, utilizzare un'associazione protetta per richiedere i metadati del servizio quando diventano disponibili.

Utilizzo di tecniche sicure per l'elaborazione dei metadati

I metadati del servizio vengono spesso recuperati da un servizio su una rete utilizzando protocolli standardizzati, ad esempio WS-MetadataExchange (MEX). Molti formati dei metadati includono meccanismi di riferimento per puntare a ulteriori metadati. Il tipo MetadataExchangeClient elabora automaticamente i riferimenti in documenti WSDL (Web Services Description Language), schemi XML e documenti MEX. La dimensione dell'oggetto MetadataSet creato dai metadati recuperati è direttamente proporzionale al valore di MaximumResolvedReferences per l'istanza di MetadataExchangeClient utilizzata e al valore di MaxReceivedMessageSize per l'associazione utilizzata dall'istanza di MetadataExchangeClient in questione. Impostare queste quote sui valori appropriati, in base alle necessità dello scenario.

In WCF, i metadati del servizio vengono elaborati come XML. Quando si elaborano documenti XML, le applicazioni devono proteggersi da strutture XML dannose. Quando si elaborano documenti XML, utilizzare XmlDictionaryReader con le quote appropriate, impostare inoltre la proprietà ProhibitDtd sull'oggetto XmlReaderSettings per l'istanza di XmlReader su true.

Il sistema dei metadati in WCF è estensibile e le estensioni dei metadati possono essere registrate nel file di configurazione dell'applicazione (vedere Estensione del sistema di metadati). Le estensioni dei metadati possono eseguire codice arbitrario, pertanto è necessario proteggere il file di configurazione dell'applicazione con elenchi di controllo di accesso (ACL) appropriati e registrare solo le implementazioni delle estensioni dei metadati attendibili.

Convalida dei client generati

Quando si genera codice client dai metadati recuperati da un'origine non attendibile, convalidare il codice client generato per verificare che il client generato sia conforme ai criteri di protezione dell'applicazione client. È possibile utilizzare un comportamento di convalida per controllare le impostazioni sull'associazione client o controllare visivamente il codice generato dagli strumenti. Per un esempio di come implementare un client che convalidi i comportamenti, vedere Client Validation.

Protezione dei file di configurazione dell'applicazione

Il file di configurazione dell'applicazione di un servizio può controllare come e se i metadati vengono pubblicati. È buona norma proteggere il file di configurazione dell'applicazione con elenchi di controllo di accesso (ACL) appropriati, per assicurare che l'autore di un attacco non possa modificare tali impostazioni.

Vedere anche

Attività

Procedura: proteggere endpoint dei metadati

Altre risorse

Funzionalità di protezione di Windows Communication Foundation