2
votes

Neutralisation incorrecte des séquences CRLF dans les en-têtes HTTP

J'ai exécuté l'analyse Veracode sur mon projet et cela m'a donné un problème d'ID 113 CWE sous le fractionnement de la réponse HTTP. J'ai essayé de résoudre le problème avec leurs recommandations, mais cela n'a pas fonctionné. Par exemple, le code

res.sendRedirect(req.getContextPath() + redirectURL);

ci-dessus provient de l'un des fichiers. Et rapport indiquant une erreur à la ligne

try
    {
        String selNhid = req.getParameter("selNhid");
        String redirectURL = "/nhwhoods?action=membersNH&selNhid="+selNhid;
         res.sendRedirect(req.getContextPath() + redirectURL);
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }

Des suggestions, comment résoudre le problème?


1 commentaires

qu'est-ce que vous avez essayé qui n'a pas fonctionné?


3 Réponses :


0
votes

Cela peut être corrigé en utilisant la bibliothèque ESAPI 2.1.0.1 avec:

import org.owasp.esapi.ESAPI;

ESAPI.httpUtilities().setHeader(response, param, value);
ESAPI.httpUtilities().addCookie(response, cookie);


0 commentaires

0
votes

Que diriez-vous simplement de supprimer les séquences CRLF du paramètre redirectURL, comme le suggère le message d'erreur?

Un simple .replaceAll ("[\\ r \\ n] +", "") devrait le faire.


0 commentaires

0
votes

Il manque un encodage d'URL pour le selNhid.

String redirectURL = "/nhwhoods?action=membersNH&selNhid="
        + URLEncoder.encode(selNhid, StandardCharsets.UTF_8);

Ce qui précède suppose que vous travaillez avec UTF-8. Désormais, le contenu malveillant sera désarmé en tant que% XX octets.


0 commentaires