Ich bin dabei, die Unternehmensrichtlinien darüber zu schreiben, was niemals in Protokollen erscheinen darf (Ablaufverfolgung einer Anwendung). Tatsächlich versuchen einige Entwickler, so viele Informationen wie möglich in die Ablaufverfolgung aufzunehmen, was das Speichern dieser Protokolle riskant und das Übermitteln dieser Protokolle äußerst gefährlich macht , insbesondere wenn der Kunde nicht weiß, dass diese Informationen gespeichert sind, da er sich nie darum gekümmert hat und lesen Sie niemals Dokumentation und / oder Warnmeldungen.
Beispielsweise sind einige Entwickler beim Umgang mit Dateien versucht, die Namen der Dateien zu verfolgen . Wenn wir beispielsweise vor dem Anhängen des Dateinamens an ein Verzeichnis alles nach einem Fehler verfolgen, ist es leicht zu erkennen, dass der angehängte Name zu lang ist und dass der Fehler im Code darin bestand, zu vergessen, die Länge des Verzeichnisses zu überprüfen verkettete Zeichenfolge. Es ist hilfreich, aber dies sind vertrauliche Daten und dürfen niemals in Protokollen erscheinen .
Auf die gleiche Weise:
- Passwörter ,
- IP-Adressen und Netzwerkinformationen (MAC-Adresse, Hostname usw.) ¹,
- Datenbankzugriffe,
- Direkte Eingabe von Benutzer- und gespeicherten Geschäftsdaten
darf niemals in Spur erscheinen.
Welche anderen Arten von Informationen müssen aus den Protokollen verbannt werden? Gibt es bereits Richtlinien, die ich verwenden kann?
¹ Offensichtlich spreche ich nicht über Dinge wie IIS- oder Apache-Protokolle. Ich spreche von der Art von Informationen, die mit der einzigen Absicht gesammelt werden, die Anwendung selbst zu debuggen und nicht die Aktivität nicht vertrauenswürdiger Entitäten zu verfolgen.
Bearbeiten: Vielen Dank für Ihre Antworten und Ihre Kommentare. Da meine Frage nicht zu genau ist, werde ich versuchen, die in den Kommentaren gestellten Fragen zu beantworten:
- Was mache ich mit den Protokollen?
Die Protokolle der Anwendung können im Speicher gespeichert werden, dh entweder in normaler Festplatte auf localhost, in einer Datenbank, erneut in normaler Form oder in Windows-Ereignissen. In jedem Fall besteht die Sorge, dass diese Quellen möglicherweise nicht sicher genug sind. Wenn ein Kunde beispielsweise eine Anwendung ausführt und diese Anwendung Protokolle in einer Nur-Text-Datei im temporären Verzeichnis speichert, kann jeder, der physischen Zugriff auf den PC hat, diese Protokolle lesen.
Die Protokolle der Anwendung können auch über das Internet gesendet werden. Wenn ein Kunde beispielsweise ein Problem mit einer Anwendung hat, können wir ihn bitten, diese Anwendung im Vollverfolgungsmodus auszuführen und uns die Protokolldatei zu senden. Einige Anwendungen senden uns möglicherweise automatisch den Absturzbericht (und selbst wenn Warnungen zu vertraulichen Daten vorliegen, lesen Kunden diese in den meisten Fällen nicht).
- Spreche ich über bestimmte Bereiche?
Nein. Ich arbeite nur an allgemeinen Geschäftsanwendungen. Die einzigen vertraulichen Daten sind Geschäftsdaten. Es gibt nichts in Bezug auf Gesundheit oder andere Bereiche, die unter bestimmte Vorschriften fallen. Aber danke, dass Sie darüber sprechen, ich sollte mir wahrscheinlich diese Felder ansehen, um Hinweise darauf zu erhalten, was ich in Richtlinien aufnehmen kann.
- Ist es nicht einfacher, die Daten zu verschlüsseln?
Nein. Dies würde jede Anwendung erheblich erschweren, insbesondere wenn wir die C # -Diagnose und verwenden möchten TraceSource
. Es würde auch erfordern, Berechtigungen zu verwalten, was nicht der einfachste Weg ist. Wenn wir über die Protokolle sprechen, die uns von einem Kunden übermittelt wurden, müssen wir in der Lage sein, die Protokolle zu lesen, ohne jedoch Zugriff auf vertrauliche Daten zu haben. Technisch gesehen ist es also einfacher, niemals vertrauliche Informationen in Protokolle aufzunehmen und sich nie darum zu kümmern, wie und wo diese Protokolle gespeichert werden.
debug
einen Dateinamen in Ordnung sein , aber nicht fürinfo
einen Dateinamen.