2013-09-02 2 views
0

J'ai une question sur les routes et la sécurité.Laravel 4 Routes et problèmes de sécurité

J'ai besoin de protéger les fichiers dans le dossier public html. Si l'utilisateur essaie d'accéder à n'importe quel itinéraire dans mon projet j'ai quelques traitements pour vérifier si l'utilisateur est connecté ou non et le rediriger pour corriger l'itinéraire. Ce que je ne peux pas faire pour le moment est de protéger l'accès aux fichiers dans le dossier public html même que www.xpto.com.br/file.html si l'utilisateur n'est pas connecté la page est exposée à l'utilisateur. Vous avez un moyen de vérifier si l'utilisateur est connecté, mais pas dans le fichier HTML?

Merci d'avance!

Répondre

1

Si vous avez des fichiers dans la zone public_html, il est très difficile de les protéger et de restreindre leur accès. La meilleure option est de cacher les fichiers dans un répertoire sécurisé, en dehors de public_html - et d'utiliser la fonction php readfile() pour «servir» les fichiers aux utilisateurs une fois que vous avez confirmé qu'ils peuvent accéder à un fichier spécifique.

Quelque chose comme ça fera l'affaire comme un exemple:

function user_file($file_name = "") 
{ 
    if ($file_name) 
    { 
     // Ensure no funny business names to prevent directory transversal etc. 
     $file_name = str_replace ('..', '', $file_name); 
     $file_name = str_replace ('/', '', $file_name); 

     // now do the logic to check user is logged in 
     if (Auth::check()) 
     { 
       // Serve file via readfile() - we hard code the user_ID - so they 
       // can only get to their own images 
       readfile('../your_app/samples/'.Auth::user()->id.'/'.$file); 
     } 
    } 
} 
+0

Merci pour la réponse. Je vais essayer cette solution et poster des commentaires! –

+0

Cela a fonctionné comme un charme! –

+0

Si cela a fonctionné, veuillez marquer la réponse comme acceptée. Merci – Laurence