Я збираюся написати керівництво компанії щодо того, що ніколи не повинно з’являтися в журналах (слід програми). Насправді, деякі розробники намагаються включити якомога більше інформації в слід, що робить ризикованим зберігання цих журналів і вкрай небезпечно їх надсилати , особливо коли замовник не знає, що ця інформація зберігається, тому що вона ніколи про це не дбала. і ніколи не читайте документацію та / або попереджувальні повідомлення.
Наприклад, працюючи з файлами, деякі розробники спокушаються відстежувати назви файлів . Наприклад, перед тим, як додати ім'я файлу до каталогу, якщо ми простежимо все на помилці, буде легко помітити, наприклад, що додане ім'я занадто довге, і що помилка в коді повинна була забути перевірити на наявність довжини з'єднаний рядок. Це корисно, але це конфіденційні дані і ніколи не повинні з’являтися в журналах .
Таким же чином:
- Паролі ,
- IP-адреси та мережева інформація (MAC-адреса, ім'я хоста тощо) ¹,
- Доступ до бази даних,
- Прямий ввід даних користувача та збережених бізнес-даних
ніколи не повинні з'являтися в слід.
То які ще типи інформації потрібно виганяти з журналів? Чи є вже написані вказівки, які я можу використовувати?
¹ Очевидно, я не говорю про речі, як журнали IIS або Apache. Те, про що я говорю, - це така інформація, яка збирається з єдиною метою налагодити саме додаток, а не простежити за діяльністю недовірених осіб.
Редагувати: Дякую за відповіді та ваші коментарі. Оскільки моє запитання не надто точне, я спробую відповісти на питання, задані в коментарях:
- Що я роблю з колодами?
Журнали програми можуть зберігатися в пам'яті, що означає або на простому диску на жорсткому диску в localhost, в базі даних, знову в простому або в Windows Events. У кожному випадку, проблема полягає в тому, що ці джерела можуть бути недостатньо безпечними. Наприклад, коли клієнт запускає програму і ця програма зберігає журнали у текстовому файлі у текстовому каталозі, будь-хто, хто має фізичний доступ до ПК, може прочитати ці журнали.
Журнали програми також можуть надсилатися через Інтернет. Наприклад, якщо у клієнта є проблема з додатком, ми можемо попросити її запустити цю програму в режимі повного сліду та надіслати нам файл журналу. Крім того, якась програма може автоматично надсилати нам звіт про збій (і навіть якщо є попередження щодо конфіденційних даних, у більшості випадків клієнти їх не читають).
- Я говорю про конкретні поля?
Ні. Я працюю лише над загальними бізнес-додатками, тому єдині конфіденційні дані - це бізнес-дані. Немає нічого, пов’язаного зі здоров’ям чи іншими сферами, які б охоплювались певними нормами. Але дякую, що поговорили про це, я, мабуть, повинен поглянути на ці поля, щоб отримати деякі підказки про те, що я можу включити до керівних принципів.
- Чи не простіше шифрувати дані?
Ні. Це зробило б кожен додаток набагато складніше, особливо якщо ми хочемо використовувати діагностику C # і TraceSource
. Також потрібно буде керувати авторизаціями, що не найпростіше зробити. Нарешті, якщо ми говоримо про журнали, подані нам від замовника, ми повинні мати можливість читати журнали, але не маючи доступу до конфіденційних даних. Тож технічно простіше взагалі ніколи не включати конфіденційну інформацію в журнали і ніколи не цікавитись тим, як і де вони зберігаються.
debug
ім'ям файлу, але не зinfo
ім'ям файлу.