Kriptologi dalam Pengembangan Web: Mengamankan Sistem dengan PHP dan CodeIgniter 4

12 Jun 2026 | Oleh: rastono sumardi

Kriptologi dalam Pengembangan Web: Mengamankan Sistem dengan PHP dan CodeIgniter 4

Dalam ekosistem pengembangan web, terutama saat mengelola portal layanan publik tingkat regional, sistem pelaporan pendidikan, atau integrasi dengan berbagai API pihak ketiga, keamanan data bukanlah sekadar fitur tambahan, melainkan fondasi utama. Di sinilah Kriptologi memainkan peran krusial.

Kriptologi adalah ilmu yang mempelajari teknik-teknik matematika yang berhubungan dengan aspek keamanan informasi, seperti kerahasiaan data, integritas data, serta autentikasi. Ilmu ini dibagi menjadi dua cabang utama: Kriptografi (teknik menyembunyikan pesan) dan Kriptanalisis (teknik memecahkan pesan yang disembunyikan).

Bagi seorang pengembang yang sehari-hari berkutat dengan arsitektur web, implementasi kriptologi yang paling sering ditemui adalah Hashing dan Enkripsi (Encryption).

1. Memahami Perbedaan Hashing dan Enkripsi

Sebelum masuk ke baris kode, sangat penting untuk membedakan kedua konsep ini agar arsitektur basis data MySQL yang dirancang tetap efisien dan aman.

  • Hashing: Proses satu arah (one-way). Data yang diubah menjadi hash tidak bisa dikembalikan ke bentuk aslinya.

    • Fungsi: Ideal untuk menyimpan kata sandi pengguna atau memverifikasi integritas file.

  • Enkripsi: Proses dua arah (two-way). Data yang dienkripsi (Ciphertext) dapat dikembalikan ke bentuk aslinya (Plaintext) menggunakan kunci (Key) yang benar.

    • Fungsi: Digunakan untuk menyimpan data sensitif yang harus bisa dibaca kembali oleh sistem, seperti token API, data pribadi pengguna, atau konfigurasi Multi-Factor Authentication (MFA).

2. Penerapan Kriptologi dalam PHP Native

PHP modern telah dilengkapi dengan fungsi bawaan yang sangat kuat untuk menangani kriptologi tanpa perlu bergantung pada pustaka eksternal yang berat.

A. Hashing Kata Sandi

Jangan pernah menggunakan md5() atau sha1() untuk kata sandi karena sangat rentan terhadap serangan brute-force dan rainbow tables. Gunakan API Password Hashing bawaan PHP.

PHP
// 1. Membuat Hash dari Kata Sandi Baru
$password_plain = "SandiSuperAman2026!";
$password_hash = password_hash($password_plain, PASSWORD_DEFAULT);

// Hasil $password_hash akan disimpan ke dalam database MySQL (misal tipe VARCHAR 255)

// 2. Memverifikasi Kata Sandi (Saat Proses Login)
$input_login = "SandiSuperAman2026!";
if (password_verify($input_login, $password_hash)) {
    echo "Login Berhasil!";
} else {
    echo "Kredensial tidak valid.";
}

B. Enkripsi Data Sensitif dengan OpenSSL

Untuk data yang perlu dienkripsi dan didekripsi, PHP menyediakan ekstensi OpenSSL.

PHP
$data_sensitif = "Kunci-API-Layanan-Digital-Rahasia";
$metode_enkripsi = "AES-256-CBC";
// Kunci ini harus disimpan dengan aman, misal di environment variables
$kunci_rahasia = "KunciSuperRahasiaYangPanjangnya32Byte!"; 
$iv_length = openssl_cipher_iv_length($metode_enkripsi);
$iv = openssl_random_pseudo_bytes($iv_length);

// Proses Enkripsi
$data_terenkripsi = openssl_encrypt($data_sensitif, $metode_enkripsi, $kunci_rahasia, 0, $iv);
// Simpan $data_terenkripsi dan $iv secara bersamaan (misal dengan base64_encode)
$payload_simpan = base64_encode($iv . $data_terenkripsi);

// Proses Dekripsi
$payload_ambil = base64_decode($payload_simpan);
$iv_ambil = substr($payload_ambil, 0, $iv_length);
$data_cipher = substr($payload_ambil, $iv_length);
$data_asli = openssl_decrypt($data_cipher, $metode_enkripsi, $kunci_rahasia, 0, $iv_ambil);

3. Penerapan Kriptologi di CodeIgniter 4 (CI4)

Sebagai framework yang mengedepankan praktik modern, CodeIgniter 4 membuat penerapan kriptologi menjadi jauh lebih elegan dan rapi, terutama melalui layanan Enkripsi bawaannya.

A. Konfigurasi Awal di CI4

Sebelum menggunakan fitur enkripsi di CI4, Anda harus mengatur kunci enkripsi di file .env root proyek Anda.

Cuplikan kode
# Buka file .env dan atur app.encryptionKey
# Anda bisa menghasilkan kunci ini dengan perintah: php spark key:generate
encryption.key = hex2bin:0e1a2b3c4d5e6f... (contoh hasil generate)
encryption.driver = OpenSSL

B. Menggunakan Library Encryption CI4

CI4 membungkus kerumitan OpenSSL menjadi Service yang sangat mudah dipanggil di dalam Controller atau Model.

PHP
<?php

namespace App\Controllers;

class KeamananData extends BaseController
{
    public function kelolaDataSensitif()
    {
        // Memanggil service encrypter
        $encrypter = \Config\Services::encrypter();

        $data_api = "Token_API_Kabupaten_12345";

        // 1. Mengenkripsi Data
        // CI4 otomatis menangani pembuatan IV (Initialization Vector) di belakang layar
        $data_terenkripsi = bin2hex($encrypter->encrypt($data_api)); 
        
        // Simpan $data_terenkripsi ke database melalui PDO/Model

        // 2. Mendekripsi Data
        $data_asli = $encrypter->decrypt(hex2bin($data_terenkripsi));

        return "Data asli berhasil dikembalikan: " . $data_asli;
    }
}

4. Praktik Terbaik Integrasi dengan PDO & MySQL

Meskipun data sudah dienkripsi atau di-hash pada level aplikasi (PHP/CI4), interaksi dengan database tetap menjadi titik rentan jika tidak dikelola dengan benar.

Saat menyisipkan atau mengambil data terenkripsi dari MySQL, selalu gunakan Prepared Statements melalui PDO untuk mencegah kelemahan keamanan seperti SQL Injection.

PHP
// Contoh pemanfaatan PDO Native yang aman untuk menyimpan hash/enkripsi
$stmt = $pdo->prepare("INSERT INTO users (username, password_hash, api_token_encrypted) VALUES (:username, :password, :token)");

$stmt->execute([
    ':username' => $username,
    ':password' => $password_hash,      // Menggunakan password_hash()
    ':token'    => $data_terenkripsi    // Menggunakan openssl_encrypt atau CI4 Encrypter
]);

Kesimpulan

Menerapkan kriptologi dalam arsitektur web modern adalah langkah mutlak untuk memastikan integritas dan kerahasiaan sistem. Baik menggunakan fungsi native PHP maupun memanfaatkan library bawaan CodeIgniter 4, pastikan Anda membedakan penggunaan Hashing (untuk kata sandi) dan Enkripsi (untuk data yang perlu dipulihkan). Dipadukan dengan rutinitas pengamanan basis data via PDO, aplikasi web yang Anda kembangkan akan memiliki dinding pertahanan yang solid terhadap ancaman siber.

Ditulis oleh:

rastono sumardi

Kontributor Banggai Kreatif

Bagikan Artikel Ini: