Enkripsi Data Form Tanpa SSL Dengan PHP Form Encryption

Enkripsi Data Form Tanpa SSL Dengan PHP Form Encryption

Enkripsi tidak hanya dibutuhkan oleh perusahaan atau organisasi besar. Bisnis kecil dan juga organisasi nonprofit juga membutuhkan enkripsi untuk melindungi informasinya. Mereka perlu melindungi data personal yang dimilikinya.

Solusi yang ideal adalah dengan menggunakan enkripsi SSL/TLS, namun hal tersebut tidak selalu tersedia untuk semua skenario. Maka kali ini kami membuat tutorial mengenai bagaimana cara mengimplementasikan enkripsi data form tanpa harus mengandalkan pada koneksi SSL/TLS dengan menggunakan PHP Form Encryption.

PHP Form Encryption

PHP Form Encryption menawarkan solusi enkripsi pada level aplikasi di aplikasi PHP dan JavaScript untuk mengenkripsi data form. Sementara enkripsi SSL/TLS menyediakan mekanisme yang aman untuk melindungi transmisi data pada jaringan publik, namun hal ini tidak selalu tersedia.

Contohnya jaringan private yang digunakan pengguna bisnis kecil dengan menggunakan Wi-Fi dapat mengekspos informasi sensitif. Ada banyak situasi dimana infrastruktur teknis atau sumber daya ekonomi tidak memungkinkan untuk memasang protokol komunikasi yang aman.

Terkadang enkripsi pada level aplikasi bisa menjadi cukup, atau bahkan dapat melengkapi sesi dan/atau tingkat keamanan transmisi.

Bagaimana cara kerjanya?

1. Server mendapatkan permintaan dari klien mengenai halaman website yang berisi form

2. Server akan membuat sesi RSA key pair, dan mengirimkan public key yang dimasukan pada respon HTML

3. Web Browser mengisi form dan membuat key AES-256, yang dikembalikan ke server dengan public key yang didapatkan dan form data yang telah terenkripsi AES. Web browser akan menyimpan AES key ini menggunakan penyimpanan di komputer lokal.

4. Server mendapatkan RSA-encrypted AES key dan akan mendekripsinya menggunakan RSA private key. Kemudian AES key akan digunakan untuk mendekripsi data form, proses enkripsi/dekripsi akan terus hingga sesi berakhir.

Implementasi pada PHP

Sesi harus dimulai dengan menggunakan Cryptopost class, seperti:

session_start(); 

require_once './Cryptopost.class.php';

$crypto = new Cryptopost(1024'./openssl.cnf');
if (isset($_POST['cryptoPost'])) {
 $formId $crypto->decodeForm();
}

Jadi, sekarang kita tahu id dari form dan $_POST superglobal berisi data yang telah didekripsi. Sebelumnya $_POST hany akan berisi seperti ini:

var_dump($_POST) result:
array(2) {
["cryptoPost_key"]=>
string(256) "5df90b95ec4fab45d50d34c917c6578f939ccbfadf9486f133850d47a3d6b2c82a277a3468ca11fc7b9163c385eacc2a3a4d091cf8797e55d681b0279058a9f3e334092fb03791931d22ca3847f4f9d4dec0d0a47936f012b6be9723981088d0b049cff46a8e81ec93e2b4f7c3a387d36e2033754d1420a8dc800a4eec6cd0e9"
["cryptoPost"]=>
string(242) "U2FsdGVkX1/53Ut6KFi36Ou/e3lIJz/5pf8FuPb1Yh//WdefKb0iyCke2/g0QPD5
BeknGV4L8dveRDbQ4kXm5YNi3nyG+/F8JWKDipA9ygHPf5KdFr6pYcfzNQjwwfd8
rIC19cl9IOJcs171tm0OBVknaloQWDwpLM/KjISdwwPiRGCtcBhkYrcdsgv6JcwD
aVuU4VunXdWJji9WAKD+1bJrThq2VLjEHhELl26y4vI="
}

Perlu dicatat bahwa entry “crytoPost_key” hanya akan didapatkan satu kali pada saat server pertama kali menerima form. Post request hanya akan dimasukan pada entry “cryptoPost” jika key telah direset.

Untuk mengirim form yang terenkripsi pada server, bisa memasukan kode untuk memanggil objek JavaScript cryptoPost seperti:

<form id="form1" method="POST" action="test.php" onsubmit="return cryptoPost.encrypt('form1')">

Web browser mungkin perlu menenkripsi record untuk mengedit. Server dapat mengirimkan seperti ini:

$record = array(
"name" => $name,
“address” => $address,
“zipCode” => $zip
);
$encrypted = $crypto->encodeData($record, $formId);

Dan terakhir, pada akhir kode HTML ditambahkan:

<script>cryptoPost.decrypt('<?php echo $encrypted;?>')</script>

Kesimpulan

Paket ini menyediakan cara yang mudah dan simpel untuk melindungi data dengan kriptografi tanpa memerlukan SSL/TLS. PHP Form Encryption membutuhkan ekstensi OpenSSL dan PHP 5.4 atau lebih baru.

 

Jakartawebhosting.com menyediakan layanan PHP Hosting, dengan kecepatan dan stabilitas pusat data dan server yang baik, up time server 99,9%, team support yang siap membantu 24 jam dan biaya langganan yang menarik.

You may also like...