Rumahweb Journal
Banner - Membuat Encrypt dan Decrypt Data di Laravel

Membuat Encrypt dan Decrypt Data di Laravel

Keamanan data merupakan aspek penting dalam pengembangan aplikasi modern, terutama saat menangani informasi sensitif seperti password, token, atau data pengguna. Laravel sebagai framework PHP populer telah menyediakan fitur bawaan yang memudahkan proses encrypt dan decrypt data di Laravel tanpa perlu konfigurasi yang rumit.

Namun, masih banyak developer yang belum memanfaatkan fitur ini secara optimal. Melalui artikel ini, Anda akan mempelajari cara melakukan encrypt dan decrypt data di Laravel secara aman, praktis, dan sesuai best practice, sehingga aplikasi yang Anda bangun lebih terlindungi dan profesional.

Apa Itu Encrypt dan Decrypt Data di Laravel

Encrypt dan decrypt adalah proses pengamanan data dengan cara mengubah data asli (plaintext) menjadi bentuk terenkripsi (ciphertext), lalu mengembalikannya kembali ke bentuk semula. Di Laravel, proses ini sudah tersedia secara bawaan.

Laravel menggunakan algoritma enkripsi AES (Advanced Encryption Standard) yang dikonfigurasi melalui APP_KEY pada file .env, sehingga pengembang tidak perlu membuat sistem enkripsi sendiri yang berisiko tidak aman.

Enkripsi data sangat penting untuk melindungi informasi sensitif pengguna, seperti kata sandi, nomor identitas, dan token rahasia. Dengan enkripsi, risiko kebocoran data dapat diminimalkan meskipun database diakses oleh pihak yang tidak berwenang, sekaligus meningkatkan kepercayaan pengguna terhadap aplikasi.

Laravel menyediakan helper dan facade Crypt untuk melakukan enkripsi dan dekripsi data. Alurnya sederhana: data dienkripsi menggunakan APP_KEY, disimpan ke database dalam bentuk acak, lalu didekripsi kembali ke bentuk aslinya saat diperlukan.

Promo Hosting Murah Rumahweb

Implementeasi encrpyt data sebelum disimpan ke Database

Pada aplikasi laravel, proses encrypt dapat dilakukan sebelum data di simpan kedalam database, agar data tidak dapat dibaca secara langsung oleh pihak tidak berwenang, Laravel, telah menyediakan facade bawaan yang bernama Crypt yang mudah digunakan.

Membuat model dan migration data

Pada step ini kita akan menjalankan proses enkripsi data sebelumnya di simpan ke dalam database, kita mulai dari membuat model dan migration datanya terlebih dahulu. Untuk membuat model dan migration datanya silahkan dapat menjalankan perintah

php artisan make:model DataRahasia -m

Kemudian pada file migration silahkan dapat dirubah seperti berikut pada baris Schema:create

Schema::create('data_rahasia', function (Blueprint $table) {
    $table->id();
    $table->text('informasi_rahasia');
    $table->timestamps();
});

Setelah edit file migrationnya silahkan dapat menjalankan php artisan migrate untuk mengirim table ke database kita.

Sekarang kita akan melakukan konfigurasi model silahkan buka file app/Models/DataRahasia.php. Kemudian rubah menjadi berikut pada baris Class DataRahasia.

class DataRahasia extends Model
{
    protected $table = 'data_rahasias';

    protected $fillable = [
        'informasi_rahasia'
    ];
}

Membuat Controller

Buat controller untuk menampilkan view Create data, simpan data dengan enkripsi, dan view data deksripsi.

Silahkan dapat menjalankan perintah berikut untuk membuat controllernya

php artisan make:controller DataRahasiaController

Kemudian mari kita isikan contoller dengan logic encrypt, decrypt serta view page untuk create datanya. Seperti berikut

use App\Models\DataRahasia;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Crypt;

class DataRahasiaController extends Controller
{
    public function create()
    {
        return view('data.create');
    }

    public function store(Request $request)
    {
        $request->validate([
            'informasi_rahasia' => 'required'
        ]);

        $dataTerenkripsi = Crypt::encryptString(
            $request->informasi_rahasia
        );

        DataRahasia::create([
            'informasi_rahasia' => $dataTerenkripsi
        ]);

        return redirect()->back()->with('success', 'Data berhasil disimpan');
    }
}

Pada tahap ini, data sudah terenkripsi sebelum masuk database, sehingga tidak bisa dibaca langsung.

Membuat Route

Tambahkan route di routes/web.php:

Route::get('/data/create', [DataRahasiaController::class, 'create']);
Route::post('/data/store', [DataRahasiaController::class, 'store']);

Jangan lupa menambahkan use App\Http\Controllers\DataRahasiaController; diatas sendiri.

Membuat view form input

Buat file blade di folder resources/views/data/create.blade.php:

<form method="POST" action="/data/store">
    @csrf
    <label>Informasi Rahasia</label>
    <input type="text" name="informasi_rahasia">
    <button type="submit">Simpan</button>
</form>

Contoh implementasi Decrypt Data Saat Ditampilkan ke User

Setelah data terenkripsi disimpan, langkah selanjutnya adalah menampilkan data kembali dalam bentuk asli.

Menambahkan Method index pada Controller

Tambahkan method berikut di DataRahasiaController:

public function index()
{
    $data = DataRahasia::all();

    foreach ($data as $item) {
        $item->informasi_rahasia = Crypt::decryptString(
            $item->informasi_rahasia
        );
    }

    return view('data.index', compact('data'));
}

Pada proses ini data diambil dari database kemudian data didekripsi satu per satu, kemudian data siap ditampilkan ke user.

Menambahkan Route untuk Menampilkan Data

Silahkan tambahkan route berikut di routes/web.php

Route::get('/data', [DataRahasiaController::class, 'index']);

Membuat View untuk Menampilkan Data

Buat file blade di folder resources/views/data/index.blade.php:

<table border="1">
    <tr>
        <th>Informasi Rahasia</th>
    </tr>
    @foreach ($data as $item)
    <tr>
        <td>{{ $item->informasi_rahasia }}</td>
    </tr>
    @endforeach
</table>

Testing

Berdasarkan hasil pengujian yang telah dilakukan ketika akses url 127.0.0.1/data/create untuk memasukan data, data yang disimpan ke dalam database berhasil terenkripsi dengan baik sehingga tidak dapat dibaca secara langsung. Data yang tersimpan tampil dalam bentuk teks acak, menandakan bahwa proses encrypt telah berjalan sesuai dengan yang diharapkan.

Create data - Encrypt dan Decrypt Data di Laravel
Data terenkripsi

Selanjutnya, pada saat data dipanggil dan ditampilkan melalui aplikasi, sistem berhasil melakukan proses decrypt secara otomatis. Data yang sebelumnya tersimpan dalam bentuk terenkripsi dapat ditampilkan kembali dalam bentuk aslinya tanpa mengalami perubahan isi. Hal ini menunjukkan bahwa mekanisme encrypt dan decrypt yang diimplementasikan pada Laravel telah berfungsi dengan benar dan konsisten.

Data Terdekripsi

Kesimpulan

Berdasarkan pembahasan dan pengujian yang dilakukan, penerapan encrypt dan decrypt data pada Laravel terbukti efektif dalam meningkatkan keamanan aplikasi. Dengan fitur enkripsi bawaan Laravel, data sensitif dapat disimpan dalam bentuk terenkripsi sehingga tidak dapat dibaca langsung melalui database.

Proses enkripsi saat penyimpanan dan dekripsi saat penampilan data berjalan dengan baik tanpa mengganggu alur kerja aplikasi serta tetap menjaga keutuhan data. Oleh karena itu, mekanisme enkripsi sangat direkomendasikan untuk aplikasi Laravel yang mengelola data rahasia guna mengurangi risiko kebocoran dan meningkatkan kepercayaan pengguna.

Demikian artikel kami tentang cara membuat encrypt dan decrypt data di Laravel, semoga bermanfaat.

Bermanfaatkah Artikel Ini?

Klik bintang 5 untuk rating!

Rating rata-rata 0 / 5. Vote count: 0

Belum ada vote hingga saat ini!

Kami mohon maaf artikel ini kurang berguna untuk Anda!

Mari kita perbaiki artikel ini!

Beri tahu kami bagaimana kami dapat meningkatkan artikel ini?

Arief Hidayatullah

Arief Hidayatullah adalah seorang Technical Support di Rumahweb Indonesia yang memiliki minat dan keahlian dalam pengembangan web. Dengan pengalaman dan pengetahuannya di bidang teknologi, Arief memiliki ketertarikan khusus dalam pengembangan web menggunakan Laravel, sebuah framework PHP yang populer. Dengan semangat belajar dan eksplorasi teknologi, Arief terus mengembangkan keterampilannya untuk menciptakan solusi web yang efisien dan inovatif.

banner pop up - Pindah Hosting ke Rumahweb