Protéger l’accès à une page avec un dyndns
Si votre hébergeur ne supporte pas les CRONs, vous pouvez profiter d'un NAS ou d'un routeur open source pour exécuter vos CRONs.
Dans mon cas j'utilise un NAS Synology qui fait appel à une page PHP qui lance la création d'un backup. Pour éviter que cette page soit accessible de partout j'ai décidé de protéger l'accès pour que seule une connexion provenant de chez moi puisse lancer cette exécution.
Problème : mon fournisseur internet (numericable) ne me fournit pas d'IP fixe, je n'ai donc pas de possibilité de filtrer avec un fichier .htaccess. En revanche, je dispose d'un DNS dynamique qui lui est toujours le même.
Pour y parvenir c'est très simple, j'ai créé un fichier ip.php :
<?php $ip = gethostbyname('votre.dyndns.com'); if($_SERVER['REMOTE_ADDR'] != $ip) { header("HTTP/1.0 404 Not Found"); echo "404 (not found)"; exit; } ?>
Ce bout de script permet de vérifier que l'IP correspondante au nom dyndns est identique à celle qui demande la page.
Il suffit maintenant de faire appel à ce fichier depuis votre page exécutant le backup :
<?php include 'ip.php'; echo exec('/var/backup/backup.sh >> /var/backup/backup.log'); ?>
Je vous publierai le contenu du fichier backup.sh dans un futur billet. Il est préférable que le script et le backup généré soient dans un répertoire non accessible depuis le web, en amont de "www" ou "htdocs" généralement, question de sécurité.
Simple mais pratique.
BM vous parraine en mode Premium chez iGraal.fr : 10 euros offerts à l'inscription :)Vous devriez me suivre sur Twitter : @xhark
Article original écrit par Mr Xhark publié sur Blogmotion le 17/02/2015 |
3 commentaires |
Attention : l'intégralité de ce billet est protégée par la licence Creative Commons