Sabtu, 15 Maret 2014

Cara Meningkatkan Keamanan Database PHP

Peraturan pertama: Jangan pernah percaya kepada user anda

Anda seharusnya tidak pernah mempercayai user untuk mengirimkan data yang anda harapkan. Banyak orang berkata "Tidak ada orang jahat yang tertarik pada situsku". Sebenarnya itu tidak salah, mereka bukan semuanya user jahat yang bisa mengeksploitasi lubang security - masalah dengan mudah dapat timbul karena pengguna tidak sengaja melakukan sesuatu yang salah.

Jadi aturan dasar dari semua web development, dan mengetahuinya saja tidak cukup: jangan pernah mempercayai user anda. Anggaplah setiap bagian dari situs anda yang dikumpulkan dari data user berisi kode berbahaya. Termasuk data yang anda pikir telah diperiksa dengan validasi sisi klien, misalnya menggunakan JavaScript. Jika anda dapat mengelolanya, itu adalah awal yang baik. Jika keamanan PHP sangat penting bagi anda, peraturan ini adalah yang paling penting untuk dipelajari. Tulislah "PHP Security" di tempat kerja anda dengan huruf tebal dan besar ditempat yang mudah dilihat.

Error Message

Kesalahan adalah alat yang sangat berguna untuk programmer dan hacker. Seorang developer membutuhkan mereka untuk memperbaiki bug. Hacker dapat menggunakannya untuk mengetahui segala macam informasi tentang situs, dari struktur direktori server untuk informasi login database. Jika mungkin, lebih baik untuk mematikan semua error reporting dalam aplikasi live. PHP dapat diperintahkan untuk melakukan ini melalui .htaccess atau php.ini, dengan mengatur "error_reporting" ke "0". Jika Anda memiliki sebuah development environment, anda dapat mengatur level error reporting yang berbeda.

Manipulasi file

Beberapa situs yang sedang berjalan di web belakangan memiliki URL yang terlihat seperti ini:

index.php?page=contactus.html
File "index.php" kemudian langsung mencakup file "contactus.html", dan situs tampaknya bekerja. Tapi, user dapat dengan mudah mengubah "contactus.html" dengan sesuatu yang mereka suka. Misalnya, jika anda menggunakan Apache mod_auth untuk melindungi file dan menyimpan password dalam file bernama ".htpasswd" (nama file lama), maka jika pengguna mengunjungi alamat diatas, script akan memberi output username dan password:

index.php?page=.htpasswd
Dengan mengubah URL, pada beberapa sistem, untuk mereferensi file pada server lainnya, mereka bahkan bisa menjalankan PHP yang mereka tulis di situs anda. Takut? memang harus. Untungnya sekali lagi, cukup mudah untuk melindunginya. Pertama, pastikan anda telah menetapkan "open_basedir" di file php.ini anda, dan telah menetapkan "allow_url_fopen" untuk "off". Itu akan mencegah sebagian besar jenis serangan dengan mencegah masuknya remote file dan file sistem. Selanjutnya, jika bisa, periksa file yang direquest terhadap daftar file yang valid. Jika anda membatasi file yang dapat diakses menggunakan script ini, Anda akan menyelamatkan diri dari banyak rasa jengkel kemudian.

Tidak menggunakan setting default

Ketika MySQL terinstal, otomatis menggunakan username default "root" dan password kosong. SQL Server menggunakan "sa" sebagai user default dengan password kosong. Jika seseorang menemukan alamat server database anda dan ingin mencoba untuk log in, ini adalah kombinasi yang pertama mereka akan coba. Jika anda belum menetapkan password berbeda (dan username nya juga) tetap default, maka anda mungkin juga akan menemukan database anda telah dihapus dan nomor kartu kredit semua pelanggan dicuri. Ini berlaku untuk semua software database yang anda gunakan. Jika perangkat lunak datang dengan username atau password default, ubahlah mereka.

Meninggalkan file instalasi PHP tetap Online

Banyak program dilengkapi dengan file instalasi. Banyak dari ini diprogram self-deleting ketika menginstal, dan banyak aplikasi akan menolak untuk berjalan hingga anda menghapus file instalasi. Tapi, itu tidak menjamin tidak akan menarik perhatian hacker jika file instalasi masih online. Jika masih online, file mungkin masih berguna, dan seseorang dapat menggunakannya untuk menulis ulang seluruh situs anda.

Prediktabilitas

Mari kita bayangkan bahwa situs anda telah menarik perhatian orang yang jahat. Orang jahat ini ingin memecahkan administration area anda, dan mengubah semua Deskripsi Produk Anda menjadi "Ini produk menyebalkan". Bisa ditebak bahwa langkah pertama mereka akan pergi ke http://www.situsmu.com/admin/ - hanya dalam kasus alamat situs itu ada. Menempatkan file sensitif dan folder di suatu tempat yang mudah diprediksi seperti itu membuat pekerjaan hacker sedikit lebih mudah.

Dengan pemikiran ini, pastikan untuk menamai file sensitif dan folder anda dengan nama lain sehingga mereka sulit untuk menebak. Tempatkan admin area anda di http://www.situsmu.com/kjl3j6k4h56hgj45/ mungkin membuatnya lebih sulit untuk diketik dengan cepat, tetapi dapat menambahkan lapisan tambahan pada keamanan untuk situs anda. Pilih sesuatu yang mudah diingat jika anda membutuhkan alamat. Tetapi jangan memilih "admin" atau "administration" (atau username atau password anda). Pilih sesuatu yang tidak biasa.

Berlaku juga untuk nama pengguna dan sandi. Jika anda memiliki admin area, jangan gunakan "admin" sebagai username dan "password" sebagai password. Memilih sesuatu yang tidak biasa, idealnya mengandung huruf dan angka (beberapa hacker menggunakan sesuatu yang disebut "kamus attack", berusaha menemukan setiap kata dalam kamus sebagai password sampai mereka menemukan sebuah kata yang bekerja - jadi menambahkan beberapa digit ke ujung password menjadikan jenis serangan ini tidak berguna). Juga bijaksana untuk mengubah sandi anda dengan teratur (setiap bulan atau dua bulan sekali).

Terakhir, pastikan bahwa error message tidak memberikan petunjuk apa-apa. Jika admin area anda memberikan pesan kesalahan yang mengatakan "Unknown Username" ketika username salah dan "Wrong Password" ketika memasukan password yang salah, pengguna jahat akan tahu ketika mereka telah berhasil menebak username yang benar. Menggunakan pesan "Login Error" untuk kedua hal di atas berarti bahwa user berbahaya tidak akan tahu jika username atau password yang ia masukkan yang salah.

Tidak ada komentar:

Posting Komentar