Panduan ini menerangkan cara melaksanakan penyulitan dan penyahsulitan data sensitif dalam model Laravel. Dengan melakukan langkah berikut, anda boleh melindungi data sebelum menyimpannya dalam pangkalan data dan menyahsulitnya apabila mendapatkan semula data.
Prasyarat
- Laravel: Pastikan anda menggunakan projek Laravel.
- Kunci penyulitan: Laravel menjana APP_KEY secara automatik dalam fail .env. Kunci ini digunakan oleh perkhidmatan penyulitan Laravel.
Langkah 1: Sediakan penyulitan dalam model
Dalam model, kami akan menggunakan fungsi encrypt() dan decrypt() Laravel untuk mengendalikan penyulitan dan penyahsulitan medan yang ditentukan secara automatik.
Model Doktor
Buat atau kemas kini model Doktor menggunakan kaedah penyulitan dan penyahsulitan. Kami akan menyulitkan medan seperti nama pertama, nama keluarga, e-mel dan telefon bimbit sebelum menyimpannya ke pangkalan data.
<?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); }}
Penerangan
- Kaedah penetap: Gunakan set{AttributeName }Attribute() untuk menyulitkan data sebelum menyimpannya dalam pangkalan data.
- Kaedah Getter: Gunakan get{AttributeName}Attribute() untuk menyahsulit apabila mendapatkan data daripada pangkalan data.
Langkah 2: Pengawal untuk penyimpanan dan pengambilan data
Dalam pengawal anda boleh mengendalikan pengesahan dan memanggil model Sulitkan atribut secara langsung tanpa penyulitan/penyahsulitan tambahan langkah.
DoctorController
DoctorController mengendalikan pendaftaran melalui pengesahan
Masukkan data, enkripsi melalui model dan simpan dalam pangkalan data.
Apabila data doktor diperoleh, ia akan dinyahsulit secara automatik
Medan sensitif.
<?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); }}
Penerangan
- kaedah daftar: Sahkan permintaan masuk, cipta rekod doktor baharu dan menyulitkan medan secara automatik seperti nama pertama, nama keluarga, e-mel dan telefon mudah alih berdasarkan kaedah penyulitan model.
- kaedah tunjukkan: Dapatkan rekod doktor melalui ID. ini Medan sensitif akan dinyahsulit secara automatik sebelum kaedah getter model Kembalikan data.
Langkah 3: Konfigurasi pangkalan data
Pastikan lajur jadual doktor untuk data sensitif cukup panjang untuk mengendalikan data yang disulitkan (biasanya TEXT atau LONGTEXT).
Contoh tetapan migrasi:
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();});
Nota: Memandangkan nilai yang disulitkan mungkin lebih panjang daripada teks biasa, teks diutamakan untuk medan yang disulitkan .
Langkah 4: Kendalikan pengecualian penyahsulitan
Untuk meningkatkan pengendalian ralat, bungkus logik penyahsulitan dalam blok cuba-tangkap dalam pengambil model:
<?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); }}
Nota Tambahan
- Keselamatan Alam Sekitar: Pastikan APP_KEY disimpan dengan selamat dalam fail .env. Kunci ini penting untuk penyulitan/penyahsulitan.
- Sandaran Data: Jika integriti data adalah kritikal, pastikan anda mempunyai mekanisme sandaran, kerana data yang disulitkan tidak akan dapat dipulihkan tanpa APP_KEY yang betul.
Ringkasan
- Penyulitan model: Gunakan kaedah penetap untuk menyulitkan data sebelum penyimpanan dan gunakan kaedah pengambil untuk menyahsulitnya semasa pengambilan semula.
- Logik pengawal: Pengawal boleh mengendalikan medan yang disulitkan secara langsung tanpa kod penyulitan tambahan
- Konfigurasi pangkalan data: Gunakan lajur TEXT atau LONGTEXT sebagai medan yang disulitkan.
- Nota Keselamatan: Lindungi APP_KEY anda dan gunakan pengendalian pengecualian dalam pengambil untuk mengendalikan ralat penyahsulitan.
Atas ialah kandungan terperinci Penyulitan dan penyahsulitan data dalam Laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Bertindak balas, vue, andangularcanbeintegratedwithlaravelbyfollowingspecificsetupsteps.1) forreact: installreactusinglaravelui, setupcomponentsinapp.js.2)

TaskManagementToolSareessfectiveFectiveremoteprojectmanagementbyprioritizingTasksandTrackingProgress.1) usetoolsliketrelloandasanatosetprioritieswithlabelsortags.2) prokertoolslikejiraandmondy.com

Laravel101hancesperformanceRoughseralkeyfeatures.1) itIntroduceSquerybuilderCachingtoreDuceeduceedataBaseload.2) itOpTimizeSeSeloquentModeLeloadingWithLazyLoadingProxies.3)

Strategi penggunaan aplikasi Laravel yang terbaik termasuk: 1. 1. Zero Downtime Deployment menggunakan Envoy atau Deployer untuk mengautomasikan proses penempatan untuk memastikan aplikasi tetap tersedia apabila dikemas kini. 2. Penyebaran biru dan hijau membolehkan penempatan downtime dengan mengekalkan dua persekitaran dan membolehkan pengembalian cepat. 3. Penggunaan berterusan mengautomasikan keseluruhan proses penempatan melalui githubactions atau gitlabci/cd. 4. Canary melepaskan melalui konfigurasi Nginx, secara beransur -ansur mempromosikan versi baru kepada pengguna untuk memastikan pengoptimuman prestasi dan pengembalian cepat.

Toscalealaravelapplicationefectively, focusondatabasesharding, caching, loadbosting, andmicroservices.1) pelaksanaanDataBaseshardingTodistributedataacrossmultipledatabasesforimprovedperformance.2)

TooverComeComeCommunicationBarriersAndistributedTeams, Gunakan: 1) videocallsforface-to-faceinteraction, 2) setclearResponsetimeexpectations, 3) chooseapproprateCommunicationTools, 4) createeAteamCommunicationGuide, dan5)

Laravelbladeenhancesfrontendtemplatinginfull-stackprojectsbyofferingcleansyntaxandpowerfeatures.1) itallowsforeasyvariabledisplayandControlstructures.2)

Laravelisidealffull-stackapplicationsduetoitselegantsyntax, comprehensiveecosystem, andpowerfeatures.1) useeloquentormforintuitiveBackenddatamanipulation, butavoidn 1queryissues.2) prajuritas


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

mPDF
mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

Pelayar Peperiksaan Selamat
Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

DVWA
Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini
