Säkerhetsproblem och användbara tips för spårning
Det här avsnittet beskriver hur du kan skydda känslig information från att exponeras, samt användbara tips när du använder WebHost.
Använda en anpassad spårningslyssnare med WebHost
Om du skriver en egen spårningslyssnare bör du vara medveten om att spårningar kan gå förlorade när det gäller en webbbaserad tjänst. När WebHost återanvänds stängs liveprocessen av medan en dubblett tar över. De två processerna måste dock fortfarande ha åtkomst till samma resurs under en tid, vilket är beroende av lyssnartypen. I det här fallet skapar , XmlWriterTraceListener
en ny spårningsfil för den andra processen, medan Windows-händelsespårning hanterar flera processer inom samma session och ger åtkomst till samma fil. Om din egen lyssnare inte tillhandahåller liknande funktioner kan spårningar gå förlorade när filen låses in av de två processerna.
Du bör också vara medveten om att en anpassad spårningslyssnare kan skicka spårningar och meddelanden på kabeln, till exempel till en fjärrdatabas. Som programdistribuerare bör du konfigurera anpassade lyssnare med lämplig åtkomstkontroll. Du bör också tillämpa säkerhetskontroll på all personlig information som kan exponeras på fjärrplatsen.
Loggning av känslig information
Spårningar innehåller meddelandehuvuden när ett meddelande finns i omfånget. När spårning är aktiverat, personlig information i programspecifika rubriker, till exempel en frågesträng; och brödtextinformation, till exempel ett kreditkortsnummer, kan visas i loggarna. Programdistributionsverktyget ansvarar för att framtvinga åtkomstkontroll för konfigurations- och spårningsfilerna. Om du inte vill att den här typen av information ska visas bör du inaktivera spårning eller filtrera bort en del av data om du vill dela spårningsloggarna.
Följande tips kan hjälpa dig att förhindra att innehållet i en spårningsfil exponeras oavsiktligt:
Kontrollera att loggfilerna skyddas av åtkomstkontrollistor (ACL) både i WebHost- och självvärdsscenarier.
Välj ett filnamnstillägg som inte enkelt kan hanteras med hjälp av en webbbegäran. Det .xml filnamnstillägget är till exempel inte ett säkert val. Du kan kontrollera IIS-administrationsguiden för att se en lista över tillägg som kan hanteras.
Ange en absolut sökväg för loggfilens plats, som ska ligga utanför den offentliga katalogen WebHost vroot för att förhindra att den nås av en extern part med hjälp av en webbläsare.
Som standard loggas inte nycklar och personligt identifierbar information (PII) som användarnamn och lösenord i spårningar och loggade meddelanden. En datoradministratör kan dock använda enableLoggingKnownPII
attributet i elementet machineSettings
i Filen Machine.config för att tillåta program som körs på datorn att logga känd personligt identifierbar information (PII) på följande sätt:
<configuration>
<system.ServiceModel>
<machineSettings enableLoggingKnownPii="Boolean"/>
</system.ServiceModel>
</configuration>
En programdistribuerare kan sedan använda logKnownPii
attributet i filen App.config eller Web.config för att aktivera PII-loggning på följande sätt:
<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>
Endast när båda inställningarna är true
PII-loggning aktiverat. Kombinationen av två växlar ger flexibiliteten att logga kända PII för varje program.
Du bör vara medveten om att om du anger två eller flera anpassade källor i en konfigurationsfil är det bara attributen för den första källan som läse. De andra ignoreras. Det innebär att PII för följande App.config-fil inte loggas för båda källorna trots att PII-loggning uttryckligen är aktiverad för den andra källan.
<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>
Om elementet <machineSettings enableLoggingKnownPii="Boolean"/>
finns utanför filen Machine.config genererar systemet en ConfigurationErrorsException.
Ändringarna gäller endast när programmet startar eller startar om. En händelse loggas vid start när båda attributen är inställda på true
. En händelse loggas också om logKnownPii
den är inställd på true
men enableLoggingKnownPii
är false
.
Mer information om PII-loggning finns i PII Security Lockdown-exempel .
Datoradministratören och programdistribueraren bör vara mycket försiktiga när du använder dessa två växlar. Om PII-loggning är aktiverat loggas säkerhetsnycklar och PII. Om den är inaktiverad loggas känsliga och programspecifika data fortfarande i meddelandehuvuden och organ. En mer ingående diskussion om sekretess och skydd av PII från att exponeras finns i Användarsekretess.
Dessutom loggas IP-adressen för meddelandesändaren en gång per anslutning för anslutningsorienterade transporter och en gång per meddelande som skickas på annat sätt. Detta görs utan avsändarens medgivande. Den här loggningen sker dock bara på nivåerna Information eller Utförlig spårning, som inte är standard- eller rekommenderade spårningsnivåer i produktion, förutom för direkt felsökning.