Interdire le passage de fonction dans une url

1/5 (31 avis)

Snippet vu 6 971 fois - Téléchargée 17 fois

Contenu du snippet

petite fonction toute simple qui permet d'interdire le passage de paramètre supplémentaire dans une url, cela a pour avantage de contribuer à sécurisé un site en plus des autres mesures, cette fonction est surtout interressante si vos url sont propres c'est à dire rewriting, l'utilisation de la fonction meta refresh est dans ce qu'à si obligatoire car d'autre fonction php étant utiliser avant ce script, header location ne peu fonctionner

Source / Exemple :


$url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$chaine = $url; 
$delimiteur = ".be/"; 
$tab = explode($delimiteur, $chaine); 
$extension = $tab[count($tab)-1];
if($extension)
{
echo '<meta http-equiv="refresh" content="0;URL=l'adresse de votre choix">';
}

Conclusion :


le délimiteur de l'url ces .be, libre à vous d'utiliser l'extension désiré

A voir également

Ajouter un commentaire Commentaires
cs_christophedlr Messages postés 262 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 26 juillet 2022 4
30 mai 2016 à 14:58
Surtout qu'il parle de l'URL Rewriting, donc son code n'a aucun intérêt.

D'ailleurs en URL Rewriting, on utilise forcément un système de routing, soit un moteur soit un truc bricolé à la main. Soit le système travaille donc avec les $_GET comme je l'ai fait sur mon moteur, soit avec d'autres trucs comme le fait Symfony Routing.

L'exécution d'un code mis dans le $_GET ne se fait que si le paramètre en question est appelé, ainsi prend un code qui vérifie jamais la présence d'un $_GET, il est déjà sécurisé puisque le paramètre n'est jamais vérifié et aucun traitement donc de réaliser dessus.

En URL Rewriting, on peut déjà bloquer les GET et même les POST il me semble (a vérifier), en revanche il est con de s'en priver ; si les grands moteurs comme celui de Symfony permettent de travailler avec en plus de l'URL Rewriting c'est pas pour rien.

C'est au code derrière qui traite les données, à vérifier que c'est quelque d'attendus. Si on te fait par exemple : http://test.com/index.php?module=http://test.com/jecassetout.php et que tu fais un include du paramètre module sans avoir rien vérifier derrière, tu as un soucis de sécurité. Si maintenant le paramètre est vérifié, authentifier et rejeter au besoin (donc non traité et donc non exécuté), tu as déjà la sécurité attendue sans un code supplémentaire qui ne fait pas son office et te prive d'une fonctionnalité intéressante.
cs_christophedlr Messages postés 262 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 26 juillet 2022 4
30 mai 2016 à 14:50
Je m'incruste dans cette conversation datant de 3 ans, parce que je trouve l'intervention d'Emilia très pertinente.

Quand tu ajoutes un paramètre à l'URL et appui sur entrer comme tu le dis, la page est rechargée puisqu'une nouvelle requête est envoyée au serveur. Donc quand tu dis et je cite :

"il est évident que tout le code se trouvant après s'exécute et que la page est chargé et envoyer dans le navigateur, le but ces que une fois la page chargé, il est impossible d'entrée de nouveaux paramètres dans la barre d'adresse en plus de l'url et de faire enter pour tenté une attaque, l'internaute sera alors redirigé vers l'adresse choisie, ces but de se code et sa marche, mais comme tu l'Einstein du php forcément tout le monde a tort sauf toi"

C'est ton post numéroté 20 d'ailleurs. Non, tu te trompes car comme tu envoi une nouvelle requête au serveur, forcément le code est de nouveau exécuté mais cette fois avec les infos données en URL que ton code est sensé empêché.

Le seul moyen est de rajouter un exit() là où tu as détecté et mis ton meta, cela stoppe alors l'exécution du code, et le mauvais code ne sera jamais exécuté.

C'est ce que Emilie à essayer de t'expliquer.
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
19 mai 2015 à 20:18
Autant faire un htaccess...

@ tchaOo°
janhsh Messages postés 6 Date d'inscription samedi 10 octobre 2009 Statut Membre Dernière intervention 21 février 2019
23 janv. 2015 à 02:15
Nombreuses erreurs de sémantiques

1:
Pourquoi en ligne 2
$chaine = $url; 
?
Cette opération ne sert à rien, ,
Il suffit d'écrire en ligne 4
$tab = explode($delimiteur, $url); 
et in peut se passer de la ligne 2 et le code est déjà plus propre.

2:
Ce code ne fonctionnera pas dans tous les cas. Lorsque l'explorateur ne permet pas de cookie de session, PHP ajoute automatiquement le paramètre PHPSESSID à l' URL.

De plus,
"INTERDIRE LE PASSAGE DE FONCTION DANS UNE URL " ce titre n'a aucun rapport avec le contenu du script: Sait tu au moins ce qu'est une fonction ?
michael33512
10 mai 2013 à 16:01
inutile de perdre notre temps car on ne tombera pas d'accord, si tu va sur mon site et que tu rajoute n'importe quoi dans l'url tes redirigés et comme je l'aie dit ça vient en complément des autres mesures habituel. ça nécessite aussi des url propre rewrité avec le htaccess pour que aucun paramètre n'apparaissent dans l'url, pour le reste pense en ce que tu veux
Afficher les 31 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.