Mam zamiar napisać wytyczne firmy dotyczące tego, co nigdy nie może pojawić się w logach (ślad aplikacji). W rzeczywistości niektórzy programiści starają się dołączyć do śledzenia jak najwięcej informacji, co powoduje, że przechowywanie tych dzienników jest ryzykowne, a ich przesyłanie jest wyjątkowo niebezpieczne , zwłaszcza gdy klient nie wie, że te informacje są przechowywane, ponieważ nigdy o to nie dbała i nigdy nie czytaj dokumentacji i / lub komunikatów ostrzegawczych.
Na przykład, mając do czynienia z plikami, niektórzy programiści mają pokusę, aby prześledzić nazwy plików . Na przykład przed dołączeniem nazwy pliku do katalogu, jeśli prześledzimy wszystko przez pomyłkę, łatwo będzie zauważyć na przykład, że dołączona nazwa jest za długa i że błąd w kodzie polegał na zapomnieniu sprawdzenia długości konkatenowany ciąg. Jest to pomocne, ale są to dane wrażliwe i nigdy nie mogą pojawiać się w logach .
W ten sam sposób:
- Hasła ,
- Adresy IP i informacje o sieci (adres MAC, nazwa hosta itp.) ¹,
- Dostęp do bazy danych,
- Bezpośrednie wprowadzanie danych użytkownika i przechowywanych danych biznesowych
nie może nigdy pojawić się w śladzie.
Jakie inne rodzaje informacji należy usunąć z dzienników? Czy są już jakieś wytyczne, których mogę użyć?
¹ Oczywiście nie mówię o takich rzeczach, jak dzienniki IIS lub Apache. Mówię o rodzaju informacji, które są gromadzone wyłącznie w celu debugowania samej aplikacji, a nie śledzenia aktywności niezaufanych podmiotów.
Edycja: Dziękujemy za odpowiedzi i komentarze. Ponieważ moje pytanie nie jest zbyt precyzyjne, postaram się odpowiedzieć na pytania zadane w komentarzach:
- Co robię z dziennikami?
Dzienniki aplikacji mogą być przechowywane w pamięci, co oznacza albo w postaci zwykłej na dysku twardym na komputerze lokalnym, w bazie danych, ponownie w postaci zwykłej lub w zdarzeniach systemu Windows. W każdym przypadku chodzi o to, że źródła te mogą nie być wystarczająco bezpieczne. Na przykład, gdy klient uruchamia aplikację, a ta aplikacja przechowuje dzienniki w postaci pliku tekstowego w katalogu tymczasowym, każdy, kto ma fizyczny dostęp do komputera, może odczytać te dzienniki.
Dzienniki aplikacji można również przesyłać przez Internet. Na przykład, jeśli klient ma problem z aplikacją, możemy poprosić ją o uruchomienie tej aplikacji w trybie pełnego śledzenia i przesłanie nam pliku dziennika. Ponadto niektóre aplikacje mogą automatycznie wysyłać nam raporty o awariach (a nawet jeśli istnieją ostrzeżenia dotyczące poufnych danych, w większości przypadków klienci ich nie czytają).
- Czy mówię o konkretnych dziedzinach?
Nie. Pracuję tylko nad ogólnymi aplikacjami biznesowymi, więc jedynymi wrażliwymi danymi są dane biznesowe. Nie ma nic związanego ze zdrowiem lub innymi dziedzinami objętymi szczegółowymi przepisami. Ale dziękuję za rozmowę na ten temat, prawdopodobnie powinienem zapoznać się z tymi polami, aby uzyskać wskazówki na temat tego, co mogę zawrzeć w wytycznych.
- Czy nie jest łatwiej zaszyfrować dane?
Nie. Sprawiłoby to, że każda aplikacja byłaby znacznie trudniejsza, szczególnie jeśli chcemy użyć diagnostyki C # i TraceSource
. Wymagałoby to również zarządzania autoryzacjami, co nie jest najłatwiejszym rozwiązaniem. Wreszcie, jeśli mówimy o dziennikach przesłanych do nas przez klienta, musimy być w stanie odczytać dzienniki, ale bez dostępu do poufnych danych. Z technicznego punktu widzenia łatwiej jest nigdy w ogóle nie zawierać poufnych informacji w dziennikach i nigdy nie dbać o to, jak i gdzie są one przechowywane.
debug
nazwa pliku może być poprawna , ale nieinfo
nazwa pliku.