Существуют ли какие-либо проблемы безопасности, выходящие из файлов debug debug на живых серверах?
Существуют ли какие-либо проблемы безопасности, содержащие файлы .NET PDB на реальном сервере?
Я знаю, что отбрасывание исключений может занять немного больше времени, но кто все равно бросает исключения во время нормального выполнения?:-)
Но с точки зрения безопасности? любые вопросы?
Ответы
Ответ 1
Хм - Я бы опирался на это с осторожностью. Я думаю, что у вас должны быть PDB, но не на производственных серверах. Кроме того, вы должны отключить Debug в любой живой системе. Отладка отвратительна, и вы просто не хотите ее, когда она вам не нужна.
Из Скотт Гатри:
- Компиляция страниц ASP.NET занимает больше времени (поскольку некоторые оптимизации пакетов отключены)
- Код может выполняться медленнее (поскольку некоторые дополнительные пути отладки включены)
- В приложении во время выполнения гораздо больше памяти используется
- Сценарии и изображения, загруженные с помощью обработчика WebResources.axd, не кэшируются.
Задайте розничную розницу развертывания = true в файле machine.config:
<configuration>
<system.web>
<deployment retail="true"/>
</system.web>
</configuration>
Это переопределяет параметры отладки, ошибок и трассировки, которые предотвратят раскрытие любой информации за пределами самого компьютера.
Итак, теперь, когда вы отключили отладку, нет ошибок или трассировки, почему вы планируете развертывать PDB на производственный сервер? Храните их в другом месте, возможно, даже на своем сервере разработки. Продвижение кода script от Dev to Production может специально исключать PDB, но архивируйте их так, чтобы они были доступны, если вам когда-либо понадобилась отладка производства.
Ответ 2
Если ваша система не защищена PDB, она, вероятно, не будет защищена без них. Очевидно, это зависит от того, насколько ценны лучшие отчеты об ошибках. Лично я много ценю, поэтому имею тенденцию развертывать PDB.
Ответ 3
Единственная проблема, с которой вы можете столкнуться при публикации .PDB файлов на ваш сайт, - это когда возникает исключение, и вы забыли установить свойство CustomErrors в web.config. Трассировка стека будет отображаться с именами файлов и номерами строк, что может быть проблемой безопасности.
Я не думаю, что есть другие риски.
Ответ 4
Я считаю, справедливый аргумент заключается в том, что не, оставляя PDB на живых серверах, является риском. В случае сбоя производства и проблем, которые невозможно воспроизвести на dev или UAT, гораздо больше времени (и, возможно, невозможно) диагностировать, где происходит ошибка.
По крайней мере, PDB, которые соответствуют развёрнутым DLL, должны находиться в файле ZIP на рабочем сервере где-то. Они должны быть легко расположены людьми, отличными от вас, если вы не помогаете.
Также см. Файлы PDB: что каждый разработчик должен знать от Джона Роббинса.
Ответ 5
Если сервер IIS, нет. Эти файлы не будут доступны публике, если они хранятся в правильных местах (веб-сайт\bin). Иногда я нашел файлы промежуточного (obj-каталога) на веб-серверах - это, по-видимому, является излюбленным способом случайной публикации двоичных файлов. В любых случаях, когда ваши pdbs видны, вы также видите DLL, что хуже.
Как отмечено activa, трассировка стека полезна для хакера с номерами строк или без них. Сохраняйте конфиденциальность.
Я предполагаю, что любая другая программа, которую вы можете запускать на реальном сервере, - службы и т.д. - вообще не является общедоступной.
Ответ 6
Если вы представляете неудачные исключения для конечного пользователя (так называемый "Желтый экран смерти" ), тогда это может представлять опасность для злоумышленника получить более полное представление о вашей системе.
Одно из возможных решений - иметь политику обработки исключений, которая:
- Регистрирует все исключения с исходной трассировкой стека, дополнительной информацией и уникальным идентификатором исключения (Guid).
- Заменяет исключение об исключении оболочкой, содержащей только идентификатор исключения (для ссылки и обратной связи) и дезинфицированное сообщение (т.е.: строки соединения) с отброшенной информацией о трассировке стека.
Примеры блоков обработки исключений с открытым исходным кодом в .NET:
Ответ 7
В основном PDB находятся чуть ниже исходного кода, когда речь заходит о том, чтобы выкачать, а ASP.NET/IIS не мешает им загружаться.
Теперь наверняка люди должны угадать имя сборки, и это может быть маловероятным, но зачем рисковать?