Mam aplikację, która rejestruje ślady ciągów wyjątków i chciałem, aby te ślady stosu zawierały nazwy plików i numery wierszy podczas wdrażania w środowisku produkcyjnym. Wymyśliłem, jak wdrożyć symbole debugowania w zestawie, ale w trakcie badania problemu natknąłem się na to pytanie , co oznacza, że nie jest dobrym pomysłem włączanie plików pdb w środowisku produkcyjnym. Komentarz do zaakceptowanej odpowiedzi brzmi: „... informacje debugowania mogą ujawnić poufne dane i stanowić wektor ataku. W zależności od tego, jaka jest Twoja aplikacja”.
Więc jakie wrażliwe dane mogą zostać ujawnione? W jaki sposób można użyć symboli debugowania do złamania zabezpieczeń aplikacji? Jestem ciekawy szczegółów technicznych, ale tak naprawdę szukam praktycznego sposobu oceny ryzyka włączenia symboli debugowania dla dowolnej aplikacji i środowiska produkcyjnego. Albo inaczej: co najgorszego może się wydarzyć?
EDYCJA: pytanie uzupełniające / wyjaśnienie
Na podstawie dotychczasowych odpowiedzi wszystkich wydaje się, że to pytanie można nieco uprościć w przypadku aplikacji .NET. Ten fragment z bloga Johna Robbinsa, do którego link znajduje się w odpowiedzi Michaela Maddoxa, rzucił się we mnie:
.NET PDB zawiera tylko dwie informacje, nazwy plików źródłowych i ich wiersze oraz lokalne nazwy zmiennych. Wszystkie inne informacje znajdują się już w metadanych .NET, więc nie ma potrzeby powielania tych samych informacji w pliku PDB.
Dla mnie to powtórzenie tego, co inni mówili o Reflector, z implikacją, że prawdziwym problemem jest dostęp do zgromadzeń. Po ustaleniu jedyną decyzją, jaką należy podjąć w odniesieniu do PDB, jest to, czy zależy Ci na ujawnianiu nazw plików, numerów wierszy i lokalnych nazw zmiennych (zakładając, że na początku nie pokazujesz śladów stosu użytkownikom końcowym). A może zbytnio to uprościłem?