Générer des liens temporaires via .htaccess

Générer des liens temporaires via .htaccess - PHP - Programmation

Marsh Posté le 22-08-2011 à 21:57:25    

Bonjour
 
Connaissez vous un système pour sécuriser un lien ?  
 
Je m’explique: en fait je voudrais proposer un fichier sur mon site mais je ne voudrais pas qu’il soit possible de connaitre le lien exact de ce fichier. Je pense bien qu’il soit possible de réaliser ceçi avec un .htaccess et des rewritting mais je n’y connais rien.
 
Ce que je recherche c’est bien évidemment un système qui gèrerai des liens dynamiques et qui permettrait de choisir pendant combien de temps le lien créé en question serait valable. (24h me semble pas mal)
 
Merci de votre aide et merci de me confirmer qu'en mettant le "vrai" lien dans un fichier html il apparaitra le lien crypté au visiteur et non le lien réel.
 
Erwin

Reply

Marsh Posté le 22-08-2011 à 21:57:25   

Reply

Marsh Posté le 23-08-2011 à 13:17:48    

L'url rewriting est utilisé à des fins SEO.
 
Quel est l'intérêt de masquer ainsi tes liens ?
Une fois le lien masqué connu, je pourrais le télécharger autant de fois que je veux et faire partager à mes potes.
 
Pas que je critique, mais j'aimerais connaitre la finalité ? :O


---------------
Directeur Technique (CTO)
Reply

Marsh Posté le 23-08-2011 à 15:24:33    

En fait ce que je voudrais c'est la chose suivante:
on veut télécharger mon fichier, le lien qui apparait en clair est un lien généré du style www.monsite.com/mesfichiers/DeFrSX2
24h plus tard ce lien n'est plus valide et il est donc impossible de partager ce lien.
 
Je précise que tout ceci aurait lieu dans une zone sécurisé, une zone membre et que donc il est actuellement impossible d'accéder à cette page si l'on a pas payé pour être membre.
 
Voila en espérant avoir été plus clair.
 
Merci de votre aide.

Reply

Marsh Posté le 23-08-2011 à 18:35:01    

une piste :

 

tu stocke une chaine aleatoire comme DeFrSX2 en base de données, avec une date limite et ton fichier à autoriser,

 

en htaccess tu met une regle qui redirige tous les www.monsite.com/mesfichiers/**** vers www.monsite.com/mesfichiers/distributeur.php?id=*****,

 

et ton fichier distributeur.php :

 
Code :
  1. $id = $_GET['id'];
  2.  
  3. /* verif en bdd si id est valable par rapport à l'heure limite */
  4. /* si oui : */
  5. $fichier = $mysql->fichier;
  6. header('qui va bien selon ton fichier à donner, image, pdf, ...');
  7. require($fichier);
  8. /* si non : */
  9. die('expiré');


Message édité par tomsoft le 23-08-2011 à 18:35:10
Reply

Marsh Posté le 23-08-2011 à 23:02:02    

Ah ouais pas bête. Mais ce que tu me propose c'est si je voulais que le lien soit valable jusqu'à une certaine date, non ? Moi ce que je veux c'est qu'un lien soit généré tous les 24h et que le précédent ne soit plus valable et ainsi de suite.

Reply

Marsh Posté le 24-08-2011 à 08:30:13    

Et avec les pistes que je t'ai donné t'en ai pas capable ? Pas possible de trouver une solution ? Alors arrêtes le développement !

Reply

Marsh Posté le 24-08-2011 à 13:00:27    

C'est pas faux.
 
Bon je précise certains points pour notre ami.
 
Tes rewrites sont soit dans un .htaccess, soit dans un vhost.
Comme tu sembles débuter en PHP, on va admettre que tu utilises la solution la moins perf (mais néanmoins la plus flexible car ne nécessitant pas de redémarrer le serveur) et/ou sur un hébergement mutualisé, autrement dit le .htaccess.
 
Comme n'importe quel fichier, le .htaccess est un fichier.
Ca veut dire qu'il peut être généré.
 
Donc si ton lien est périmé d'après tes infos en base (date de dernière génération du lien hashé), tu prend le contenu du htaccess, et via un preg_replace, tu remplaces la rewrite correspondante en faisant en sorte que ton lien hashé réécrit soit le hash (nom de fichier + date('c')). Tu insères ça dans ton htaccess avec un file_put_contents(monchemin, moncontenu, LOCK_EX) et pouf, miracle, l'ancien lien ne marche plus et seul le nouveau est opérationnel.


Message édité par CyberDenix le 24-08-2011 à 13:03:22

---------------
Directeur Technique (CTO)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed