Condividi tramite


Problemi di sicurezza per la registrazione dei messaggi

In questo argomento viene descritto come proteggere i dati sensibili dall'esposizione nei log dei messaggi, nonché dagli eventi generati dalla registrazione dei messaggi.

Problemi di sicurezza

Registrazione di informazioni riservate

Windows Communication Foundation (WCF) non modifica i dati nelle intestazioni specifiche e nel corpo dell'applicazione. WCF non tiene traccia delle informazioni personali né nelle intestazioni specifiche dell'applicazione né nei dati del corpo.

Quando la registrazione dei messaggi è abilitata, le informazioni personali nelle intestazioni specifiche dell'applicazione, ad esempio una stringa di query; e informazioni sul corpo, ad esempio un numero di carta di credito, possono diventare visibili nei log. Il deployer dell'applicazione è responsabile dell'applicazione del controllo di accesso nei file di configurazione e di log. Se non si vuole che questo tipo di informazioni sia visibile, è consigliabile disabilitare la registrazione o escludere parte dei dati se si desidera condividere i log.

I suggerimenti seguenti consentono di evitare che il contenuto di un file di log venga esposto involontariamente:

  • Assicurarsi che i file di log siano protetti dagli elenchi di controllo di accesso (ACL) sia negli scenari host Web che self-host.

  • Scegliere un'estensione di file che non può essere facilmente servita usando una richiesta Web. Ad esempio, l'estensione di file .xml non è una scelta sicura. È possibile controllare la guida all'amministrazione di Internet Information Services (IIS) per visualizzare un elenco di estensioni che possono essere gestite.

  • Specificare un percorso assoluto per il percorso del file di log, che deve essere esterno alla directory pubblica vroot dell'host Web per impedire l'accesso da parte di un'entità esterna tramite un Web browser.

Per impostazione predefinita, le chiavi e le informazioni personali identificabili (come nome utente e password) non vengono registrate nei log delle tracce e dei messaggi. Un amministratore del computer, tuttavia, può usare l'attributo enableLoggingKnownPII nell'elemento machineSettings del file Machine.config per consentire alle applicazioni in esecuzione nel computer di registrare informazioni personali note. La configurazione seguente illustra come eseguire questa operazione:

<configuration>
   <system.serviceModel>
      <machineSettings enableLoggingKnownPii="true"/>
   </system.serviceModel>
</configuration>

Un deployer dell'applicazione può quindi usare l'attributo logKnownPii nel file App.config o Web.config per abilitare la registrazione delle informazioni personali come indicato di seguito:

<system.diagnostics>
  <sources>
      <source name="System.ServiceModel.MessageLogging"
        logKnownPii="true">
        <listeners>
                 <add name="messages"
                 type="System.Diagnostics.XmlWriterTraceListener"
                 initializeData="c:\logs\messages.svclog" />
          </listeners>
      </source>
    </sources>
</system.diagnostics>

Solo quando entrambe le impostazioni sono true è abilitata la registrazione delle informazioni personali. La combinazione di due opzioni consente la flessibilità di registrare informazioni personali note per ogni applicazione.

Importante

In .NET Framework 4.6.1 i flag logEntireMessage e logKnownPii devono essere impostati anche su true nel file Web.config o nel file App.config per abilitare la registrazione delle informazioni personali, come illustrato nell'esempio seguente <system.serviceModel><messageLogging logEntireMessage="true" logKnownPii="true" ….

Tenere presente che se si specificano due o più origini personalizzate in un file di configurazione, vengono letti solo gli attributi della prima origine. Gli altri vengono ignorati. Ciò significa che, per il seguente App.configfile , le informazioni personali non vengono registrate per entrambe le origini anche se la registrazione delle informazioni personali è abilitata in modo esplicito per la seconda origine.

<system.diagnostics>
   <sources>
      <source name="System.ServiceModel.MessageLogging"
              logKnownPii="false">
              <listeners>
                 <add name="messages"
                      type="System.Diagnostics.XmlWriterTraceListener"
                      initializeData="c:\logs\messages.svclog" />
              </listeners>
            </source>
      <source name="System.ServiceModel"
              logKnownPii="true">
              <listeners>
                 <add name="traces"
                      type="System.Diagnostics.XmlWriterTraceListener"
                      initializeData="c:\logs\traces.svclog" />
              </listeners>
      </source>
   </sources>
</system.diagnostics>

Se l'elemento <machineSettings enableLoggingKnownPii="Boolean"/> esiste all'esterno del file Machine.config, il sistema genera un ConfigurationErrorsException.

Le modifiche sono valide solo all'avvio o al riavvio dell'applicazione. Un evento viene registrato all'avvio quando entrambi gli attributi sono impostati su true. Viene registrato anche un evento se logKnownPii è impostato su true ma enableLoggingKnownPii è false.

L'amministratore del computer e lo strumento di distribuzione delle applicazioni devono prestare particolare attenzione quando si usano queste due opzioni. Se la registrazione delle informazioni personali è abilitata, vengono registrate le chiavi di sicurezza e le informazioni personali. Se è disabilitato, i dati sensibili e specifici dell'applicazione vengono comunque registrati nelle intestazioni e nei corpi dei messaggi. Per una discussione più approfondita sulla privacy e sulla protezione delle informazioni personali dall'esposizione, vedere Privacy dell'utente.

Cautela

Le informazioni personali (PII) non sono nascoste nei messaggi in formato non valido. Tali messaggi vengono registrati as-is senza alcuna modifica. Gli attributi menzionati in precedenza non hanno alcun effetto su questo.

Listener di traccia personalizzato

L'aggiunta di un listener di traccia personalizzato sulla sorgente di traccia della registrazione dei messaggi è un privilegio che deve essere limitato all'amministratore. Ciò è dovuto al fatto che i listener personalizzati dannosi possono essere configurati per l'invio remoto di messaggi, che comportano la divulgazione di informazioni riservate. Inoltre, se si configura un listener personalizzato per l'invio di messaggi in transito, ad esempio a un database remoto, è necessario applicare il controllo di accesso appropriato nei log dei messaggi nel computer remoto.

Eventi attivati dalla registrazione dei messaggi

Di seguito sono elencati tutti gli eventi generati dalla registrazione dei messaggi.

  • Registrazione messaggi: questo evento viene generato quando la registrazione dei messaggi è abilitata nella configurazione o tramite WMI. Il contenuto dell'evento è "La registrazione dei messaggi è stata attivata. Le informazioni sensibili possono essere registrate in testo non crittografato, anche se sono state crittografate sul filo, ad esempio i contenuti dei messaggi.

  • Registrazione messaggi disattivata: questo evento viene generato quando la registrazione dei messaggi viene disabilitata tramite WMI. Il contenuto dell'evento è "La registrazione dei messaggi è stata disattivata".

  • Registrazione dei PII Conosciuti Attivata: questo evento viene emesso quando la registrazione dei PII conosciuti è abilitata. Ciò si verifica quando l'attributo enableLoggingKnownPii nell'elemento machineSettings del file Machine.config è impostato su truee l'attributo logKnownPii dell'elemento source nel file App.config o Web.config è impostato su true.

  • Registrazione informazioni personali note non consentite: questo evento viene generato quando la registrazione delle informazioni personali note non è consentita. Ciò si verifica quando l'attributo logKnownPii dell'elemento source nel file App.config o Web.config è impostato su true, ma l'attributo enableLoggingKnownPii nell'elemento machineSettings del file Machine.config è impostato su false. Non viene generata alcuna eccezione.

Questi eventi possono essere visualizzati nello strumento Visualizzatore eventi fornito con Windows. Per ulteriori informazioni, vedere la registrazione degli eventi.

Vedere anche