
PHP merupakan salah satu bahasa pemrograman backend yang sangat populer di kalangan developer. Karena PHP merupakan bahasa pemrograman open source, memiliki struktur yang baik, dan mudah digunakan.
Namun ketika Anda memilih pemrograman PHP sebagai backend website Anda, Anda perlu memperhatikan keamanan dari program PHP yang Anda buat. Tujuannya agar website yang Anda buat tidak mudah diretas oleh hacker.
Biasanya hacker akan menargetkan data pribadi pengunjung, menjual produk ilegal di website tanpa sepengetahuan Anda, mencuri uang dari transaksi yang Anda lakukan, dan menampilkan iklan yang akan memperlambat website Anda.
Baca Juga :
Untungnya, ada beberapa solusi untuk meningkatkan keamanan program PHP Anda. Itulah yang akan kami bahas dalam panduan ini. Untuk memudahkan Anda, kami akan menjelaskan beberapa serangan pada PHP dan memberikan solusi untuk menghindari serangan PHP.
Daftar isi tutup
1 3+ Contoh serangan PHP
Baca Juga:
1.1 1. Pembuatan Skrip Lintas Situs (XSS)
1.2 2. Pembajakan Sesi
1.3 3. Pemalsuan Permintaan Lintas Situs (CSRF)
1.4 4. Mencegah Serangan Injeksi SQL
2 7 Tips Keamanan PHP yang Harus Anda Ketahui
2.1 1. Gunakan htmlspecialchars
2.2 2. Simpan Sesi dengan IP
2.3 3.Gunakan Objek Data PHP (PDO)
2.4 4. Sembunyikan File dari Browser
2.5 5. Pengaturan Dokumen Root
2.6 6. Selalu gunakan SSL
2.7 7. Perbarui PHP secara berkala
3 Sekarang Apakah Anda Siap Melindungi Keamanan PHP?
3+ Contoh serangan PHP
Berikut ini adalah penjelasan dari empat contoh serangan terhadap PHP. Dari keempat contoh ini, kami berharap dapat membantu Anda memahami bagaimana serangan pada PHP terjadi.
- Pembuatan Skrip Lintas Situs (XSS)
Cross site scripting adalah salah satu serangan eksternal paling berbahaya yang dilakukan dengan memasukkan kode atau skrip berbahaya ke dalam situs web. Skrip ini dapat memengaruhi kinerja situs web dan sering digunakan untuk mencuri data.
Biasanya peretas memaksa akses ke situs web Anda. Tujuannya adalah untuk mendapatkan akses ke cookies , session , history , dan sebagainya. Dampak XSS tidak hanya dari sisi pemilik website, tetapi juga dari pengunjung website. Pengunjung biasanya akan mendapatkan tampilan website yang penuh dengan iklan atau bahasa asing yang tidak bisa dibaca.
- Pembajakan Sesi
Session hijacking adalah serangan yang sering digunakan oleh hacker untuk mengambil data berupa session ID Anda. Tujuannya adalah untuk mendapatkan akses akun yang diinginkan hacker. Misalnya, akun login situs web, database, dan data pengguna.
Dengan menggunakan ID sesi, peretas dapat memvalidasi sesi Anda. Anda melakukan ini dengan mengirimkan permintaan ke server. Kemudian cari array $ _SESSION untuk menemukan akun/data sesi tanpa sepengetahuan Anda. Cara ini biasanya dilakukan setelah melalui Cross Site Scripting (XSS).
- Pemalsuan Permintaan Lintas Situs (CSRF)
Dalam serangan pemalsuan permintaan lintas situs (CSRF), peretas dapat melakukan tindakan yang tidak diinginkan di situs web. Dengan menggunakan CSRF, hacker akan mendapatkan akses website secara penuh. sehingga peretas dapat memodifikasi data situs web atau memodifikasi fungsi program.
Serangan ini akan memaksa pengguna untuk mengubah permintaan, seperti mentransfer dana tanpa disadari atau bahkan menghapus semua data dalam database. Serangan CSRF hanya dapat terjadi ketika Anda mengklik tautan yang telah dikirim dan disamarkan oleh peretas.
Berikut ini adalah permintaan GET yang telah dimasukkan peretas ke dalam kode situs web Anda untuk mengirim uang ke akun lain.
DAPATKAN http://bank.com/transfer.do?acct=TIM&amount=100 HTTP/1.1
Sekarang, jika Anda mengklik tautan di bawah, Anda akan secara otomatis mengirim uang ke akun lain dengan jumlah yang ditunjukkan.
http://bank.com/transfer.do?acct=Dapit&amount=100000
Tautan ini biasanya dikirim melalui email yang disamarkan sebagai file atau gambar yang memungkinkan Anda mengklik file tersebut.
- Mencegah Serangan Injeksi SQL
Injeksi SQL adalah serangan paling umum pada skrip PHP. Satu permintaan kueri dapat membahayakan semua data situs web Anda. Dalam serangan ini, peretas biasanya akan mencoba mengubah data yang Anda kirim melalui kueri.
Misalkan Anda secara langsung memproses data pengguna dalam kueri SQL, dan tiba-tiba, peretas diam-diam menggunakan karakter yang berbeda untuk mem- bypass akun Anda. Artinya, akun peretas akan mengambil alih akses dari akun Anda.
Sebagai contoh, lihat kueri SQL di bawah ini.
$sql = “PILIH * FROM pengguna WHERE username = ‘” . $nama pengguna . “’;
Kueri $ username dapat berisi data yang dimodifikasi. Sehingga dari query tersebut dapat merusak database termasuk menghapus seluruh database hanya dalam sekejap mata.
7 Tips Keamanan PHP yang Harus Anda Ketahui
Nah, Anda sudah mengetahui berbagai jenis serangan terhadap keamanan PHP. Kini saatnya Anda mencari tahu berbagai cara untuk meningkatkan keamanan PHP.
Tips keamanan PHP di bawah ini kami tujukan untuk Anda yang baru memulai pengembangan website. Terutama bagi anda yang masih belajar tentang bahasa pemrograman PHP. Cara di bawah ini memang terkesan basic, tapi jangan remehkan efeknya.
- Gunakan htmlspecialchars
Untuk dapat melihat skrip yang mencurigakan dan menghindari Cross-Site Scripting (XSS) , gunakan htmlspecialchars dalam kode PHP Anda . Ini akan membantu Anda mengonversi karakter dalam bentuk PHP ke HTML. Sebagai contoh:
- & (tanda “dan” atau ampersand ) → & amp;
- ”( Kutipan ganda atau ganda ) → & quot;
- ‘( kutipan tunggal ) → & # 039;
- <(tandatangani kurang dari atau kurang dari n) → & lt;
- > ( lebih besar dari atau lebih besar dari tanda ) → & gt;
Anda juga dapat menggunakan ENT_QUOTES dalam kode situs web Anda. ENT_QUOTES akan mengubah tanda petik tunggal dan ganda (“dan ‘) menjadi bentuk HTML. Dengan begitu, Anda dapat lebih mudah memeriksa skrip yang mencurigakan.
- Simpan Sesi dengan IP
Untuk mencegah pembajakan sesi , Anda harus selalu menyimpan sesi dengan alamat IP khusus yang sering Anda gunakan. Caranya, tambahkan kode ini ke dalam skrip Anda.
$IP = getenv(“REMOTE_ADDR” );
Metode ini dapat membantu Anda untuk membatalkan sesi setiap kali ada permintaan yang mencurigakan dan tanpa sepengetahuan Anda. Kode di atas juga akan memberikan informasi bahwa seseorang sedang mencoba mengakses sesi Anda.
3.Gunakan Objek Data PHP (PDO)
Untuk menghindari serangan injeksi SQL , Anda harus menggunakan Objek Data PHP atau PDO. PDO adalah ekstensi tambahan yang membantu Anda mengakses database dengan aman. Tidak peduli apa jenis database yang Anda gunakan.
Namun, PDO tidak dapat digunakan untuk mengedit SQL atau menambahkan fitur tertentu. Namun justru karena itu, Anda dapat menghindari serangan injeksi SQL.
- Sembunyikan File dari Browser
Framework PHP yang menggunakan arsitektur MVC (Model View Controller), Laravel atau CodeIgniter misalnya, memiliki tampilan direktori file yang terstruktur. Tidak semua file akan diproses oleh browser. Namun, file tersebut masih terlihat.
Di sini, masalahnya. Kebanyakan pengembang awam meletakkan semua file situs web di direktori root . Ini memudahkan peretas untuk membobol data situs web penting. Karena browser dapat melihat semua file tersebut, maka akan mudah bagi hacker untuk memasukkan kode/script berbahaya ke dalam website Anda.
Solusinya, pindahkan file dari folder root ke folder server publik . Tujuannya agar web browser tidak mudah melihat file-file penting dari website.
- Pengaturan Dokumen Root
Akar dokumen untuk aplikasi PHP apa pun di server mana pun harus disetel ke direktori / var / www / html sehingga pengguna dapat mengakses situs web Anda melalui browser. Namun dalam beberapa kasus, saat Anda mengembangkan API dengan kerangka kerja seperti Laravel dan CodeIgniter, Anda perlu memperbarui webroot ke folder / public .
Tujuan pengaturan webroot ke var / www / html / public adalah untuk menyembunyikan file sensitif seperti .htaccess dan .env yang berisi variabel lingkungan, akses database, email, API pembayaran, dll.
- Selalu gunakan SSL
Semua browser web modern seperti Google Chrome, Firefox, Opera, dan lainnya, selalu menyarankan untuk menggunakan protokol HTTPS untuk situs web. Karena HTTPS menyediakan protokol akses yang aman dan terenkripsi untuk situs yang tidak dipercaya.
Sertifikat SSL juga memperkuat situs web Anda dari serangan XSS dan mencegah peretas menempelkan kode ke situs web Anda. Untuk mendapatkan sertifikat SSL Anda dapat mengikuti panduan pada artikel SSL gratis di blog kami.
- Perbarui PHP secara teratur
Saat ini, versi PHP paling stabil dan terbaru yang tersedia adalah PHP 7.4.5 . Saya sarankan Anda harus memperbarui situs web Anda untuk menggunakan versi PHP terbaru.
Jika Anda masih menggunakan PHP 5.6 maka Anda akan mengalami banyak masalah dalam memperbarui PHP. Karena Anda juga perlu memperbarui kode situs web Anda dan mengubah beberapa fungsi logika seperti hashing kata sandi dan lainnya.
Jika Anda menggunakan PHPStorm maka Anda dapat menggunakan Inspeksi Kompatibilitas PHP 7, yang akan menunjukkan kode mana yang menyebabkan kesalahan.
Sekarang Apakah Anda Siap Melindungi Keamanan PHP?
Bahasa pemrograman PHP selalu rentan terhadap serangan eksternal. Tetapi jika Anda menggunakan tips keamanan PHP yang telah kami berikan di atas, Anda dapat dengan mudah mengamankan situs web Anda dari serangan peretas.
Terlepas dari tips keamanan PHP ini, ada banyak teknik yang dapat membantu Anda mengamankan situs web Anda dari serangan eksternal, seperti menggunakan cloud hosting terbaik yang memiliki fitur keamanan, perlindungan DdOS, perlindungan malware, SSL gratis, dan lainnya.