PHP, empêcher l'exécution d'un fichier à travers la session

220px-PHP-logoSi vous avez besoin pour empêcher l'accès direct à un fichier parce que vous devez être sûr qu'il est appelé localement et non à partir de votre site, vous êtes au bon endroit.

Imaginez que nous avons ce scénario:

fichier non index.php qui envoie les champs d'un formulaire à un second fichier function.php qui les traite et renvoie un résultat ou en effectuant un certain traitement. Le fichier function.php Il peut être appelé à partir du fichier index.php parce que ce même espace web mais aussi un URL à partir du même fichier ou à distance externe mais résident sur un autre à distance Web. Dans ce scénario à la fois les fichiers peuvent être accessibles à partir de l'extérieur, mais alors que le fichier index.php est l'interaction avec l'utilisateur devra entrer des données dans la forme, le fichier function.php est ce que la réception des données de formulaire, puis les traite du point de vue de la sécurité les plus faibles, mais le plus important.

Pour empêcher l'accès direct aux fichiers function.php nous pouvons adopter un stratagème simple mais efficace en utilisant des cookies de session:
ajouter à déposer index.php pour couronner les instructions suivantes:

<?php

// commence la session
session_start();

// l'enregistrement d'une valeur dans la session à code variable
$_SESSION['Code']= 1;
?>

ajouter à déposer function.php (et à tous les fichiers que nous voulons protéger) pour couronner les instructions suivantes:

<?php
// redémarrer la session
session_start();

//assurez-vous qu'il est réglé sur le code variable à la valeur attendue et si l'on veut dire que l'appel ne va pas par le fichier index.php mais d'une source non autorisée

si($_SESSION['Code']<>1) {
la(“Page non disponible”);
}

 

Tel que rapporté dans cet article ne sont pas la solution parfaite, mais est un excellent moyen parmi les possibles.