PHP adalah salah satu bahasa pemrograman backend yang sangat populer di kalangan developer. Karena PHP merupakan bahasa pemrograman yang open source, memiliki struktur yang baik, dan mudah digunakan.
Tetapi saat Anda memilih pemrograman PHP sebagai backend website, Anda perlu memperhatikan keamanan dari program PHP yang Anda buat. Tujuannya agar website yang Anda buat tidak mudah diretas oleh hacker.
Biasanya para hacker akan menyasar data pribadi pengunjung, menjual produk ilegal di website tanpa sepengetahuan Anda, mencuri uang dari transaksi yang Anda lakukan, hingga menampilkan iklan iklan yang akan membuat website Anda lemot.
3+ Contoh Serangan pada PHP
Berikut ini adalah penjelasan dari empat contoh serangan pada PHP. Dari keempat contoh ini, kami harap dapat membantu Anda memahami bagaimana serangan pada PHP terjadi.
1. Cross-Site Scripting (XSS)
Cross site scripting adalah salah satu serangan eksternal paling berbahaya yang dilakukan dengan cara memasukkan kode atau skrip berbahaya ke dalam website. Skrip tersebut dapat mempengaruhi kinerja website dan sering digunakan untuk mencuri data.
Biasanya para peretas meminta akses website Anda secara paksa. Tujuannya, untuk mendapatkan akses ke cookies, sessions, history, dan lain-lain. Dampak dari XSS tidak hanya dari sisi pemilik website, tapi juga dari pengunjung website. Pengunjung biasanya akan mendapatkan tampilan website yang penuh iklan atau bahasa asing yang tidak dapat dibaca.
2. Session Hijacking
Session hijacking adalah serangan yang sering digunakan para peretas untuk mengambil data berupa session ID Anda. Tujuannya untuk mendapatkan akses akun yang diinginkan peretas. Misalnya akun login website, database, dan data user.
Dengan menggunakan session ID, peretas dapat melakukan validasi session Anda. Caranya dengan mengirimkan request ke server. Lalu mencari array $_SESSION untuk mencari session akun/data tanpa sepengetahuan Anda. Cara ini biasanya dilakukan setelah melalui Cross Site Scripting (XSS).
3. Cross-Site Request Forgery (CSRF)
Dalam serangan Cross site request forgery (CSRF), peretas dapat melakukan tindakan yang tidak diinginkan pada situs website. Dengan menggunakan CSRF peretas akan mendapatkan akses penuh website. sehingga peretas dapat memodifikasi data website atau memodifikasi function program.
Serangan ini akan memaksa pengguna untuk mengubah request, seperti mentransfer dana tanpa sadar atau bahkan menghapus seluruh data yang ada di database. Serangan CSRF hanya dapat terjadi ketika Anda mengklik sebuah link yang telah dikirim dan disamarkan oleh peretas.
Berikut ini adalah request GET yang telah disisipkan peretas pada kode website Anda untuk mengirimkan uang ke akun lain.GET http://bank.com/transfer.do?acct=TIM&amount=100 HTTP/1.1
Nah, sekarang apabila Anda melakukan klik pada link di bawah ini maka Anda akan otomatis mengirimkan uang ke akun lain dengan jumlah yang tertera.http://bank.com/transfer.do?acct=Dapit&amount=100000
Link tersebut biasanya dikirim melalui email dengan menyamarkan ke dalam bentuk file atau gambar yang memungkinkan Anda untuk melakukan action klik pada file tersebut.
4. Prevent SQL Injection Attacks
Injection SQL adalah serangan yang paling sering terjadi pada skrip PHP. Satu request query saja dapat membahayakan seluruh data website Ada. Dalam serangan ini, peretas biasanya akan coba mengubah data yang Anda kirimkan melalui query.
Misalkan Anda secara langsung memproses data pengguna dalam query SQL, dan tiba-tiba, peretas diam-diam menggunakan karakter yang berbeda untuk melakukan bypass akun Anda. Itu artinya, akun peretas akan mengambil alih akses dari akun Anda.
Sebagai contohnya, lihat query SQL di bawah ini.$sql = "SELECT * FROM users WHERE username = '" . $username . "';
Query $username dapat berisi data yang diubah. Jadi dari query tersebut dapat merusak database termasuk menghapus seluruh database hanya dalam sekejap mata.
7 Tips PHP Security yang Wajib Anda ketahui
Nah, Anda sudah tahu berbagai macam jenis serangan pada keamanan PHP. Kini saatnya Anda mengetahui berbagai cara untuk meningkatkan security PHP.
Tips PHP security di bawah, kami tujukan bagi Anda yang baru saja memulai pengembangan website. Terutama bagi Anda yang masih belajar mengenai bahasa pemrograman PHP. Cara di bawah ini memang kelihatannya dasar, tapi jangan remehkan efeknya.
1. Gunakan htmlspecialchars
Untuk bisa melihat script yang mencurigakan dan menghindari Cross-Site Scripting (XSS), gunakan htmlspecialchars di kodingan PHP Anda. Ini akan membantu Anda mengubah karakter di PHP menjadi bentuk HTML. Misalnya saja:
& (tanda “dan” atau ampersand) → &
” (tanda petik dua atau double quote) → "
‘ (tanda petik satu atau single quote) → '
< (tanda kurang dari atau less than) → <
> (tanda lebih dari atau greater than) → >
Anda juga bisa pakai ENT_QUOTES dalam kode website Anda. ENT_QUOTES akan mengubah karakter tanda petik tunggal dan ganda (“ dan ‘) ke dalam bentuk HTML. Dengan begitu, Anda bisa lebih mudah ketika mengecek script yang mencurigakan.
2. Simpan Session dengan IP
Untuk mencegah session hijacking, caranya Anda harus selalu menyimpan session dengan alamat IP khusus yang sering Anda gunakan. Caranya, tambahkan kode ini ke dalam script Anda.$IP = getenv ( "REMOTE_ADDR" );
Cara ini dapat membantu Anda untuk membatalkan session setiap kali ada request yang mencurigakan dan tanpa sepengetahuan Anda. Kode di atas juga akan memberikan informasi bahwa seseorang mencoba untuk mengakses session Anda.
3. Gunakan PHP Data Objects (PDO)
Untuk menghindari SQL injection attacks, Anda harus menggunakan PHP Data Objects atau PDO. PDO adalah ekstensi tambahan yang membantu Anda mengakses database secara aman. Tidak peduli jenis database yang Anda gunakan.
Namun, PDO ini tidak bisa digunakan untuk mengedit SQL atau menambahkan fitur tertentu. Tapi justru karena itulah, Anda bisa menghindari serangan SQL injection.
4. Sembunyikan File dari Browser
Framework PHP yang memakai arsitektur MVC (Model View Controller), Laravel atau CodeIgniter misalnya, memiliki tampilan direktori file yang terstruktur. Tidak semua file tersebut akan diproses oleh browser. Akan tetapi, file tersebut masih bisa dilihat.
Di sinilah, masalahnya. Kebanyakan developer awam meletakan semua file website pada direktori root. Ini mempermudah peretas untuk membobol data penting website. Karena browser dapat melihat semua file tersebut, sehingga peretas akan mudah untuk memasukkan kode/skrip berbahaya ke dalam website Anda.
Solusinya, pindahkan file dari folder root ke dalam folder public server. Tujuannya, agar web browser tidak mudah melihat file penting dari website.
5. Pengaturan Root Document
Root dokumen untuk aplikasi PHP di server apa pun harus diatur ke dalam direktori /var/www/html sehingga pengguna dapat mengakses situs web Anda melalui browser. Tetapi dalam beberapa kasus, saat Anda mengembangkan API dengan framework seperti Laravel dan CodeIgniter Anda perlu memperbarui webroot ke folder /public.
Tujuan untuk mengatur webroot ke var/www/html/public adalah untuk menyembunyikan file sensitif seperti .htaccess dan .env yang memuat environment variables, akses database, email, API pembayaran, dan lain-lain.
6. Selalu gunakan SSL
Semua web browser modern seperti Google Chrome, Firefox, Opera, dan lainnya, selalu merekomendasikan untuk menggunakan protokol HTTPS untuk website. Karena HTTPS menyediakan protokol akses yang aman dan terenkripsi untuk situs yang tidak dipercaya.
Sertifikat ssl juga memperkuat website Anda terhadap serangan XSS dan mencegah peretas untuk menyisipkan kode ke dalam website Anda. Untuk mendapatkan sertifikat SSL Anda dapat mengikuti panduan pada artikel ssl gratis yang ada di blog kami.
7. Update PHP secara teratur
Saat ini, versi PHP paling stabil dan terbaru yang tersedia adalah PHP 7.4.5. Saya sarankan Anda harus memperbarui website Anda untuk menggunakan versi PHP yang terbaru.
Apabila Anda masih menggunakan PHP 5.6 maka Anda akan memiliki banyak masalah saat melakukan update PHP. Karena Anda juga perlu memperbarui kode website Anda dan mengubah beberapa logika function seperti password hashing dan lain-lain.
Jika Anda menggunakan PHPStorm maka Anda dapat menggunakan PHP 7 Compatibility Inspection, yang akan menunjukkan kepada Anda kode mana yang menyebabkan Error.
Sekarang Anda Siap Melindungi Keamanan PHP?
Bahasa pemrograman PHP selalu rentan terhadap serangan eksternal. Tapi apabila Anda menggunakan tips PHP security yang telah kami berikan di atas, Anda dapat dengan mudah mengamankan website Anda dari serangan hacker.
Sumber: