recherche
Maisoncadre phpLaravelCryptage et décryptage des données dans Laravel

Ce guide explique comment mettre en œuvre le cryptage et le déchiffrement pour données sensibles dans les modèles Laravel. En suivant ces étapes, vous pouvez sécuriser les données avant de les stocker dans la base de données et les décrypter lorsque le récupérer.

   Prérequis

  • Laravel : assurez-vous que vous utilisez un projet Laravel.
  • Clé de cryptage : Laravel génère automatiquement une APP_KEY dans le fichier .env. Cette clé est utilisée par le service de cryptage de Laravel.

   Étape 1 : Configurer le cryptage dans le modèle

Dans le modèle, nous utiliserons les fonctions encrypt() et decrypt() de Laravel pour gérer automatiquement le cryptage et le déchiffrement pour les champs spécifiés.

   Modèle Docteur

Créez ou mettez à jour le modèle Docteur avec des méthodes de cryptage et de décryptage. Nous chiffrerons les champs tels que prénom, nom, e-mail et mobile avant de les enregistrer dans la base de données.

<?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);
    }}

     Explication

  • Méthodes Setter : utilisez set{AttributeName }Attribute() pour crypter les données avant qu'elles ne soient stockées dans la base de données.
  • Méthodes Getter : utilisez get{AttributeName}Attribute() pour déchiffrer les données lorsqu'elles sont récupérées de la base de données.

Étape 2 : Contrôleur pour le stockage et la récupération des données

Dans le contrôleur, vous pouvez gérer la validation et appelle le modèle attributs chiffrés directement sans cryptage/déchiffrement supplémentaire étapes.

       DoctorController

Le DoctorController gère l'inscription en validant saisir les données, les chiffrer via le modèle et les enregistrer dans la base de données. Lors de la récupération des données du médecin, il décryptera automatiquement le domaines sensibles.

<?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);
    }}

   Explication

  • Méthode de registre : valide la demande entrante, crée un nouveau dossier médical et crypte automatiquement les champs tels que prénom, nom, e-mail et mobile grâce aux méthodes de cryptage du modèle.
  • Méthode show : Récupère un dossier médical par ID. Le les méthodes getter du modèle décryptent automatiquement les champs sensibles avant renvoyer les données.

   Étape 3 : Configuration de la base de données

Assurez-vous que les colonnes du tableau des médecins pour les données sensibles sont d'une longueur suffisante pour gérer les données cryptées (généralement, TEXT ou LONGTEXT).

Exemple de configuration de migration :

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();});

Remarque : étant donné que les valeurs chiffrées peuvent être beaucoup plus longues que les valeurs en texte brut, TEXT est préférable pour les valeurs chiffrées. champs.

   Étape 4 : Gestion des exceptions de décryptage

Pour une gestion améliorée des erreurs, enveloppez la logique de décryptage dans des blocs try-catch dans les getters du modèle :

<?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);
    }}

   Notes supplémentaires

  • Sécurité de l'environnement : assurez-vous que l'APP_KEY est stocké en toute sécurité dans le fichier .env. Cette clé est essentielle pour le cryptage/déchiffrement.
  • Sauvegarde des données : si l'intégrité des données est cruciale, assurez-vous de disposer d'un mécanisme de sauvegarde, car les données cryptées ne peuvent pas être récupérées sans la bonne APP_KEY.

   Résumé

  1. Cryptage du modèle : utilisez des méthodes de définition pour crypter les données avant de les stocker et des méthodes de lecture pour déchiffrer les données lors de la récupération.
  2. Logique du contrôleur : le contrôleur peut gérer les champs cryptés directement sans code de cryptage supplémentaire .
  3. Configuration de la base de données : utilisez des colonnes TEXT ou LONGTEXT pour les champs chiffrés.
  4. Sécurité Considérations : sécurisez votre APP_KEY et utilisez la gestion des exceptions dans les getters pour les erreurs de décryptage.

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
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer
Last Laravel Version: Tutoriel de migrationLast Laravel Version: Tutoriel de migrationMay 14, 2025 am 12:17 AM

Quelles nouvelles fonctionnalités et meilleures pratiques le système de migration de Laravel propose-t-il dans la dernière version? 1. Ajout de NullableMorphs () pour les relations polymorphes. 2. La méthode After () est introduite pour spécifier l'ordre de colonne. 3. Mettre l'accent sur la gestion des contraintes de clés étrangères pour éviter les dossiers orphelins. 4. Il est recommandé d'optimiser les performances, telles que l'ajout d'index de manière appropriée. 5. Adocter l'idémpotence de la migration et l'utilisation de noms descriptifs.

Quelle est la dernière version LTS de Laravel?Quelle est la dernière version LTS de Laravel?May 14, 2025 am 12:14 AM

Laravel10, libéré enbrué2023, iSthelatestlTsversion, soutenu par rapport à la forme de comité de base, améliore les rapports de réalisation de SARAVELPENNantForFeature, s'améliore, affinés, affinés et optimisation de performance, en particulier.

Restez à jour: les dernières fonctionnalités de la dernière version de LaravelRestez à jour: les dernières fonctionnalités de la dernière version de LaravelMay 14, 2025 am 12:10 AM

La dernière version de Laravel introduit plusieurs nouvelles fonctionnalités: 1. LaravelPennant est utilisé pour gérer les drapeaux de fonction, permettant à de nouvelles fonctionnalités d'être publiées par étapes; 2. LaravelReverb simplifie la mise en œuvre de fonctions en temps réel, telles que les commentaires en temps réel; 3. Laravelvite accélère le processus de construction frontal; 4. Le nouveau système d'usine modèle améliore la création de données de test; 5. Améliore le mécanisme de gestion des erreurs et fournit des options de personnalisation de la page d'erreur plus flexibles.

Implémentation de Supprimer Soft dans Laravel: un tutoriel étape par étapeImplémentation de Supprimer Soft dans Laravel: un tutoriel étape par étapeMay 14, 2025 am 12:02 AM

Softleteinelelavelisling -memptry-bracechortsdevetus -teedeecetovedlydeveledeecedeededelave

Version actuelle de Laravel: consultez la dernière version et les mises à jourVersion actuelle de Laravel: consultez la dernière version et les mises à jourMay 14, 2025 am 12:01 AM

Laravel10.xistheCurrentVersion, offrant des produits de base comme des ennuismes assumez-vous.

Comment utiliser Laravel Migrations: un tutoriel étape par étapeComment utiliser Laravel Migrations: un tutoriel étape par étapeMay 13, 2025 am 12:15 AM

LaravelMigrations Streamlinedatabaseman ManagementByAllowingsChemAnchestobedeFinedInPhpcode, que CANBEBEVERSION-ControlledandShared.He'showTousethem: 1) CreateMigrationClasseStodeFineoperationslikCreateMorodifteurs.2)

Trouver la dernière version de Laravel: un guide rapide et facileTrouver la dernière version de Laravel: un guide rapide et facileMay 13, 2025 am 12:13 AM

Pour trouver la dernière version de Laravel, vous pouvez visiter le site officiel Laravel.com et cliquer sur le bouton "Docs" dans le coin supérieur droit, ou utiliser la commande Composer "Composershowlaravel / framework | grepversions". Rester à jour peut aider à améliorer la sécurité et les performances des projets, mais l'impact sur les projets existants doit être pris en compte.

Rester à jour avec Laravel: Avantages de l'utilisation de la dernière versionRester à jour avec Laravel: Avantages de l'utilisation de la dernière versionMay 13, 2025 am 12:08 AM

YouSupdateTothelateStLaravelVersionForPperformance Improverses, EnhancedSecurity, NewFeatures, BetterCommunitySupport et Long-TermMenterne

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

<🎜>: Bubble Gum Simulator Infinity - Comment obtenir et utiliser les clés royales
4 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
Nordhold: Système de fusion, expliqué
4 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Comment déverrouiller le grappin
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌

Outils chauds

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Navigateur d'examen sécurisé

Navigateur d'examen sécurisé

Safe Exam Browser est un environnement de navigation sécurisé permettant de passer des examens en ligne en toute sécurité. Ce logiciel transforme n'importe quel ordinateur en poste de travail sécurisé. Il contrôle l'accès à n'importe quel utilitaire et empêche les étudiants d'utiliser des ressources non autorisées.

SublimeText3 version anglaise

SublimeText3 version anglaise

Recommandé : version Win, prend en charge les invites de code !

PhpStorm version Mac

PhpStorm version Mac

Le dernier (2018.2.1) outil de développement intégré PHP professionnel