#java #client #stack-trace #nullpointerexception
Вопрос:
Я изучаю Java уже около месяца и не очень хорошо знаком с ситуацией клиент/сервер, подобной этой.
В основном я столкнулся с ситуацией, когда наше клиентское программное обеспечение java (графический интерфейс) отображало всплывающее окно nullpointerexception, но на стороне клиента не было трассировки стека. Кто-то должен был пойти проверить серверную сторону на наличие трассировки стека.
Мой вопрос в том, не должна ли клиентская сторона также получать эту ценную информацию? Являются ли подобные ситуации нормальными, если обоснованием является то, что нужна только одна копия трассировки стека?
Ответ №1:
Не совсем. Не рекомендуется показывать клиенту, как работает ваше приложение сзади. В основном по соображениям безопасности. В вашей трассировке стека отображаются все вызываемые объекты, методы и, если они скомпилированы с отладочной информацией, даже строки. Это слишком много информации для клиента, ее можно хранить на сервере.
Это среди SQL-инъекций, перекрестных сценариев и других, которые я не могу вспомнить, неправильная обработка исключений является уязвимостью безопасности.
РЕДАКТИРОВАТЬ: Вот другие уязвимости ( хотя я не вижу этой в списке 🙁 )
http://en.wikipedia.org/wiki/Vulnerability_(вычислительная техника)
Ответ №2:
Клиенту нужно знать только то, что ему нужно знать. Во многих случаях совершенно нормально не показывать никаких следов стека на вашем клиенте. Ваши пользователи должны получать четкие сообщения об ошибках, но их не волнует трассировка стека.
Для целей отладки трассировка стека, как правило, в любом случае теряется, приложение выдает ошибки, пользователи перезапускают его, и никаких исключений нет, поэтому, если вам нужно знать об ошибках, используйте структуру ведения журнала.