2010-02-05 5 views
4

Dans un processus de formulaire en plusieurs étapes, je reçois une URL en tant que champ de formulaire.Assainissement pour l'URL utilisée dans l'en-tête: Emplacement?

Après le traitement, mon script PHP redirige vers cette adresse en utilisant header("Location: ...");

Outre la possibilité d'être mal utilisé comme un service de redirection pour les sites porno pour générer des liens inoffensifs prospectifs dans E-Mails (Ouvrir Redirect, qui peut être aidé en faisant correspondre l'URL au domaine local), y a-t-il des dangers de piratage/exploitation à prendre en compte dans ce processus? Une des choses qui me vient à l'esprit est la contrebande de nouvelles lignes dans l'URL, ce qui pourrait ouvrir la possibilité d'envoyer des en-têtes arbitraires au client.

+1

Le terme pour cela est Open redirect. Voir: http://www.owasp.org/index.php/Open_redirect –

+0

Merci @Eric pour l'introduction du terme. –

+0

Non désolé, je ne sais pas quand il a été changé. Il y a un an ou deux, si vous n'êtes pas corrigé par une attaque header(), vous avez de plus gros problèmes sur vos mains car les pires vulnérabilités ont été corrigées depuis. – rook

Répondre

3

Dans les anciennes versions de PHP, vous deviez vous inquiéter de l'injection CRLF qui est \ r \ n. Ceci est une "vulnérabilité de fractionnement de la réponse en-tête". Si vous dépouillez ces personnages, vous ne devriez pas avoir à vous inquiéter. Dans la dernière version de PHP, la fonction header() est sûre, et s'occupera automatiquement de \ r \ n pour vous.

+0

À votre santé @Michael. Savez-vous de quelle tête cette version a changé? –