Delen via


Beveiligingsproblemen en nuttige tips voor tracering

In dit onderwerp wordt beschreven hoe u gevoelige informatie kunt beschermen tegen beschikbaar worden gesteld, evenals nuttige tips bij het gebruik van WebHost.

Een aangepaste traceringslistener gebruiken met WebHost

Als u uw eigen traceringslistener schrijft, moet u zich bewust zijn van de mogelijkheid dat traceringen verloren gaan in het geval van een webgehoste service. Wanneer WebHost wordt gerecycled, wordt het liveproces afgesloten terwijl een duplicaat het overneemt. De twee processen moeten echter nog enige tijd toegang hebben tot dezelfde resource, wat afhankelijk is van het type listener. In dit geval maakt XmlWriterTraceListener een nieuw traceringsbestand voor het tweede proces; Hoewel Windows-gebeurtenistracering meerdere processen binnen dezelfde sessie beheert en toegang verleent tot hetzelfde bestand. Als uw eigen listener geen vergelijkbare functionaliteit biedt, kunnen traceringen verloren gaan wanneer het bestand is vergrendeld door de twee processen.

U moet er ook rekening mee houden dat een aangepaste traceringslistener traceringen en berichten op de kabel kan verzenden, bijvoorbeeld naar een externe database. Als applicatie-implementator moet u aangepaste listeners configureren met de juiste toegangscontrole. U moet ook beveiligingsbeheer toepassen op persoonlijke gegevens die op de externe locatie beschikbaar kunnen worden gesteld.

Logboekregistratie van gevoelige informatie

Traceringen bevatten berichtkoppen wanneer een bericht binnen het bereik valt. Wanneer tracering is ingeschakeld, kunnen persoonlijke gegevens in toepassingsspecifieke headers, zoals een querystring, en in hoofdtekstinformatie, zoals een creditcardnummer, zichtbaar worden in de logbestanden. De toepassings deployer is verantwoordelijk voor het afdwingen van toegangsbeheer voor de configuratie- en traceringsbestanden. Als u niet wilt dat dit soort informatie zichtbaar is, moet u tracering uitschakelen of een deel van de gegevens uitfilteren als u de traceringslogboeken wilt delen.

Met de volgende tips kunt u voorkomen dat de inhoud van een traceringsbestand onbedoeld wordt weergegeven:

  • Zorg ervoor dat de logboekbestanden worden beveiligd door toegangsbeheerlijsten (ACL), zowel in WebHost- als self-hostscenario's.

  • Kies een bestandsextensie die niet eenvoudig kan worden verwerkt met behulp van een webaanvraag. De bestandsextensie .xml is bijvoorbeeld geen veilige keuze. U kunt de IIS-beheerhandleiding controleren om een lijst met extensies te bekijken die kunnen worden geleverd.

  • Geef een absoluut pad op voor de locatie van het logboekbestand, die zich buiten de openbare map WebHost vroot moet bevinden om te voorkomen dat het wordt geopend door een externe partij met behulp van een webbrowser.

Standaard worden sleutels en persoonlijke gegevens (PII) zoals gebruikersnaam en wachtwoord niet vastgelegd in traceringen en vastgelegde berichten. Een computerbeheerder kan echter het kenmerk enableLoggingKnownPII in het machineSettings element van het Machine.config-bestand gebruiken om toe te staan dat toepassingen die op de computer worden uitgevoerd, als volgt bekende persoonsgegevens registreren:

<configuration>
   <system.ServiceModel>
      <machineSettings enableLoggingKnownPii="Boolean"/>
   </system.ServiceModel>
</configuration>

Een toepassingsi deployer kan vervolgens het kenmerk logKnownPii in het App.config- of Web.config-bestand gebruiken om PII-logboekregistratie als volgt in te schakelen:

<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>

Alleen wanneer beide instellingen zijn true is PII-logboekregistratie ingeschakeld. De combinatie van twee switches maakt het mogelijk om bekende PII voor elke toepassing te registreren.

Houd er rekening mee dat als u twee of meer aangepaste bronnen opgeeft in een configuratiebestand, alleen de kenmerken van de eerste bron worden gelezen. De anderen worden genegeerd. Dit betekent dat PII voor de volgende App.configniet wordt geregistreerd voor beide bronnen, ook al is PII-logboekregistratie expliciet ingeschakeld voor de tweede bron.

<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="xml" />
         </listeners>
      </source>
  </sources>
</system.diagnostics>

Als het <machineSettings enableLoggingKnownPii="Boolean"/> element buiten het Machine.config-bestand bestaat, genereert het systeem een ConfigurationErrorsException.

De wijzigingen zijn alleen van kracht wanneer de toepassing wordt gestart of opnieuw wordt gestart. Een gebeurtenis wordt geregistreerd bij het opstarten wanneer beide kenmerken zijn ingesteld op true. Een gebeurtenis wordt ook geregistreerd als logKnownPii is ingesteld op true, maar enableLoggingKnownPii is false.

Zie het voorbeeld van de PII-beveiligingsvergrendeling voor meer informatie over PII-logboekregistratie.

De machinebeheerder en toepassings-deployer moeten uiterst voorzichtig zijn bij het gebruik van deze twee switches. Als PII-logboekregistratie is ingeschakeld, worden beveiligingssleutels en PII vastgelegd. Als deze optie is uitgeschakeld, worden gevoelige en toepassingsspecifieke gegevens nog steeds geregistreerd in berichtkoppen en -lichamen. Zie Gebruikersprivacyvoor een uitgebreidere bespreking van privacy en het beschermen van PII tegen blootstellen.

Daarnaast wordt het IP-adres van de afzender van het bericht eenmaal per verbinding geregistreerd voor verbindingsgeoriënteerde transporten en één keer per bericht dat anders wordt verzonden. Dit gebeurt zonder toestemming van de afzender. Deze logboekregistratie vindt echter alleen plaats op informatie- of uitgebreide traceringsniveaus, die niet de standaard- of aanbevolen traceringsniveaus in de productieomgeving zijn, met uitzondering van live debugging.

Zie ook