/ / Filtrage CSRF à l'aide de GWT RequestFactoryServlet - gwt, servlet-filters, csrf, requestfactory

Filtrage CSRF à l'aide de GWT RequestFactoryServlet - gwt, filtres de servlet, csrf, requestfactory

J'implémente un système basé sur des jetons pour empêcher les attaques CSRF dans mon application GWT basée sur Request Factory.

Pour implémenter mon filtre côté serveur, j'ai remplacé la méthode doPost sur RequestFactoryServlet, ainsi:

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {

String sessionToken = CsrfTokenManager.getToken(request.getSession());
String requestToken = request.getHeader(CsrfTokenManager.CSRF_TOKEN_NAME);
if (sessionToken.equals(requestToken)) {
super.doPost(request, response);
} else {
logger.error(String.format("Received unsafe http request [%s]", getFullRequest(request)));
response.sendError(401,"Unsafe HTTP Request");
}
}

Cela fonctionne en ce sens qu'il ne permet pas de traiter les demandes sans jeton valide et que mes journaux contiennent un message approprié, mais l'erreur que je récupère est une erreur de serveur interne 500 plutôt qu'un 401.

Quelqu'un peut-il nous expliquer pourquoi cela est et ce que je dois faire différemment?

Réponses:

0 pour la réponse № 1

Il y a très peu d'informations fournies par vous sur la raison de l'erreur 500 du serveur interne. Veuillez partager la trace de la pile d'exceptions (une erreur de 500 serveurs internes en aurait généré une).

Évitez également d'implémenter un modèle personnalisé s'il n'est pas basé sur la recommandation GWT. Lisez cette requête stackoverflow sur CSRF avec RequestFactory.