API, возвращающий исключение Java. Безопасно?

Oct 23 2020

Я просто хотел спросить, справедливы ли мои опасения.

Я понимаю, что API возвращать трассировку стека небезопасно. У меня похожая, но менее вопиющая ситуация, которую я пытаюсь оценить.

Есть ли также какой-то стандарт в отношении упаковки исключений Java в ответ 500? Например, отправка таких вещей, как «DataIntegrityViolationException», «NullPointerException» и т. Д., Но без трассировки стека.

Другими словами, когда возникает необработанное исключение, имя исключения отправляется обратно в ответе 500. Трассировка стека отсутствует, но мы можем сделать вывод на стороне клиента, если, например, запрос попытался изменить БД недопустимым способом.

В настоящее время я предупреждаю свою команду об этом и говорю им, что они должны внести свои ответы сервера в «белый список» (т.е. отправлять контент только в том случае, если у вас есть для этого сознательная причина). Я просто хотел знать, не трачу ли я на это их время.

Это хорошая идея?

Или это должно быть более общим, чем это?

Ответы

1 schroeder Oct 28 2020 at 00:05

Стандарт обработки ошибок для клиента - ничего не раскрывать о внутренней работе и предоставлять только то, что будет полезно для успеха пользователя.

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

Примеры OWASP просто указывают на наличие ошибки. И это стандарт. Любая информация, выходящая за рамки этого, должна иметь обоснование.