У меня есть небольшой спор на рабочем месте, и я пытаюсь выяснить, кто прав, и что делать правильно.
Контекст: веб-приложение для внутренней сети, которое наши клиенты используют для учета и других ERP-приложений.
Я считаю, что сообщение об ошибке, представляемое пользователю (когда происходит сбой), должно включать как можно больше информации, включая трассировку стека. Конечно, это должно начаться с милого «Произошла ошибка, пожалуйста, отправьте разработчикам следующую информацию» большими, дружескими письмами.
Я рассуждаю так: скриншот сбойного приложения часто будет единственным доступным источником информации. Конечно, вы можете попытаться заполучить системного администратора (ов) клиента, попытаться объяснить, где находятся ваши файлы журналов и т. Д., Но это, вероятно, будет медленным и болезненным (общение с представителями клиента в основном так и есть).
Кроме того, наличие немедленной и полной информации чрезвычайно полезно при разработке, когда вам не нужно искать файлы журналов, чтобы найти то, что вам нужно в каждом исключении. (Но это можно решить с помощью переключателя конфигурации.)
К сожалению, был какой-то «аудит безопасности» (понятия не имею, как они это делали без источников ... но как угодно), и они жаловались на полные сообщения об исключениях, ссылаясь на них как на угрозу безопасности. Естественно, клиенты (по крайней мере, один из известных мне) приняли это за чистую монету и теперь требуют, чтобы сообщения были очищены.
Я не вижу, как потенциальный злоумышленник может использовать трассировку стека, чтобы выяснить, что он не мог понять раньше. Есть ли какие-либо примеры, какие-либо документально подтвержденные доказательства того, что кто-то когда-либо делал это? Я думаю, что мы должны бороться с этой глупой идеей, но, возможно, я здесь дурак, так что ...
Кто прав?
источник
Unfortunately there has been some kind of "Security audit"
" - Серьезно? Что это за отношение? Аудит безопасности - в ваших интересах - чтобы улучшить ваши системы, найти проблемы раньше, чем это сделают плохие парни. Вы должны подумать о том, чтобы попытаться работать с ними, а не против них. Кроме того, вы можете попытаться получить больше информации о безопасности PoV в информационной безопасности .Ответы:
Я склонен создавать журнал приложений, либо в БД, либо в файле, и записывать всю такую информацию в это. Затем вы можете дать пользователю номер ошибки, который определяет, к какому элементу журнала относится ошибка, чтобы вы могли получить ее обратно. Этот шаблон также полезен, так как вы можете следить за ошибками, даже если пользователи не беспокоятся о них, чтобы вы могли лучше понять, где проблемы.
Если ваш сайт установлен в среде клиента, и вы не можете с ним связаться, вы можете обратиться в ИТ-отдел, чтобы выслать вам выдержку из сообщения об ошибке №.
Еще одна вещь, которую вы могли бы рассмотреть, - это отправить по электронной почте подробные сведения об ошибках в почтовый ящик, который вы видите, чтобы вы знали, когда что-то идет не так.
По сути, наличие системы, которая разливается изнутри, когда что-то не так, не внушает уверенности нетехническим пользователям - она пугает их, заставляя думать, что что-то очень неправильно (например, насколько BSOD вы понимаете и как ты чувствуешь, когда кто-то подходит)?
На трассировке стека:
В .Net трассировка стека покажет полную трассировку прямо в сборках ядра MS, а также покажет подробности о том, какие технологии вы используете, а также возможные версии. Это дает злоумышленникам ценную информацию о возможных слабостях, которые могут быть использованы.
источник
Да, их много.
След стека может выявить
... У этого списка нет конца. По сути, каждое проектное решение в большом приложении может иметь отношение к безопасности, и почти все они могут быть переданы через имена методов или модулей. Имейте в виду, это не означает, что все еще не имеет смысла отображать трассировку стека, если среда, в которой он представлен, безопасна (например, интрасеть, а не веб-сайт с выходом в Интернет), но стоимость в безопасности определенно не равна нулю ,
источник
Дело в том, что не наша основная задача - облегчить себе жизнь. Наша задача - облегчить работу конечного пользователя. Для нас трассировка стека выглядит как чрезвычайно полезная информация для разработчика. Для пользователя это выглядит как полная чепуха, которая бесполезна. Даже если вы скажете им иначе, они не усваивают это. Если вы думаете, что получить эту информацию от системных администраторов сложно, то получить ее от конечных пользователей еще хуже.
Что касается безопасности, у вас может быть смысл, если это приложение для настольного компьютера. В этом случае печать трассировки стека не дает ничего, что злоумышленник еще не знает. В веб-приложении эта информация еще не доступна злоумышленнику. Вы действительно обнажая внутренние детали , которые сделают нападение намного проще.
Почему бы не обойти оба источника беспокойства и автоматически отправлять вам отчеты об исключениях? Таким образом, вам даже не нужно беспокоиться о людях, не сообщающих об ошибках.
источник
Взгляните на этот вопрос IT Security SE . Короче говоря, трассировка стека может дать злоумышленнику больше информации для работы. Чем больше информации у злоумышленника, тем больше вероятность, что он проникнет в вашу систему. Я бы не основывал свою безопасность на том факте, что следы стека всегда скрыты, но это также не означает, что вы должны передавать эту информацию злоумышленникам.
В любом случае вы можете получить большую часть преимуществ от правильной регистрации бэкэнда. Это немного менее удобно, но, вероятно, не стоит рисковать безопасностью вашей системы и расстраивать ваших клиентов.
источник
Вы можете не отображать трассировку стека по следующим причинам.
Безопасность
Отображение трассировки стека показывает возможные поверхности атаки для хакеров. Интранет не застрахован от взлома. Это плохо отразится на вас, если ваша сеть будет взломана из-за приложения, за которое вы отвечаете
Пользовательский опыт
Для лучшего восприятия пользователя трассировка слишком много информации. Да, правильная информация о состоянии ошибки должна регистрироваться и получать внимание инженера. Однако попросить пользователя сделать то, что вы можете автоматизировать, не будет лучшим для него.
Ваша репутация
Всякий раз, когда на веб-сайте отображается трассировка стека, она выглядит плохо. Большинство людей не имеют ни малейшего представления, что это такое, и это заставляет их чувствовать, что веб-сайт не дружелюбен для них. Для тех, кто знает, что это такое, это может указывать на то, что приложение не было хорошо продумано. Многие плохо написанные приложения слишком часто показывают трассировку стека, потому что это используется по умолчанию в некоторых средах, таких как ASP.Net.
источник
Краткий ответ: в экстрасети или на сайте имеет смысл не показывать трассировку стека. В интрасети преимущества показа стековой трассировки превосходят преимущества ее скрытия.
Длинный ответ:
То же самое случилось со мной на работе. Раньше я думал, что если приложение выходит из строя, оно должно сбоить с шумом.
Но потом они объяснили мне, что потенциальный хакер может извлечь много вещей из стековой трассировки.
Я думаю, что нет необходимости в доказательствах. Очевидно, что чем больше хакер знает о вашей платформе, тем лучше для него, и чем меньше хакер знает о вашей платформе, тем лучше для вас .
Также компании не хотят раскрывать, как хакер проник в их системы.
С другой стороны, это интрасеть , и я думаю, что преимущество немедленного знания о том, что пошло не так, без необходимости поиска в файле журнала, имеет большое преимущество, и риски безопасности, связанные с отображением трассировки стека внутри границ вашей компании, не так высоки, как они говорят.
источник
В любом поставляемом продукте ожидаемое количество ошибок этого типа должно быть равно нулю. Полезность этой информации для клиента равна нулю. В обоих случаях нет причин представлять трассировку стека. Если есть какой-то полезный контекст, он должен быть представлен удобным для пользователя способом, а не как трассировка стека.
С другой стороны, если фактическое число вхождений не равно нулю, вам крайне необходима эта информация, и вы не должны полагаться на то, что клиент отправит ее вам. 99,99% времени у них не будет. Вы должны установить систему исправления ошибок, которая автоматически передает информацию, только с одобрения клиента.
источник