Question

J'ai un site Web qui récupère des données de certains fichiers PHP pour l'afficher sur le site Web.Cependant, pour protéger mes données à utiliser par d'autres personnes, je souhaite protéger mon fichier PHP appelé par des crawlers, bot, etc. pour recueillir des données.

Je l'ai empêché en vérifiant l'URL de référence, mais qui peut être facilement passée.Ainsi, y a-t-il un autre moyen de protéger mes données.Je souhaite que seul mon site Web puisse appeler à ces fichiers.

merci !!

Était-ce utile?

La solution 4

Comme suggéré par Davandand, j'ai finalement utilisé une technique d'authentification basée sur les cookies pour éviter d'appeler de PHP par d'autres sites Web.

Le serveur définit d'abord un code d'accès pour chaque client valide.Ce code d'accès est vérifié au début de mon fichier PHP.

Cookie est défini sur une limite maximale de 5 heures et de la cookie est détruite sur la fenêtre de la fenêtre.Cela fonctionne assez bien pour moi.

S'il vous plaît mentionner s'il y a des problèmes dans cette partie !!

Autres conseils

Ajouter Authentification HTTP de base en haut de votre fichier PHP:

if ( !isset($_SERVER['PHP_AUTH_USER']) || 
      !isset($_SERVER['PHP_AUTH_PW']) ||
      !($_SERVER['PHP_AUTH_USER'] == 'user' && $_SERVER['PHP_AUTH_PW'] == 'pw'))) {
    header('WWW-Authenticate: Basic realm="Mirkwood"');
    header('HTTP/1.0 401 Unauthorized');
    die();
}

Si vous avez Apache Web Server et dans le répertoire racine de votre site, vous créez un fichier .htaccess (DOT HTACCESS sans suffixe).

Essayez cette syntaxe pour empêcher l'accès à des types de fichiers spécifiques:

<FilesMatch "\.(htaccess|htpasswd|ini|php)$">
 Order Allow,Deny
 Deny from all
</FilesMatch>


Une autre solution est dans tous les fichiers PHP non index, vous pouvez inclure quelque chose comme ceci:

dans index.php, ajoutez une valeur d'accès comme ceci:

$access = 'my_value';

Dans tous les autres fichiers, incluez cette vérification avant même qu'un seul octet est résolu par PHP:

if(empty($access)) {
    header("location:index.php"); 
    die();
}

J'ai un site Web qui récupère des données de certains fichiers PHP pour l'afficher sur le site Web.

Déplacez les fichiers contenant les données en dehors de la racine du document.En supposant que les fichiers PHP soient simplement accessibles par un autre à l'intérieur du docroot.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top