Days
Hours
Minutes
Seconds

Promo Grand Opening

15% OFF

Khusus Pelanggan Baru

Tutorial Laravel #29: Hashing Laravel

Tentu, berikut adalah artikel mengenai tutorial hashing di Laravel.


 

 

Setelah membahas sistem login, register, dan reset password, kini saatnya kita masuk ke salah satu aspek terpenting di baliknya: hashing. Hashing adalah teknik keamanan fundamental yang digunakan untuk menyimpan password pengguna dengan aman. Laravel, dengan pendekatannya yang berfokus pada keamanan, membuat proses ini menjadi sangat mudah dan otomatis.

Pada tutorial ini, kita akan memahami apa itu hashing, perbedaannya dengan enkripsi, dan bagaimana cara menggunakan facade Hash di Laravel untuk mengamankan data.


 

1. Apa itu Hashing dan Mengapa Berbeda dari Enkripsi?

 

Banyak orang menyamakan hashing dengan enkripsi, padahal keduanya memiliki tujuan yang sangat berbeda.

  • Enkripsi adalah proses dua arah. Kamu mengenkripsi data (plaintext) menjadi kode rahasia (ciphertext) dan bisa mendekripsinya kembali menjadi data asli menggunakan sebuah kunci.
  • Hashing adalah proses satu arah. Kamu mengubah data (plaintext) menjadi string acak dengan panjang tetap (hash). Proses ini tidak bisa dibalik. Kamu tidak bisa mendapatkan kembali data asli dari hash.

Bayangkan hashing seperti sidik jari digital untuk password. Setiap password memiliki “sidik jari” yang unik, tetapi dari sidik jari tersebut, kamu tidak bisa merekonstruksi password aslinya. Inilah mengapa hashing sangat ideal untuk menyimpan password: kita tidak perlu tahu password pengguna, kita hanya perlu memverifikasi apakah password yang mereka masukkan cocok dengan hash yang tersimpan.

Laravel menggunakan algoritma bcrypt secara default untuk hashing, yang dianggap sebagai salah satu algoritma hashing terkuat dan teraman saat ini.


 

2. Menggunakan Facade Hash di Laravel

 

Laravel menyediakan facade Hash yang mudah digunakan untuk membuat dan memverifikasi hash. Kamu bisa menggunakan ini untuk keperluan hashing di luar sistem autentikasi bawaan Laravel.

 

A. Membuat Hash dengan Hash::make()

 

Untuk membuat hash dari sebuah string, gunakan metode make(). Perhatikan bahwa setiap kali kamu menjalankan metode ini, ia akan menghasilkan string yang berbeda meskipun inputnya sama. Ini karena algoritma bcrypt menyertakan “salt” (nilai acak) untuk mencegah serangan kamus.

PHP

use Illuminate\Support\Facades\Hash;

$password = "password123";
$hashedPassword = Hash::make($password);

// Contoh hasil yang akan dihasilkan:
// $2y$10$wK1F5wN2N5f0Q.H6S8tT2O...

 

B. Memverifikasi Password dengan Hash::check()

 

Metode check() adalah kebalikan dari make(). Metode ini akan membandingkan sebuah string (plaintext yang dimasukkan pengguna) dengan hash yang sudah ada di database. Metode ini mengembalikan nilai boolean (true atau false).

PHP

use Illuminate\Support\Facades\Hash;

$passwordYangDimasukkan = "password123";
$hashedPasswordDiDatabase = '$2y$10$wK1F5wN2N5f0Q.H6S8tT2O...'; // Hash yang tersimpan di DB

if (Hash::check($passwordYangDimasukkan, $hashedPasswordDiDatabase)) {
    // Password cocok
    echo "Password cocok!";
} else {
    // Password tidak cocok
    echo "Password tidak cocok!";
}

 

3. Hashing Otomatis pada Sistem Autentikasi

 

Poin penting yang perlu kamu ketahui adalah bahwa kamu tidak perlu melakukan hashing secara manual untuk password pengguna jika kamu menggunakan sistem autentikasi bawaan Laravel seperti Laravel Breeze atau Jetstream.

Secara default, Laravel akan secara otomatis mengenkripsi password saat pengguna mendaftar atau saat kamu mengaturnya secara langsung pada model User.

Contohnya, di RegisteredUserController yang dibuat oleh Laravel Breeze, kode untuk membuat pengguna baru terlihat sederhana:

PHP

// app/Http/Controllers/Auth/RegisteredUserController.php

public function store(Request $request): RedirectResponse
{
    $request->validate([
        'name' => ['required', 'string', 'max:255'],
        'email' => ['required', 'string', 'lowercase', 'email', 'max:255', 'unique:'.User::class],
        'password' => ['required', 'confirmed', Rules\Password::defaults()],
    ]);

    $user = User::create([
        'name' => $request->name,
        'email' => $request->email,
        'password' => Hash::make($request->password), // Hashing terjadi di sini!
    ]);

    event(new Registered($user));

    Auth::login($user);

    return redirect(RouteServiceProvider::HOME);
}

Seperti yang bisa kamu lihat, metode Hash::make() dipanggil secara eksplisit untuk mengenkripsi password sebelum disimpan. Begitu juga, saat pengguna login, Laravel akan menggunakan Hash::check() secara otomatis di balik layar untuk memverifikasi password yang dimasukkan.


 

4. Kesimpulan

 

Hashing adalah kunci utama keamanan password di aplikasi web. Dengan menyediakan facade Hash yang kuat dan otomatis mengintegrasikannya ke dalam sistem autentikasi, Laravel memastikan bahwa data sensitif pengguna kamu terlindungi tanpa harus kamu menulis kode keamanan yang kompleks. Selalu pastikan untuk tidak pernah menyimpan password dalam format teks biasa di database.

Dengan pemahaman ini, kamu telah menambah satu lagi keterampilan penting dalam membangun aplikasi yang aman.

Wawasan Terbaru

Gemini_Generated_Image_wfw5uwwfw5uwwfw5
Mengenal Dunia Grafis: Dari Piksel Hingga Vektor, Kekuatan Visual di Era Digital
Gemini_Generated_Image_b6dimfb6dimfb6di
Mengenal Foundation: Kerangka Kerja Front-End Profesional untuk Web Responsif
Gemini_Generated_Image_sx3ztpsx3ztpsx3z
CSS
Mempercantik Website dengan CSS: Seniman di Balik Tampilan Web 🎨
Gemini_Generated_Image_e013qke013qke013
Mengenal HTML: Fondasi dari Setiap Halaman Website 🌐
Gemini_Generated_Image_ldki4nldki4nldki
Menyelami Dunia Coding: Seni Berbicara dengan Komputer
Gemini_Generated_Image_dpvliydpvliydpvl
Menguasai GIT: Fondasi Penting dalam Dunia Pengembangan Perangkat Lunak
Gemini_Generated_Image_sqcib9sqcib9sqci
Tutorial Python #12: Mengenal Jenis-jenis Operator dalam Python
Gemini_Generated_Image_o1bw3do1bw3do1bw
Memahami Tipe Data Dictionary dalam Python
Gemini_Generated_Image_ko4ixfko4ixfko4i
Mengenal Tipe Data Set dalam Python
Gemini_Generated_Image_1xop7m1xop7m1xop
Tuple dalam Python: Pengenalan dan Tutorial

Wawasan Serupa

Gemini_Generated_Image_q0o3sbq0o3sbq0o3
Gemini_Generated_Image_mem6cgmem6cgmem6
Gemini_Generated_Image_ust09gust09gust0
Gemini_Generated_Image_d8a5kwd8a5kwd8a5

Ceritakan Detail Proyekmu

Mulai dari 30K aja, solusi IT kamu langsung jalan tanpa drama.

Kata Mereka Tentang Solusi Coding

Dipercaya oleh lebih dari 200++ client untuk menyelesaikan proyeknya dengan total 250++ proyek dari berbagai jenis proyek