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 = [ 'first_name', 'last_name', 'email', 'mobile', 'hashed_email', 'password' ]; // 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 = [ 'first_name', 'last_name', 'email', 'mobile', 'hashed_email', 'password' ]; // 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é
- 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.
- Logique du contrôleur : le contrôleur peut gérer les champs cryptés directement sans code de cryptage supplémentaire .
- Configuration de la base de données : utilisez des colonnes TEXT ou LONGTEXT pour les champs chiffrés.
- 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!

Laravel se démarque en simplifiant le processus de développement Web et en offrant des fonctionnalités puissantes. Ses avantages incluent: 1) la syntaxe concise et le système ORM puissant, 2) un système de routage et d'authentification efficace, 3) un riche support de bibliothèque tiers, permettant aux développeurs de se concentrer sur la rédaction du code élégant et d'améliorer l'efficacité du développement.

LaravelispredoMinancelyAbackendFramework, conçuforserver-sidelogic, databasemanagement, andapidevelopment, witalitalsosupportsfronttenddevelopmentwithbladetemplates.

Laravel et Python ont leurs propres avantages et inconvénients en termes de performances et d'évolutivité. Laravel améliore les performances par le biais de systèmes de traitement et de file d'attente asynchrones, mais en raison des limitations de PHP, il peut y avoir des goulots d'étranglement en cas de concurrence élevée; Python fonctionne bien avec le cadre asynchrone et un puissant écosystème de bibliothèque, mais est affecté par Gil dans un environnement multi-thread.

Laravel convient aux projets que les équipes connaissent PHP et nécessitent des fonctionnalités riches, tandis que les cadres Python dépendent des exigences du projet. 1.Laravel fournit une syntaxe élégante et des caractéristiques riches, adaptées aux projets qui nécessitent un développement rapide et une flexibilité. 2. Django convient aux applications complexes en raison de son concept "inclusion de batterie". 3.Laflasque convient aux prototypes rapides et aux petits projets, offrant une grande flexibilité.

Laravel peut être utilisé pour le développement frontal. 1) Utilisez le moteur du modèle de lame pour générer du HTML. 2) Intégrez Vite pour gérer les ressources frontales. 3) Construisez SPA, PWA ou site Web statique. 4) Combinez le routage, le middleware et l'éloquente pour créer une application Web complète.

PHP et Laravel peuvent être utilisés pour créer des applications efficaces côté serveur. 1.Php est un langage de script open source adapté au développement Web. 2.Laravel fournit le routage, le contrôleur, l'éloquente, le moteur de modèle de lame et d'autres fonctions pour simplifier le développement. 3. Améliorer les performances et la sécurité de l'application par la mise en cache, l'optimisation du code et les mesures de sécurité. 4. Test et stratégies de déploiement pour assurer un fonctionnement stable des applications.

Laravel et Python ont leurs propres avantages et inconvénients en termes de courbe d'apprentissage et de facilité d'utilisation. Laravel convient au développement rapide d'applications Web. La courbe d'apprentissage est relativement plate, mais il faut du temps pour maîtriser les fonctions avancées. La grammaire de Python est concise et la courbe d'apprentissage est plate, mais les systèmes de type dynamique doivent être prudents.

Les avantages de Laravel dans le développement back-end comprennent: 1) la syntaxe élégante et l'éloquente simplifient le processus de développement; 2) Écosystème riche et soutien communautaire actif; 3) Amélioration de l'efficacité de développement et de la qualité du code. La conception de Laravel permet aux développeurs de se développer plus efficacement et d'améliorer la qualité du code grâce à ses fonctionnalités et outils puissants.


Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

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

Outils chauds

SublimeText3 Linux nouvelle version
Dernière version de SublimeText3 Linux

VSCode Windows 64 bits Télécharger
Un éditeur IDE gratuit et puissant lancé par Microsoft

MinGW - GNU minimaliste pour Windows
Ce projet est en cours de migration vers osdn.net/projects/mingw, vous pouvez continuer à nous suivre là-bas. MinGW : un port Windows natif de GNU Compiler Collection (GCC), des bibliothèques d'importation et des fichiers d'en-tête librement distribuables pour la création d'applications Windows natives ; inclut des extensions du runtime MSVC pour prendre en charge la fonctionnalité C99. Tous les logiciels MinGW peuvent fonctionner sur les plates-formes Windows 64 bits.

Dreamweaver Mac
Outils de développement Web visuel

DVWA
Damn Vulnerable Web App (DVWA) est une application Web PHP/MySQL très vulnérable. Ses principaux objectifs sont d'aider les professionnels de la sécurité à tester leurs compétences et leurs outils dans un environnement juridique, d'aider les développeurs Web à mieux comprendre le processus de sécurisation des applications Web et d'aider les enseignants/étudiants à enseigner/apprendre dans un environnement de classe. Application Web sécurité. L'objectif de DVWA est de mettre en pratique certaines des vulnérabilités Web les plus courantes via une interface simple et directe, avec différents degrés de difficulté. Veuillez noter que ce logiciel