Enkripsi Script PHP Agar Source Code Web PHP Tidak Bisa Dibaca, Menggunakan Fungsi Evel dan Encode 64 cukup mudah dilakukan akan tetapi hasilnya cukup efektif untuk menyembunyikan kode program PHP sehingga sulit dibaca atau diedit oleh orang awam.
Tetapi sebenarnya cara ini bukan benar-benar mengamankan Script PHP akan tetapi hanya membuat bingung atau istilahnya obfuscate PHP script sehingga susah untuk dipecahkan walaupun oleh orang yang paham (programmer) dan bahkan kemungkinan besar tidak akan bisa dibaca atau dipecahkan oleh orang awam.
Dalam contoh program yang penulis buat terdiri dari 4 buah file, dengan urutan sebagai berikut :
1. decoded.php (file PHP asli yang dapat dibaca)
2. php-encoder.php (script PHP untuk mengenkripsi script yang ada di file decoded.php menjadi file encoded.php.
3. encoded.php (file PHP yang sudah dienkripsi sehingga tidak dapat dibaca tetapi masih dapat dijalankan secara sempurna.
4. php-decoder.php (script PHP untuk mengembalikan script terenkripsi yang ada pada file encoded.php menjadi file script PHP yang dapat dibaca kembali menjadi file decoded.php.
Jadi urutan pengetesannya kira-kira sebagai berikut :
decoded.php -> php-encoder.php -> encoded.php -> php-decoder.php -> decoded.php -> dst.
Misalnya kita buat contoh file script PHP pada decoded.php sebagai berikut :
decoded.php :
<?php
echo date("Y-m-d")." Hello World";
?>
Jika dijalankan dengan cara memanggil halaman web tersebut dengan URL http://localhost/php-encoder/decoded.php akan tampil sebagai berikut :
Kemudian kita buat program PHP dengan nama php-encoder.php untuk mengenkripsi script php yang ada pada file decoded.php.
php-encoder.php :
<?php
/*$php_code =
'<?php
echo date("Y-m-d")." Hello World";
?>';*/
$php_code = file_get_contents("decoded.php");
//$_F=__FILE__;
$_X='?>'.$php_code;
$_X=strtr($_X,'aouie123456','123456aouie');
$_X=base64_encode($_X);
//$_R=ereg_replace('__FILE__',"'".$_F."'",$_X);
$result = "<?php \$_F=__FILE__;\$_X='".$_X."';
eval(base64_decode('JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydHIoJF9YLC
cxMjM0NTZhb3VpZScsJ2FvdWllMTIzNDU2Jyk7JF9SPWVyZWdfcmVwbGFjZSgnX19GS
UxFX18nLCInIi4kX0YuIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOyRfWD0wOw=='));?>";
file_put_contents("encoded.php", $result);
echo str_replace('<','<',str_replace('>','>',$result));
?>
Jika halaman php-encoder.php dijalankan dengan cara memanggil http://localhost/php-encoder/php-encoder.php. Hasilnya akan didapatkan file baru dengan nama encoded.php :
encoded.php :
<?php $_F=__FILE__;$_X='Pz48P3BocA0KNWNoMiBkMXQ1KCJZLW0tZCIpLiIgSDVsbDIgVzJybGQiOw0KPz4=';
eval(base64_decode('JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydHIoJF9YLC
cxMjM0NTZhb3VpZScsJ2FvdWllMTIzNDU2Jyk7JF9SPWVyZWdfcmVwbGFjZSgnX19GS
UxFX18nLCInIi4kX0YuIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOyRfWD0wOw=='));?>
Kenyataanya jika halaman encoded.php yang sudah terenkripsi dan tidak dapat dibaca ini dijalankan dengan cara menanggil http://localhost/php-encoder/encoded.php, ternyata hasilnya persis seperti ketika menjalankan halaman decoded.php.
Untuk mengembalikan file yang terlah terenkripsi menjadi script PHP semula, kita buat file php-decoder.php untuk mengubah file encoded.php kembali menjadi file decoded.php yang mampu dibaca kembali.
php-decoder.php
<?php
$_F=__FILE__;
$encode = file_get_contents("encoded.php");
$_X = substr($encode, strpos($encode, "='") + 2, strpos($encode, "';") - strpos($encode, "='") - 2);
//$_X='Pz48P3BocA0KNWNoMiAiSDVsbDIgVzJybGQiOw0KPz4=';
$_X=base64_decode($_X);
$_X=strtr($_X,'123456aouie','aouie123456');
$_R=ereg_replace('__FILE__',"'".$_F."'",$_X);
$_R=substr($_R, 2, strlen($_R)-2);
file_put_contents("decoded.php", $_R);
echo str_replace('<','<',str_replace('>','>',$_R));
?>
Ketika dijalankan dengan memanggil URL http://localhost/php-encoder/php-decoder.php maka akan dihasilkan file decoded.php kembali dengan isi persis seperti semula.
decoded.php
<?php
echo date("Y-m-d")." Hello World";
?>
File project selengkapnya dapat anda download disini. Jika bingung cara download, silakan lihat caranya disini.
Semoga bermanfaat :D
mass setelah saya coba terdapat error
BalasHapusDeprecated: Function ereg_replace() is deprecated in C:\xampp\htdocs\rahasia\encoded.php(4) : eval()'d code on line 1
mohon solusinya
nanti semua file nya di upload kemana ya mas?
BalasHapusmaaf masih newbie
thanks gan infonya
BalasHapuskunjungi hargaalatantrianc2000.blogdetik.com pusatmesinantrianc2000.blogspot.co.id
pusat alat antrian otomatis +software dan alat survey kepuasan pelanggan
kami menjual alat antrian:
-alat antri sederhana
-alat antri berbasis android
-survey kepuasaan layanan
-kiosk
-dan juga berbagai macam type tentunya
hubungi www.alatantrian.com
denny@cendana2000.com 082130345677
kalau mau ganti key nya gmn gan ? "aouie123456", misal kita mau pakai kode kita sendiri
BalasHapusWah mantap gan, Lumayan Buat Belajar
BalasHapus