Interdire le passage de fonction dans une url

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 791 fois - Téléchargée 16 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
Messages postés
256
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
30 mai 2016
4
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.
Messages postés
256
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
30 mai 2016
4
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.
Messages postés
1293
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
21 mai 2015

Autant faire un htaccess...

@ tchaOo°
Messages postés
6
Date d'inscription
samedi 10 octobre 2009
Statut
Membre
Dernière intervention
21 février 2019

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 ?

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.