Vérifier les urls dans vos formulaires
Du coté PHP
|
|
Vérifier les urls dans vos formulaires
- url profonde de niveau 1 non autorisée
- url profonde sur plusieurs niveaux non autorisée
- gestion du sous domaine :www
- vérifie si l'url n'est pas un lien mort
Il existe de multiples façons pour un utilisateur de rentrer des urls erronées dans un formulaire. Si la meilleure manière est de vérifier manuellement à chaque validation, j'ai créé des codes sources PHP/Regex qui devraient vous aider à économiser votre temps.
Je me suis d'abord mis à la place d'un 'hackeur' et je me suis dit que ma première idée serait de mettre une url profonde, c'est à dire une url de type : http://www.monsite.com/dossier/pages. Pour enlever ce problème, nous allons prendre l'URL, la placer dans une variable et considérer l'URL comme une chaîne de travail pour lui appliquer un masque. Si la capture de la chaîne correspond au masque, nous retournons un résultat positif avec un message d'erreur.
- url profonde sur plusieurs niveaux non autorisée
- gestion du sous domaine :www
- vérifie si l'url n'est pas un lien mort
Il existe de multiples façons pour un utilisateur de rentrer des urls erronées dans un formulaire. Si la meilleure manière est de vérifier manuellement à chaque validation, j'ai créé des codes sources PHP/Regex qui devraient vous aider à économiser votre temps.
Je me suis d'abord mis à la place d'un 'hackeur' et je me suis dit que ma première idée serait de mettre une url profonde, c'est à dire une url de type : http://www.monsite.com/dossier/pages. Pour enlever ce problème, nous allons prendre l'URL, la placer dans une variable et considérer l'URL comme une chaîne de travail pour lui appliquer un masque. Si la capture de la chaîne correspond au masque, nous retournons un résultat positif avec un message d'erreur.
|
.01 .02 .03 .04 .05 .06 .07 |
<?php $url = ""; // url if (ereg("^(http://(www\.-)?[^/]+/[^/]+)",$url)) { echo 'URL profonde non autorisé'; } ?> |
Mais je veux être un 'hackeur perfide' et vraiment essayer de rentrer mon url profonde dans ce maudit formulaire. Le premier code fait un masque sur une url profonde avec seulement un sous dossier. Je vais maintenant essayer de hacker plus fort en mettant une url de ce type : http://www.monsite.com/dossier1/dossier2/dossier3/dossier4/dossier5/pages. Pour contrer cela, nous allons reprendre la même regex et la compléter en lui permettant de prendre un nombre illimité de sous dossier.
|
.01 .02 .03 .04 .05 .06 .07 |
<?php $url = ""; // url if (ereg("^(http://(www\.-)?[^/]+/[^/]+/[^/]*)'",$url)) { echo '<br />URL profonde non autorisé'; } ?> |
Un des standards du Net est la présentation d'une url avec son sous domaine à l'état naturel : www. L'url présente bien sous la forme : http://www.monsite.com/ et moyennement sous la forme http://monsite.com/. Pour enlever le cas ou l'utilisateur oublierais de mettre le www, nous reprendrons le même principe de masque:
|
.01 .02 .03 .04 .05 .06 .07 |
<?php $url = ""; // url if (ereg("http://([[:alnum:]])+\.([a-z]{2,4}/?)$",$url)) { echo '<br />Il vous manque votre sous domaine: www'; } ?> |
Le dernier problème majeur est de voir si l'url que l'utilisateur a posté est valide. Rentrer un lien mort n'apporte rien. Il existe des codes sources PHP mais ceux ci ont l'inconvénient d'être très gourmand en ressource et peuvent faire planter votre page de soumission si les fatidiques 30 secondes sont dépassés. La solution que j'apporte est pertinente mais elle-même a ses inconvénients. Je vais chercher le nombres de pages indexées dans Google pour savoir si le site existe. l'avantage est le temps machine, peu gourmand en ressource et un résultat toujours pertinent. L'inconvénient est d'avoir un site non placé dans l'index de Google, et il est peu recommandé d'interroger Google à travers des requêtes internes. A utiliser avec modération. Mais Google peut t-il nous reprocher de faire le même travail que lui? Automatiser les taches ;)
|
.01 .02 .03 .04 .05 .06 .07 .08 .09 .10 .11 .12 .13 .14 .15 .16 .17 |
<?php $url = ""; // url // enleve le http:// $bl_url = str_replace("http://","",$url); // url de google $url_link_GG = 'http://www.google.fr/search?hl=fr&q=link%3A'.$bl_url.''; // prend le fichier entier $BL_GG = @file_get_contents($url_link_GG); // trouve le nombre de Back Link retourné sur la page de Google preg_match('`<b>([0-9 ]+)</b> liés à`', $BL_GG, $BL); $bre_bl = $BL[1]; if ($bre_bl==''OR $bre_bl==0) { echo 'votre URL ne correspond pas à nos critères'; } ?> |
Vous pouvez appliquer ces codes sources à vos formulaires (forums, livre d'or, annuaires..) les résultats vous surprendrons et vous économiserez un temps précieux tout en responsabilisant vos utilisateurs discrètement.
Ajouter un commentaire
Quelques articles qui devraient vous intéresser










Connexion
Les derniers!

