Laravelがダウンロードされないようにする方法

PHPz
リリース: 2023-04-21 10:37:57
オリジナル
612 人が閲覧しました

情報化時代においては、データを保護する必要がある状況が必然的に発生します。 Web アプリケーションの基本的なセキュリティ対策の 1 つは、ユーザーまたは違法なプログラムが指定されたファイルをダウンロードできないようにすることです。

Laravel フレームワークでは、ファイルのダウンロードを防ぐ方法は比較的簡単です。この記事では、Web サイトの安全性を高め、ハッカーによる攻撃を避けるためにファイルを適切に保護するいくつかの方法を紹介します。

1. Laravel のルーティング メソッドを使用する

Laravel では、ルーティングを使用して、ダウンロードできるファイルとダウンロードできないファイルを制御できます。

ステップ 1 – コントローラーの作成

app/Http/Controllers ディレクトリに新しいコントローラーを作成します。次のコマンドを使用します:

php artisan make:controller DownloadController
ログイン後にコピー

これにより、Controllers フォルダーに新しいコントローラーが生成されます:

<?php
namespace App\Http\Controllers;

class DownloadController extends Controller
{
    //
}
ログイン後にコピー

ステップ 2 – ルートの作成

次のルートで呼び出すことができます。 DownloadController のメソッド:

Route::post(&#39;/download/{file_name}&#39;, &#39;DownloadController@downloadFile&#39;)->name('download.file');
ログイン後にコピー

ステップ 3 – ダウンロード メソッドの作成

次のステップでは、DownloadController の新しいメソッドを作成して、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);
    }
}
ログイン後にコピー

ここで、Web ブラウザに次の URL アドレスを入力してプログラムをテストできます:

http://127.0.0.1:8000/download/before-download-test-file.txt
ログイン後にコピー

2. File クラス メソッドを使用します

このメソッドは PHP の file_get_contents を使用します。 () 関数。ファイルにアクセスしてその内容を読み取る機能があります。

Route::get('/download', function(){
    $file = public_path()."/test.zip";
    $headers = array(
              'Content-Type: application/octet-stream',
            );
    return Response::download($file, 'test.zip', $headers);
});
ログイン後にコピー

3. ファイルを直接読み取る

3 番目の方法は最も一般的な方法で、基本的な考え方は、ファイルをメモリに直接読み取り、クライアントに送信することです。

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);
});
ログイン後にコピー

概要

Laravel のファイルがダウンロードされないようにする方法については、いくつかの方法から選択できます。最初は、ルーティングを使用して、どのファイルをダウンロードできるか、できないかを制御できます。さらに、Laravel の File クラス (file_get_contents()) を使用する方法と、ファイルを直接読み取る方法の 2 つの標準的な方法があります。ファイル保護とダウンロードのセキュリティに関しては、Web サイトを安全に保つことが重要であり、これらの方法が正しく実装されていれば、Web サイトのセキュリティを強化し、偽の攻撃を回避できます。

以上がLaravelがダウンロードされないようにする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート