Maison >cadre php >Laravel >Comment empêcher le téléchargement de Laravel

Comment empêcher le téléchargement de Laravel

PHPz
PHPzoriginal
2023-04-21 10:04:46628parcourir

À l’ère de l’information, il existe inévitablement des situations où les données doivent être protégées. Pour les applications Web, l'une des mesures de sécurité de base consiste à empêcher les utilisateurs ou les programmes illégaux de télécharger les fichiers spécifiés.

Dans le framework Laravel, la méthode pour empêcher le téléchargement de fichiers est relativement simple. Cet article présentera plusieurs façons de protéger correctement vos fichiers afin de rendre votre site Web plus sécurisé et d'éviter d'être attaqué par des pirates.

1. Utilisez la méthode de routage de Laravel

Dans Laravel, vous pouvez utiliser le routage pour contrôler quels fichiers peuvent être téléchargés et lesquels ne peuvent pas être téléchargés.

Étape 1 – Créer un contrôleur

Créez un nouveau contrôleur dans le répertoire app/Http/Controllers. Nous utilisons la commande suivante :

php artisan make:controller DownloadController

Elle générera un nouveau contrôleur dans le dossier Controllers :

<?php
namespace App\Http\Controllers;

class DownloadController extends Controller
{
    //
}

Étape 2 – Créer une route

Nous pouvons appeler la méthode dans DownloadController avec la route suivante :

Route::post(&#39;/download/{file_name}&#39;, &#39;DownloadController@downloadFile&#39;)->name('download.file');

Étape 3 – Créer un téléchargement Méthode

L'étape suivante consiste à créer une nouvelle méthode pour le DownloadController afin qu'il puisse être appelé depuis la route GET.

<?php
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Response;

class DownloadController extends Controller
{
    public function downloadFile($fileName)
    {
        $file = Storage::disk(&#39;public&#39;)->get($fileName);

        return Response::download($file, $fileName);
    }
}

Maintenant, vous pouvez saisir l'adresse URL suivante dans le navigateur Web pour tester le programme :

http://127.0.0.1:8000/download/before-download-test-file.txt

2. Méthode utilisant la classe File

Cette méthode utilise la fonction file_get_contents() de PHP, qui a la capacité d'accéder aux fichiers et la fonction pour lire son contenu.

Route::get('/download', function(){
    $file = public_path()."/test.zip";
    $headers = array(
              'Content-Type: application/octet-stream',
            );
    return Response::download($file, 'test.zip', $headers);
});

3. Lire le fichier directement

La troisième méthode est la méthode la plus courante. L'idée de base est de lire le fichier directement dans la mémoire et de l'envoyer au client.

Route::get('/download', function(){
    $file = public_path()."/test.zip";
    $headers = array(
              'Content-Type: application/octet-stream',
            );
    return Response::make(file_get_contents($file), 200, $headers);
});

Résumé

Concernant la façon d'empêcher le téléchargement de fichiers dans Laravel, vous avez le choix entre plusieurs calibres. Initialement, le routage peut être utilisé pour contrôler quels fichiers peuvent et ne peuvent pas être téléchargés. Au-delà de cela, il existe deux méthodes standard : utiliser la classe File de Laravel (file_get_contents()) ou lire directement le fichier. Assurer la sécurité de votre site Web est crucial en matière de protection des fichiers et de sécurité des téléchargements, et si elles sont mises en œuvre correctement, ces méthodes peuvent améliorer la sécurité de votre site Web et éviter les fausses attaques.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn