Tôi có một ứng dụng ghi lại các dấu vết chuỗi ngoại lệ và tôi muốn các dấu vết ngăn xếp đó bao gồm tên tệp và số dòng khi được triển khai trong sản xuất. Tôi đã tìm ra cách triển khai các ký hiệu gỡ lỗi w / assembly, nhưng trong quá trình nghiên cứu vấn đề, tôi gặp phải câu hỏi này , điều này ngụ ý rằng không nên đưa các tệp pdb vào môi trường sản xuất. Nhận xét cho câu trả lời được chấp nhận có nội dung "... thông tin gỡ lỗi có thể cung cấp dữ liệu nhạy cảm và là một vectơ tấn công. Tùy thuộc vào ứng dụng của bạn là gì."
Vậy loại dữ liệu nhạy cảm nào có thể bị lộ? Làm thế nào để các ký hiệu gỡ lỗi có thể được sử dụng để xâm phạm ứng dụng? Tôi tò mò về các chi tiết kỹ thuật, nhưng những gì tôi thực sự đang tìm kiếm là một cách thực tế để đánh giá rủi ro khi bao gồm các ký hiệu gỡ lỗi cho bất kỳ ứng dụng và môi trường sản xuất nào. Hay nói một cách khác: điều tồi tệ nhất có thể xảy ra là gì?
CHỈNH SỬA: câu hỏi tiếp theo / làm rõ
Vì vậy, dựa trên câu trả lời của mọi người cho đến nay, có vẻ như câu hỏi này có thể được đơn giản hóa một chút cho các ứng dụng .NET. Điều này từ blog của John Robbins được liên kết trong câu trả lời của Michael Maddox đã làm tôi thất vọng:
Một .NET PDB chỉ chứa hai phần thông tin, tên tệp nguồn và các dòng của chúng và tên biến cục bộ. Tất cả các thông tin khác đã có trong siêu dữ liệu .NET nên không cần sao chép cùng một thông tin trong tệp PDB.
Đối với tôi, điều này nhắc lại những gì người khác đã nói về Reflector, với ngụ ý rằng vấn đề thực sự là quyền truy cập vào các hội đồng. Khi điều đó đã được xác định, quyết định duy nhất cần thực hiện đối với PDB là bạn có quan tâm đến việc để lộ tên tệp, số dòng và tên biến cục bộ hay không (giả sử rằng bạn không hiển thị dấu vết ngăn xếp cho người dùng cuối bắt đầu). Hay tôi đã đơn giản hóa điều này quá nhiều?