API que retorna exceção Java. Seguro?
Queria apenas perguntar se minhas preocupações aqui são válidas.
Estou ciente de que não é seguro para a API retornar um rastreamento de pilha. Tenho uma situação semelhante, mas menos flagrante, que estou tentando avaliar.
Existe também algum padrão em relação ao empacotamento de exceções de java em uma resposta 500? Por exemplo, enviando de volta coisas como "DataIntegrityViolationException", "NullPointerException" etc., mas sem o rastreamento de pilha.
Em outras palavras, quando ocorre uma exceção não tratada, o nome da exceção é enviado de volta na resposta 500. Não há rastreamento de pilha, mas podemos inferir no lado do cliente se, por exemplo, a solicitação tentou alterar o banco de dados de forma inválida.
No momento, estou avisando minha equipe contra isso e dizendo a eles que devem "colocar na lista branca" as respostas do servidor (ou seja, apenas enviar conteúdo se você tiver um motivo consciente para fazê-lo). Só queria saber se estou perdendo tempo com isso.
isso é uma boa ideia?
Ou deveria ser mais genérico do que isso?
Respostas
O padrão no tratamento de erros para o cliente é não expor nada sobre o funcionamento interno e apenas fornecer o que será útil para o usuário ter sucesso.
O conteúdo da mensagem de erro Java não ajuda o usuário. O que você acaba fazendo é expor a lógica do código, que pode ser usada contra você por um usuário mal-intencionado.
Os exemplos do OWASP são simplesmente para afirmar que há um erro. E esse é o padrão. Qualquer informação além dessa precisa ter uma justificativa.