目次
前提条件
説明
ステップ 2: データの保存と取得のためのコントローラー
ホームページ PHPフレームワーク Laravel Laravelでのデータの暗号化と復号化

Laravelでのデータの暗号化と復号化

Dec 12, 2024 am 11:50 AM
laravel cad ai 機密データ

このガイドでは、Laravel モデルで機密データの暗号化と復号化を実装する方法について説明します。次の手順を実行すると、データベースに保存する前にデータを保護し、データを取得するときに復号化できます。

Laravelでのデータの暗号化と復号化

前提条件

  • Laravel: Laravel プロジェクトを使用していることを確認してください。
  • 暗号化キー: Laravel は .env ファイルに APP_KEY を自動的に生成します。このキーは、Laravel の暗号化サービスによって使用されます。

ステップ 1: モデルで暗号化を設定する

モデルでは、Laravel の encrypt() 関数と decrypt() 関数を使用して、指定されたフィールドの暗号化と復号化を自動的に処理します。

Doctor Model

暗号化および復号化メソッドを使用して Doctor モデルを作成または更新します。姓、名、電子メール、携帯電話などのフィールドは、データベースに保存する前に暗号化されます。

<?phpnamespace AppModels;use IlluminateDatabaseEloquentModel;use IlluminateSupportFacadesCrypt;class Doctor extends Model{
    protected $fillable = [
        &#39;first_name&#39;, &#39;last_name&#39;, &#39;email&#39;, &#39;mobile&#39;, &#39;hashed_email&#39;, &#39;password&#39;
    ];

    // Automatically encrypt attributes when setting them
    public function setFirstNameAttribute($value)
    {
        $this->attributes['first_name'] = encrypt($value);
    }

    public function setLastNameAttribute($value)
    {
        $this->attributes['last_name'] = encrypt($value);
    }

    public function setEmailAttribute($value)
    {
        $this->attributes['email'] = encrypt($value);
    }

    public function setMobileAttribute($value)
    {
        $this->attributes['mobile'] = encrypt($value);
    }

    // Automatically decrypt attributes when getting them
    public function getFirstNameAttribute($value)
    {
        return decrypt($value);
    }

    public function getLastNameAttribute($value)
    {
        return decrypt($value);
    }

    public function getEmailAttribute($value)
    {
        return decrypt($value);
    }

    public function getMobileAttribute($value)
    {
        return decrypt($value);
    }}
ログイン後にコピー
ログイン後にコピー

説明

  • Setter メソッド: set{AttributeName }Attribute() を使用して、データベースに保存する前にデータを暗号化します。
  • Getter メソッド: データベースからデータを取得するときに、get{AttributeName}Attribute() を使用して復号化します。

ステップ 2: データの保存と取得のためのコントローラー

コントローラーでは検証を処理し、モデルの呼び出しを行うことができます。 追加の暗号化/復号化を行わずに属性を直接暗号化します ステップ。

DoctorController

DoctorController は検証を通じて登録を処理します データを入力し、モデルを通じて暗号化し、データベースに保存します。 医師データを取得すると自動的に復号化されます 敏感な分野。

<?phpnamespace AppHttpControllers;use IlluminateHttpRequest;use AppModelsDoctor;use IlluminateSupportFacadesHash;class DoctorController extends Controller{
    public function register(Request $request)
    {
        // Validate the incoming request
        $validatedData = $request->validate([
            'first_name' => 'required|string|max:255',
            'last_name' => 'required|string|max:255',
            'email' => 'required|string|email|max:255|unique:doctors,email',
            'mobile' => 'required|string|size:10|unique:doctors,mobile',
            'password' => 'required|string|min:8|confirmed',
        ]);

        // Hash the email to ensure uniqueness
        $hashedEmail = hash('sha256', $validatedData['email']);

        // Create a new doctor record (model will handle encryption)
        $doctor = Doctor::create([
            'first_name' => $validatedData['first_name'],
            'last_name' => $validatedData['last_name'],
            'email' => $validatedData['email'],
            'hashed_email' => $hashedEmail,
            'mobile' => $validatedData['mobile'],
            'password' => Hash::make($validatedData['password']),
        ]);

        return response()->json([
            'message' => 'Doctor registered successfully',
            'doctor' => $doctor
        ], 201);
    }

    public function show($id)
    {
        // Fetch the doctor record (model will decrypt the data automatically)
        $doctor = Doctor::findOrFail($id);

        return response()->json($doctor);
    }}
ログイン後にコピー

説明

  • 登録メソッド: 受信リクエストを確認し、新しい医師の記録を作成し、モデルの暗号化方法に基づいて名、姓、電子メール、携帯電話などのフィールドを自動的に暗号化します。
  • show メソッド: ID によって医師の記録を取得します。これ 機密フィールドは、モデルのゲッター メソッドの前に自動的に復号化されます。 データを返します。

ステップ 3: データベース構成

機密データのドクター テーブル列が、暗号化されたデータ (通常は TEXT または LONGTEXT) を処理するのに十分な長さであることを確認します。

移行設定の例:

Schema::create('doctors', function (Blueprint $table) {
    $table->id();
    $table->text('first_name');
    $table->text('last_name');
    $table->text('email');
    $table->string('hashed_email')->unique(); // SHA-256 hashed email
    $table->text('mobile');
    $table->string('password');
    $table->timestamps();});
ログイン後にコピー

注: 暗号化された値はプレーン テキストよりもはるかに長くなる可能性があるため、暗号化フィールドにはテキストが優先されます。 。

ステップ 4: 復号例外を処理する

エラー処理を強化するには、モデルゲッターの try-catch ブロックに復号ロジックをラップします:

<?phpnamespace AppModels;use IlluminateDatabaseEloquentModel;use IlluminateSupportFacadesCrypt;class Doctor extends Model{
    protected $fillable = [
        &#39;first_name&#39;, &#39;last_name&#39;, &#39;email&#39;, &#39;mobile&#39;, &#39;hashed_email&#39;, &#39;password&#39;
    ];

    // Automatically encrypt attributes when setting them
    public function setFirstNameAttribute($value)
    {
        $this->attributes['first_name'] = encrypt($value);
    }

    public function setLastNameAttribute($value)
    {
        $this->attributes['last_name'] = encrypt($value);
    }

    public function setEmailAttribute($value)
    {
        $this->attributes['email'] = encrypt($value);
    }

    public function setMobileAttribute($value)
    {
        $this->attributes['mobile'] = encrypt($value);
    }

    // Automatically decrypt attributes when getting them
    public function getFirstNameAttribute($value)
    {
        return decrypt($value);
    }

    public function getLastNameAttribute($value)
    {
        return decrypt($value);
    }

    public function getEmailAttribute($value)
    {
        return decrypt($value);
    }

    public function getMobileAttribute($value)
    {
        return decrypt($value);
    }}
ログイン後にコピー
ログイン後にコピー

追加の注意事項

  • 環境セキュリティ: APP_KEY が .env ファイルに安全に保存されていることを確認してください。このキーは暗号化/復号化に必須です。
  • データのバックアップ: データの整合性が重要な場合は、適切な APP_KEY がないと暗号化されたデータを回復できなくなるため、バックアップ メカニズムが用意されていることを確認してください。

概要

  1. モデルの暗号化: 保存前にデータを暗号化するには setter メソッドを使用し、取得中に復号化するには getter メソッドを使用します。
  2. コントローラー ロジック: コントローラーは、暗号化コードを追加せずに暗号化されたフィールドを直接処理できます。
  3. データベース構成: TEXT 列または LONGTEXT 列を暗号化フィールドとして使用します。
  4. セキュリティに関する注意: APP_KEY を保護し、ゲッターで例外処理を使用して復号化エラーを処理します。

以上がLaravelでのデータの暗号化と復号化の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Crypto Digital Asset Trading App(2025グローバルランキング)に推奨されるトップ10 Crypto Digital Asset Trading App(2025グローバルランキング)に推奨されるトップ10 Mar 18, 2025 pm 12:15 PM

Crypto Digital Asset Trading App(2025グローバルランキング)に推奨されるトップ10

トップ10の仮想通貨トレーディングアプリのうち、トップ10の仮想通貨取引アプリのどれが最も信頼できますか? トップ10の仮想通貨トレーディングアプリのうち、トップ10の仮想通貨取引アプリのどれが最も信頼できますか? Mar 19, 2025 pm 05:00 PM

トップ10の仮想通貨トレーディングアプリのうち、トップ10の仮想通貨取引アプリのどれが最も信頼できますか?

OUYI公式Webサイト2025の最新の登録ポータル OUYI公式Webサイト2025の最新の登録ポータル Mar 21, 2025 pm 05:57 PM

OUYI公式Webサイト2025の最新の登録ポータル

トップ10公式の仮想通貨取引アプリトップ10携帯電話用の公式仮想通貨取引プラットフォーム トップ10公式の仮想通貨取引アプリトップ10携帯電話用の公式仮想通貨取引プラットフォーム Mar 19, 2025 pm 05:21 PM

トップ10公式の仮想通貨取引アプリトップ10携帯電話用の公式仮想通貨取引プラットフォーム

トップ10仮想通貨取引プラットフォームアプリランキングトップ10仮想通貨取引プラットフォームランキング トップ10仮想通貨取引プラットフォームアプリランキングトップ10仮想通貨取引プラットフォームランキング Mar 19, 2025 pm 04:51 PM

トップ10仮想通貨取引プラットフォームアプリランキングトップ10仮想通貨取引プラットフォームランキング

Binanceの登録方法に関する詳細なチュートリアル(2025初心者ガイド) Binanceの登録方法に関する詳細なチュートリアル(2025初心者ガイド) Mar 18, 2025 pm 01:57 PM

Binanceの登録方法に関する詳細なチュートリアル(2025初心者ガイド)

トップ10の仮想通貨取引プラットフォームアプリの概要、トップ10の仮想通貨取引プラットフォームのランキング2025 トップ10の仮想通貨取引プラットフォームアプリの概要、トップ10の仮想通貨取引プラットフォームのランキング2025 Mar 19, 2025 pm 05:15 PM

トップ10の仮想通貨取引プラットフォームアプリの概要、トップ10の仮想通貨取引プラットフォームのランキング2025

トップ10仮想通貨取引アプリのランキングトップ10仮想通貨取引アプリの推奨 トップ10仮想通貨取引アプリのランキングトップ10仮想通貨取引アプリの推奨 Mar 19, 2025 pm 05:18 PM

トップ10仮想通貨取引アプリのランキングトップ10仮想通貨取引アプリの推奨

See all articles