2015-04-09 2 views
2

я нашел несколько мест на Интернете, где они упоминают, что с помощью методаПочему printStackTrace() представляет угрозу безопасности для мобильных приложений (Android)?

Throwable.printStackTrace() 

в вашем Android приложения создает угрозу безопасности (и это тоже плохая практики кодирования.) Я хотел бы понять, почему это безопасность риск? Что может сделать злоумышленник, используя информацию, предоставленную

e.printStackTrace(); 

где e имеет тип Исключение, например?

+2

«Я нашел несколько мест в Интернете» - тогда, пожалуйста, подумайте о предоставлении ссылок на эти места. – CommonsWare

+0

См., Например, пункт 1 в вопросе по адресу http://stackoverflow.com/questions/7469316/why-is-exception-printstacktrace-considered-bad-practice и 2-й ответ. –

+0

Это не говорит о том, что 'printStackTrace()' "представляет угрозу безопасности". В нем говорится, что «отображение трассировки стека для конечного пользователя может привести к потенциальному риску для безопасности». Пользователи не могут видеть трассировки стека на Android 4.1+ без инструментов разработки, и если они смогут их использовать, есть много других вещей, которые они могут сделать для приложения, которое не имеет никакого отношения к трассировке стека. – CommonsWare

ответ

0

Ну, как разработчик, вы никогда не захотите, чтобы конечный пользователь понял, что происходит в конце вашего приложения. Следующие моменты, о которых я могу сейчас подумать.

  • Стек трассировки никогда не должен быть Запись видна конечным пользователям

  • Генерирование трассировки стека является относительно трудоемким процессом

  • Многие рамки протоколирования доступны для этого

  • Печать трассировки стека не является обработкой ошибок. Он должен сочетаться с другим протоколом регистрации и исключением .

Я использовал ту же ссылку, чтобы ответить на ваш вопрос, поскольку оба связаны!

+0

Спасибо за ваши усилия, но в отношении первого элемента в вашем списке у меня все еще есть вопрос. –

+0

На самом деле, почему вы должны показывать трассировку стека конечным пользователям? Если вы хотите регистрировать информацию в случае возникновения проблемы - большинство инструментов отчетности о сбоях (например, Crashlytics) позволяют делать это в любом случае. Альтернативно, если вы хотите дать конечному пользователю какое-то объяснение - текстовое сообщение + код ошибки кажется лучшим решением для меня (так как большинство пользователей не поймут, что такое трассировка стека). Я не говорю, что показать трассировку стека - огромная уязвимость, это просто кажется субоптимальным. –

+0

Да, я согласен, но что, если вы забудете о printStackTrace в своем Android-коде? И приложение может действительно сбой и показать трассировку стека. Что плохого может сделать злоумышленник с этой информацией? Я имею в виду, что в любом случае кто-то может перепрограммировать приложение, а затем он может свернуть его. –

0

Атакующий может уже загрузить APK:
см: https://github.com/Lekensteyn/apk-downloader

и декомпилировать его, чтобы получить исходный код:
см: Is there a way to get the source code from an APK file?

Таким образом, если функция безопасности полагается на злоумышленника, не зная, как ваш код работает, у вас плохая безопасность.

«Системная безопасность не должна зависеть от секретности реализации или ее компонентов». - https://en.wikipedia.org/wiki/Security_through_obscurity

Скрытие стоп-кадра не является эффективной мерой безопасности.

+0

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

+0

Это как сказать, если вы выпрыгнете из самолета без парашюта, безопаснее не курить сигарету, потому что это плохо для вас. Это справедливо, но это не соответствует тому, что вы будете мертвы, прежде чем это имеет значение. Таким образом, скрытие стека, похоже, не имеет такой сигареты. Может быть, тебе немного лучше, но ненадолго. – z5h

Смежные вопросы

 Смежные вопросы