Comment fixer le HTTP Response splitting de la vulnérabilité ESAPI

après une récente findbugs (FB) de l'exécuter se plaint d'un: à la Sécurité "HTTP Response splitting" vulnérabilité Le code suivant déclenche:

String referrer = req.getParameter("referrer");
 if (referrer != null) {
  launchURL += "&referrer="+(referrer);
 }
resp.sendRedirect(launchURL);

Fondamentalement, le "référent" http paramètre contient une url, à qui, quand on clique sur un bouton de retour dans notre application, le navigateur renvoie. Il est ajouté à l'url en paramètre. Après un peu de recherche, je sais que j'ai besoin de désinfecter l'url de provenance. Après un peu plus de recherche, j'ai trouvé le esapi projet qui semblent offrir ce type de fonctionnalité:

//1st canonicalize
import org.owasp.esapi.Encoder;
import org.owasp.esapi.Validator;
import org.owasp.esapi.reference.DefaultEncoder;
import org.owasp.esapi.reference.DefaultValidator;
[...]
Encoder encoder = new DefaultEncoder(new ArrayList<String>());
String cReferrer = encoder.canonicalize(referrer);

Cependant, je n'ai pas trouver comment détecter par exemple, le code jscript ou d'autres choses qui n'appartient pas à une url de référence. Alors, comment puis-je atteindre avec esapi?

J'ai essayé:

Validator validator = new DefaultValidator(encoder);
validator.isValidInput("Redirect URL",referrer,"HTTPParameterValue",512,false);

cependant cela ne fonctionne pas. Ce dont j'ai besoin est une fonction qui se traduit par:

http://www.google.com (ok)

http://www.google.com/login?dest=http://google.com/%0D%0ALocation: javascript:%0D%0A%0D%0Aalert(document.cookie) (pas ok)

Ou est-ce assez pour appeler la déclaration suivante?

encoder.encodeForHTMLAttribute(referrer);

Toute aide appréciée.

OriginalL'auteur Lonzak | 2013-05-08