Prevenir l'indexation et vérifier le referer
Un snippet MODX pour vérifier l'origine de la requête et effectuer une redirection conditionnelle

Fonction

Ce snippet pernet d'éviter l'indexation d'une ressource MODX et de vérifier l'en-tête HTTP referer indiquant la page de provenance.

Il peut être particulièrement utile pour empêcher l'accès direct ou via un moteur de recherche à une ressource, par exemple un fichier JSON appelé par une requête AJAX devant uniquement être accessible depuis le nom de domaine du site.

Code


/*************************************************
* check if resource is called from site_url
* if not > redirection
* by itchiweb.com
* if param redir not defined, redir to error page
* example: !xReferer? redir="http://itchiweb.com"
* example: !xReferer
**************************************************/

// get current page host
$referer = $_SERVER['HTTP_REFERER'];
$referer_parse = parse_url($referer);
// get modx context host
$parse = parse_url($modx->getOption('site_url'));//parse site_url
$site_url =  $parse['host']; 
// get redirect url param
$redir = $modx->getOption('redir', $scriptProperties, null);
// switch
if($referer_parse['host'] == $site_url || $referer_parse['host'] == "www".$site_url) {
	 //ne rien faire;
} else {
     if(isset($redir)){
        $modx->sendRedirect($redir);
     } else {
        $error_page_id = $modx->getOption('error_page');
        $redir = $modx->makeUrl($error_page_id);
        $modx->sendRedirect($redir);
     }
}

Utilisation

[[!xReferer? redir="http://itchiweb.com"]]

[[!xReferer]]

Exemples

[[!xReferer? redir="http://itchiweb.com/nan/"]]

Si le référent n'est pas itchiweb.com (lien Google, accès direct depuis le nagigateur), l'internaute sera redirigé vers l'URL http://itchiweb.com/nan/

[[!xReferer]]

Si le référent n'est pas itchiweb.com, l'internaute sera redirigé vers la page d'erreur de MODX.

Demo

CLiquez sur ce lien depuis cette page : https://www.itchiweb.com/data-sets/modxres.json

Essayez d'accéder à la resource en copiant/collant le lien
https://www.itchiweb.com/data-sets/modxres.json
dans la barre d'adresse de votre navigateur...