2009-11-09 12 views
1

J'ai utilisé HTML purifier pour éliminer tout élément suspect provenant de mon éditeur WYSIWYG public. Le code HTML entrant est également affiché dans la partie publique du site Web.Utilisation de HTML Purifier pour arrêter les liens vers son propre site

J'ai autorisé les liens, et je lie aussi automatiquement les URL en texte clair (en utilisant le purificateur).

Existe-t-il un moyen d'autoriser les liens externes, mais interdit les liens vers le même domaine? Par exemple mon domaine est www.example.com

http://www.google.com seront liés.

http://www.example.com/logout/ ne seront pas liés.

Je cherche à minimiser toute interférence d'utilisateurs malveillants. Devrais-je simplement faire en sorte que ma connexion se termine par une action de formulaire avec une paire clé/valeur POST pour empêcher que cela se produise?

Merci

Répondre

3

Votre login/le formulaire doit toujours être de POST uniquement.

Ne vous inquiétez pas d'une valeur de vérification, mais il s'agit d'un problème de sécurité assez important - toutes les transactions qui changent l'état du serveur Web doivent être des requêtes POST. Vous ne devez JAMAIS autoriser http://example.com/object?action=delete, ni aucune de ses variantes. PHP encourage les mauvaises pratiques dans ce domaine, mais vous devez TOUJOURS utiliser l'un ou l'autre et NE JAMAIS autoriser les deux.

Si vos utilisateurs peuvent écrire des formulaires dans votre éditeur WYSIWYG, vous avez des problèmes beaucoup plus importants.

Pour répondre à votre question initiale, de désactiver les liens internes, utilisez URI.HostBlacklist et assurez-vous de mettre URI.MakeAbsolute:

http://htmlpurifier.org/live/configdoc/plain.html#URI.HostBlacklist

+1

Toutes les URL qui effectuent une action autre qu'un simple affichage des données devrait toujours être POST uniquement. –

+0

+1 Merci pour la réponse. Je serais quand même intéressé de savoir si je pourrais empêcher les gens de se connecter à mon domaine depuis le purificateur HTML. – alex

+0

Modifié pour ajouter la réponse à cette question. –