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.
quelle
debug
einen Dateinamen in Ordnung sein , aber nicht fürinfo
einen Dateinamen.Antworten:
Ich glaube, der beste Weg, dies zu handhaben, besteht darin, Protokolldateien als eine weitere Benutzeroberfläche für die Anwendung zu behandeln. Die Tatsache, dass die Informationen in Textdateien gespeichert sind, unterscheidet den Inhalt nicht von den Informationen, die auf den normalen Bildschirmen der Benutzeroberfläche angezeigt werden.
Überlegen Sie, wie Sie dieselben Informationen schützen würden, wenn sie in einer normalen Benutzeroberfläche angezeigt würden. Sie müssten identifizieren, wer der Benutzer ist, und dann nur die Informationen offenlegen, zu deren Anzeige dieser Benutzer berechtigt war.
Informationen in Protokolldateien müssen auf die gleiche Weise behandelt werden. Sie müssen zuerst genau antworten, wer berechtigt sein soll, die Protokolldatei zu sehen, und welche Informationen sie sehen dürfen.
Das Weitergeben schlecht gestalteter Protokolldateien ist ein großes Sicherheitsrisiko. Ich glaube nicht, dass Sie eine gute Lösung dafür finden, wenn Sie Daten auf die schwarze Liste setzen. Eine bessere Strategie besteht darin, auf die Whitelist zu setzen, was in jeder Protokolldatei enthalten sein könnte, und die Protokolldateien von unten nach oben zu entwerfen.
quelle
Kreditkarteninformationen sollten niemals protokolliert werden.
ID-Nummern (wie SSN in den USA oder Teudat Zehut # in Israel).
Netzwerkcomputernamen, Netzwerkfreigabepfade.
quelle
Persönlich identifizierbare Gesundheitsinformationen, die unter das Gesetz über die Portabilität und Rechenschaftspflicht von Krankenversicherungen von 1996 (HIPAA) fallen. Dieser Artikel listet die folgenden Beispiele auf:
quelle
Wenn die Sicherheit ein Problem darstellt, verschlüsseln Sie die Protokolldatei
quelle
Aus meinem Kopf ....
Kreditkarteninformationen sollten nicht in Protokollen enthalten sein. SSN- (oder SIN-) Daten sollten nicht in Protokollen enthalten sein.
... natürlich gibt es Ausnahmen, wenn Sie an der Arbeit für einige zentralen Datenspeicher für eine Kreditkartengesellschaft oder eine Regierungsbehörde , die SIN Daten verwaltet, dann könnten Sie passieren sollen haben es loggen sein , weil es das wichtigste Fleisch ist von dem, was Sie werden verarbeitet / verwaltet.
quelle
Ja, aber.
Zum Debuggen einiger Probleme benötigen Sie echte Daten.
Sie müssen also ein Gleichgewichtsspiel spielen: Sie müssen tatsächlich mit Ihren Hauptkunden besprechen und vereinbaren, was sie als vertrauliche oder sensible Daten betrachten und was nicht. Wenn mehrere Kunden nicht einverstanden sind, nehmen Sie für jeden Aspekt das Worst-Case-Szenario, es sei denn, Sie können es gegenüber den Kunden rechtfertigen, die bei der Kennzeichnung aller sensiblen Elemente möglicherweise über Bord gehen.
Ich habe in den Bereichen Flugsicherung, Finanzen und Bankwesen gearbeitet. In jeder Situation gibt es sensible Daten. Es gibt Aufgaben, für die es unvermeidlich ist, mit vertraulichen Daten umzugehen. In diesen Fällen müssen Sie sicherstellen, dass Sie mit vertrauenswürdigen Personen zusammenarbeiten. Dieses Risiko kann durch gesetzliche Bestimmungen, die vor dem Zugriff auf solche Daten zu vereinbaren sind, etwas gemindert werden (Geheimhaltungsvereinbarungen, Verwendung von Daten nur aus gültigen Geschäftsgründen, eingeschränkter Zugriff auf Daten, strafrechtliche Sanktionen für die Nichteinhaltung oder Durchsetzung der Vereinbarungen ...). - und relevante Prozesse, die es ermöglichen, diese Dinge zu verfolgen.
Wenn Daten kritisch sind, müssen Sie den Preis für die Einrichtung von Systemen zahlen, die die Integrität, Kohärenz und Sicherheit dieser Daten schützen.
Das heißt, Sie haben Recht, die Frage "Welche Daten" zu stellen. Wahrlich, Sie beantworten es selbst: Das meiste davon ist geschäftsbezogen. Fragen Sie Ihre Kunden, ob Sie sich nicht selbst antworten können. Beachten Sie dabei alle oben genannten Punkte und behalten Sie die Möglichkeit bei, auftretende Probleme zu identifizieren und zu beheben.
quelle
Ich würde sagen, protokollieren Sie Nachrichten, die beim Codieren lustig erscheinen. Sie werden sie auf der ganzen Linie nicht lustig finden und sie werden für immer da sein - genau wie dieser schlecht beratene Blog / Facebook / Twiter-Beitrag!
Halten Sie Protokollnachrichten langweilig :)
quelle