PDB в продуктиве
От: Pek2014 Россия  
Дата: 28.03.17 09:59
Оценка:
Коллеги, есть ли причины, по которым не стоит собирать релизную версию серверного приложения c PDB-файлами?
Чему они мешают, какие опасности они таят, если их всё-таки собрать и разместить в каталоге приложения в продуктиве?

Как поступаете вы?
Re: PDB в продуктиве
От: Tom Россия http://www.RSDN.ru
Дата: 28.03.17 10:08
Оценка: +2
P>Коллеги, есть ли причины, по которым не стоит собирать релизную версию серверного приложения c PDB-файлами?
P>Чему они мешают, какие опасности они таят, если их всё-таки собрать и разместить в каталоге приложения в продуктиве?

P>Как поступаете вы?

Только размер дистрибутива, но это не причина, всегда собираем только с PDB и ставим их на сервер
Народная мудрось
всем все никому ничего(с).
Re[2]: PDB в продуктиве
От: Pek2014 Россия  
Дата: 28.03.17 10:39
Оценка:
Здравствуйте, Tom, Вы писали:

P>>Коллеги, есть ли причины, по которым не стоит собирать релизную версию серверного приложения c PDB-файлами?

P>>Чему они мешают, какие опасности они таят, если их всё-таки собрать и разместить в каталоге приложения в продуктиве?

P>>Как поступаете вы?

Tom>Только размер дистрибутива, но это не причина, всегда собираем только с PDB и ставим их на сервер

У нас приложение серверное... никакого дистрибутива не готовим,
готовим набор файлов для развёртывания в продуктив и развёртываем. Никому наружу не отдаём.

Чем нам могут помешать PDB-файлы?

Вариант-догадка: ... безопасность? ...
Re[3]: PDB в продуктиве
От: Tom Россия http://www.RSDN.ru
Дата: 28.03.17 11:03
Оценка: 12 (2)
P>У нас приложение серверное... никакого дистрибутива не готовим,
P>готовим набор файлов для развёртывания в продуктив и развёртываем. Никому наружу не отдаём.
Что бы файлы на сервере развернуть они туда должны как то попасть. Вот размер этого архива, nuget пакета или msi инсталяции, Docker имиджа (нужное подчеркнуть) и будет увеличен

P>Чем нам могут помешать PDB-файлы?

Ничем

P>Вариант-догадка: ... безопасность? ...

Если ваши серверные бинарники утекут то и без PDB они великолепно декомпилируются.
Решарпер вон умеет из коробки генерить PDB и декомпилировать сборки.
Народная мудрось
всем все никому ничего(с).
Re[3]: PDB в продуктиве
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 28.03.17 11:09
Оценка: 12 (2) +3
Здравствуйте, Pek2014, Вы писали:

P>Вариант-догадка: ... безопасность? ...


Информация из PDB-файлов потенциально может помочь атакующему оптимизировать процесс поиска уязвимостей для атаки (если он найдёт способ их получить, конечно). Но в целом, безопасность приложения должна обеспечиваться исходя из предположения о доступности атакующему всех исходников приложения и наличие или отсутствие PDB в развёрнутой версии приложения на неё влиять не должно.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[3]: PDB в продуктиве
От: Mystic Artifact  
Дата: 28.03.17 11:11
Оценка:
Здравствуйте, Pek2014, Вы писали:

P>У нас приложение серверное... никакого дистрибутива не готовим,

P>готовим набор файлов для развёртывания в продуктив и развёртываем. Никому наружу не отдаём.
Тем не менее, размер это первое о чём приходится задумываться. А если ещё есть нативные зависимости — то размеры PDB сильно поболее. Например, всякие chromium-based проекты будут иметь pdb файл более 1Гб. Такой точно замахаешься деплоить.

P>Чем нам могут помешать PDB-файлы?

P>Вариант-догадка: ... безопасность? ...

Коллективный разум подсказывает, что в дотнете — по сути ничем, т.к. код в самих сборках достаточно просто декомпилируется.

Если хочется имён файлов и строк — тогда ложите pdb.

PS: Но, имхо, это показатель недостаточной обработки ошибок в самом коде, или отсутствие внятных сообщений об ошибках или наличие супер длинных методов. Плюс если у вас несколько инсталляций у которых есть рассинхрон в версиях — эти ссылки на файлы/строки необходимо правильно читать.

UPD: А ещё эти номера строк на async/await в каких-то ситуациях нагло врут.
Отредактировано 28.03.2017 11:17 Mystic Artifact . Предыдущая версия .
Re[4]: PDB в продуктиве
От: Mystic Artifact  
Дата: 28.03.17 11:14
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

KV>Информация из PDB-файлов потенциально может помочь атакующему оптимизировать

Мы же в дотнете тут: не проще ли использовать код самих сборок?
Re[5]: PDB в продуктиве
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 28.03.17 11:19
Оценка: 8 (1)
Здравствуйте, Mystic Artifact, Вы писали:
MA>Здравствуйте, kochetkov.vladimir, Вы писали:

KV>>Информация из PDB-файлов потенциально может помочь атакующему оптимизировать

MA> Мы же в дотнете тут: не проще ли использовать код самих сборок?

Ну, если он сможет добраться до файлов со сборками, то конечно проще. Например, если в приложении есть уязвимость к чтению произвольного файла. Но вполне возможна ситуация, когда PDB достать проще, чем DLL (например, если в веб-сервере запрещена обработка прямых запросов к DLL, но не запрещена для PDB).

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[6]: PDB в продуктиве
От: Mystic Artifact  
Дата: 28.03.17 11:32
Оценка: 29 (2) +1
Здравствуйте, kochetkov.vladimir, Вы писали:

KV>Ну, если он сможет добраться до файлов со сборками, то конечно проще. Например, если в приложении есть уязвимость к чтению произвольного файла. Но вполне возможна ситуация, когда PDB достать проще, чем DLL (например, если в веб-сервере запрещена обработка прямых запросов к DLL, но не запрещена для PDB).


Ну да, о очевидном и не подумал.

В How Many Secrets Do .NET PDB Files Really Contain? утверждается, что там только имена файлов / номера строк и имена локальных переменных, в отличие от нативных.
Впрочем, если упор делается именно на безопасность — тогда проще не делать никакой разницы и никогда их не распространять.
Re: PDB в продуктиве
От: vmpire Россия  
Дата: 28.03.17 11:55
Оценка:
Здравствуйте, Pek2014, Вы писали:

P>Коллеги, есть ли причины, по которым не стоит собирать релизную версию серверного приложения c PDB-файлами?

P>Чему они мешают, какие опасности они таят, если их всё-таки собрать и разместить в каталоге приложения в продуктиве?
Я бы размышлял от обратного: а зачем они там нужны? Всегда проще отвечать на вопрос "зачем делать", чем "почему не нужно делать".

P>Как поступаете вы?

Релизные PDB на боевой сервер не деплоим, храним отдельно на случай отладки.
За последние 5-7 лет не понадобились не разу.
Re[2]: PDB в продуктиве
От: Tom Россия http://www.RSDN.ru
Дата: 28.03.17 12:02
Оценка: +1
P>>Коллеги, есть ли причины, по которым не стоит собирать релизную версию серверного приложения c PDB-файлами?
P>>Чему они мешают, какие опасности они таят, если их всё-таки собрать и разместить в каталоге приложения в продуктиве?
V>Я бы размышлял от обратного: а зачем они там нужны?
Кэп, что бы видеть номера строк.
Народная мудрось
всем все никому ничего(с).
Re[2]: PDB в продуктиве
От: Pek2014 Россия  
Дата: 28.03.17 13:10
Оценка: +1
Здравствуйте, vmpire, Вы писали:

V>Я бы размышлял от обратного: а зачем они там нужны? Всегда проще отвечать на вопрос "зачем делать", чем "почему не нужно делать".


Имена файлов и номера строк помогают.

Имена файлов тоже бывают совсем небесполезны. Они показываются с абсолютными путями.
Если вы билдите разные билды в разные папки, то в имени файла (в его пути) вы получаете
ещё и номера билдов сборок. Что тоже может помочь найти проблему (найти сборки из несовместимых билдов).

P>>Как поступаете вы?

V>Релизные PDB на боевой сервер не деплоим, храним отдельно на случай отладки.
V>За последние 5-7 лет не понадобились не разу.

Странно... PDB часто помогают именно обойтись без отладки,
говоря точно в какой строчке какого файла произошла проблема.
Re[3]: PDB в продуктиве
От: vmpire Россия  
Дата: 28.03.17 13:51
Оценка:
Здравствуйте, Tom, Вы писали:

P>>>Коллеги, есть ли причины, по которым не стоит собирать релизную версию серверного приложения c PDB-файлами?

P>>>Чему они мешают, какие опасности они таят, если их всё-таки собрать и разместить в каталоге приложения в продуктиве?
V>>Я бы размышлял от обратного: а зачем они там нужны?
Tom>Кэп, что бы видеть номера строк.
Согласен, хотя не так часто эта информация необходима. Имя метода видно и так, а по виду исключения часто можно и строку быстро найти.
Конечно, это всё зависит от проекта. У нас методы короткие, так чтро номера строк пригодились бы пару раз в год.
С другой стороны, и вреда в pdb файлах особого нет.
Re[3]: PDB в продуктиве
От: vmpire Россия  
Дата: 28.03.17 13:52
Оценка:
Здравствуйте, Pek2014, Вы писали:

V>>Я бы размышлял от обратного: а зачем они там нужны? Всегда проще отвечать на вопрос "зачем делать", чем "почему не нужно делать".


P>Странно... PDB часто помогают именно обойтись без отладки,

P>говоря точно в какой строчке какого файла произошла проблема.
Файл можно определить и так, по имени метода.
Строчка — да, иногда может помочь. Но насколько часто — зависит от кода.
Re: PDB в продуктиве
От: rm822 Россия  
Дата: 28.03.17 14:21
Оценка: +1
Правильно — всегда собирать с PDB, иметь symbol server & source server. И PDB и бинари класть в symbol server
Нужно имеенно все сразу, иначе толку не будет.
Re: PDB в продуктиве
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 28.03.17 20:11
Оценка:
Здравствуйте, Pek2014, Вы писали:

P>Коллеги, есть ли причины, по которым не стоит собирать релизную версию серверного приложения c PDB-файлами?


Размер. PDB здорово его раздувают.

P>Чему они мешают, какие опасности они таят, если их всё-таки собрать и разместить в каталоге приложения в продуктиве?


Кроме размера, насколько я знаю, больше особых проблем с ними нет.

P>Как поступаете вы?


Обычно оставляю.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[2]: PDB в продуктиве
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 28.03.17 20:11
Оценка:
Здравствуйте, rm822, Вы писали:

R>Правильно — всегда собирать с PDB, иметь symbol server & source server. И PDB и бинари класть в symbol server


Как это поможет на продакшене?
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[6]: PDB в продуктиве
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 28.03.17 20:11
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

KV>Но вполне возможна ситуация, когда PDB достать проще, чем DLL (например, если в веб-сервере запрещена обработка прямых запросов к DLL, но не запрещена для PDB).


Ты с таким реально сталкивался, или просто теоретически?
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[3]: PDB в продуктиве
От: RonWilson Россия  
Дата: 28.03.17 20:28
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, rm822, Вы писали:


R>>Правильно — всегда собирать с PDB, иметь symbol server & source server. И PDB и бинари класть в symbol server


AVK>Как это поможет на продакшене?


мне помогало несколько раз, когда получал краш от модуля к IIS, приятно же сразу увидеть, что и где упало, со стеком но дело такое, если есть своя система сбора крашев, то может и не надо, но например кто через WER их получает, очень полезно, но я таких пару только видел — вроде как партнером Microsoft надо быть для использования WER через MS, не уверен что сейчас так.
Re[7]: PDB в продуктиве
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 28.03.17 20:51
Оценка:
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, kochetkov.vladimir, Вы писали:

KV>>Но вполне возможна ситуация, когда PDB достать проще, чем DLL (например, если в веб-сервере запрещена обработка прямых запросов к DLL, но не запрещена для PDB).

AVK>Ты с таким реально сталкивался, или просто теоретически?

Нет, это только мои грязные фантазии на тему В IIS/ASP.NET надо сильно постараться, чтобы можно было что-то скачать из /bin или чтобы PDB оказались вне этого каталога.

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[8]: PDB в продуктиве
От: Mystic Artifact  
Дата: 28.03.17 21:02
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

KV>Нет, это только мои грязные фантазии на тему В IIS/ASP.NET надо сильно постараться, чтобы можно было что-то скачать из /bin или чтобы PDB оказались вне этого каталога.

Но есть же ж ещё прикладной код. А там может быть уже и не сильно надо постараться.
Re[3]: PDB в продуктиве
От: rm822 Россия  
Дата: 29.03.17 10:51
Оценка: :)
AVK>Как это поможет на продакшене?
В двух словах — это просто переход на другой технологический уровень.

Если нужно разобрать дапм, ты берешь его и разбираешь, и все просто работает. Ты не думаешь о том как бы посмотреть исходники, где взять бинари, и к какой же версии черт побери это относится.
Нужен удаленный дебаг или профайл — запускаешь и он просто работает.

Как перейти с IDE 20 летней давности на что-то современное.
Re[4]: PDB в продуктиве
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 29.03.17 11:58
Оценка:
Здравствуйте, rm822, Вы писали:

R>Если нужно разобрать дапм, ты берешь его и разбираешь, и все просто работает. Ты не думаешь о том как бы посмотреть исходники, где взять бинари, и к какой же версии черт побери это относится.


Это все понятно, но это не про продакшен, а про машину разработчика. Вопрос же был в другом.
AVK Blog
Re[5]: PDB в продуктиве
От: Sinix  
Дата: 30.03.17 15:31
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Это все понятно, но это не про продакшен, а про машину разработчика. Вопрос же был в другом.


Про машину разработчика + dump debug. С 2010й студии емнип работает. Завести, чтоб оно работало — то ещё удовольствие, правда.
Re: PDB в продуктиве
От: vdimas Россия  
Дата: 31.03.17 08:23
Оценка:
Здравствуйте, Pek2014, Вы писали:

P>Как поступаете вы?


Поставляем одновременно релизные и дебажные либы с PDB.
Иногда у разработчиков-клиентов что-то падает через "слоёный пирог" прямых/обратных вызовов в своём коде через третьесторонний. Удобней в таких случаях для отладки иметь полный стек.
Re[5]: PDB в продуктиве
От: rm822 Россия  
Дата: 31.03.17 14:29
Оценка:
AVK>Это все понятно, но это не про продакшен, а про машину разработчика. Вопрос же был в другом.
Затем что для корректной работы профайлеров нужно восстанавливать callstack, а там FPO, stackalloc, зоопарк calling conventions и слои managed/unmanaged/wow64
Некоторые ***ки конечно делают вид что у них этого всего нет, или что нарубив код на дотнете это можно просто проигнорировать, но на то они и ****ки, и стек у них вечно разваливается
Re: PDB в продуктиве
От: GlebZ Россия  
Дата: 31.03.17 19:14
Оценка:
Здравствуйте, Pek2014, Вы писали:

P>Как поступаете вы?

Оставляю. Всегда делаем систему логов при получении любого исключения в котором лежит стэктрейс и время сборки приложения.
Re[6]: PDB в продуктиве
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 31.03.17 19:50
Оценка:
Здравствуйте, rm822, Вы писали:

AVK>>Это все понятно, но это не про продакшен, а про машину разработчика. Вопрос же был в другом.

R>Затем что для корректной работы профайлеров нужно восстанавливать callstack

Ты профайлеры на продакшене запускаешь?
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[7]: PDB в продуктиве
От: Tom Россия http://www.RSDN.ru
Дата: 03.04.17 09:42
Оценка:
AVK>Ты профайлеры на продакшене запускаешь?
Почему нет, только так можно анализировать реальную нагрузку.
Народная мудрось
всем все никому ничего(с).
Re[7]: PDB в продуктиве
От: rm822 Россия  
Дата: 03.04.17 17:42
Оценка:
AVK>Ты профайлеры на продакшене запускаешь?
Да, когда не получается изолировать, или когда это проще и есть возможность
Re[8]: PDB в продуктиве
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 03.04.17 19:41
Оценка:
Здравствуйте, Tom, Вы писали:

AVK>>Ты профайлеры на продакшене запускаешь?

Tom>Почему нет, только так можно анализировать реальную нагрузку.

Потому что вряд ли пользователи порадуются, когда все резко стало тормозить и глючить. Хотя, конечно, продакшен бывает разный.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[9]: PDB в продуктиве
От: Tom Россия http://www.RSDN.ru
Дата: 07.04.17 06:49
Оценка:
AVK>Потому что вряд ли пользователи порадуются, когда все резко стало тормозить и глючить. Хотя, конечно, продакшен бывает разный.
О как, странно но пользователи StackOverflow не жалуются
Ну и в догонку, совсем непонятно с какого перепугу вдруг всё должно резко тормозить и уж тем более глючить.
Особенно в sampling режиме
Народная мудрось
всем все никому ничего(с).
Отредактировано 07.04.2017 6:50 Tom . Предыдущая версия .
Re[2]: PDB в продуктиве
От: mssmax  
Дата: 24.04.17 16:53
Оценка:
Здравствуйте, rm822, Вы писали:

R>Правильно — всегда собирать с PDB, иметь symbol server & source server. И PDB и бинари класть в symbol server

R>Нужно имеенно все сразу, иначе толку не будет.

I second that. Кастомеру не нужны PDB в дистрибутиве, ему плевать, поэтому включать их в релизный билд просто не имеет смысла ( из-за раздутия последнего ). А вот когда этот кастомер придёт с дампом, они очень даже кстати. Настройка symbol server — дело от силы пары часов, так что за отмазу не прокатит.

Мои две копейки.
Re[3]: PDB в продуктиве
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 26.04.17 18:32
Оценка:
Здравствуйте, mssmax, Вы писали:

M>I second that. Кастомеру не нужны PDB в дистрибутиве, ему плевать, поэтому включать их в релизный билд просто не имеет смысла ( из-за раздутия последнего ). А вот когда этот кастомер придёт с дампом, они очень даже кстати. Настройка symbol server — дело от силы пары часов, так что за отмазу не прокатит.


Не всегда можно снять дамп, особенно если проблема плавающая. А вот номера строк и названия файлов в логах очень даже небесполезны.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.