|
Pertama kali saya ingin berterima kasih kepada seluruh
pengembang program-program open source dan terlebih lagi untuk para
pengembang PHP. Pada kesempatan kali ini saya ingin berbagi pengalaman saya
tentang pemrograman web dengan PHP.
Saya juga minta maaf bagi semua saja yang merasa pernah membahas tentang
materi yang saya sampaikan ini, karena saya tidak menyebutkan nama anda.
Terus terang (bukan untuk sombong) materi ini saya dapatkan dari pengalaman
sekitar 1/2 tahun megang PHP, dan materi yang saya dapatkan banyak dari
pengalaman bongkar program orang dan baca manual dari php.org.
Tips sederhana pengamanan aplikasi PHP menurut saya bukan judul yang
berlebihan. Kayaknya dah cukup basa-basinya lebih baik langsung masuk ke
materi. Untuk sedikit melakukan pengamanan aplikasi PHP, bisa dilakukan
dengan langkah berikut :
|
1
|
Pastikan
register global pada kondisi off, bisa disetting pada php.ini ->
register_globals = Off.. Bagi beberapa programer yang sudah lama
berkecimpung di PHP mungkin akan sedikit kaku dengan setting ini, karena
mereka biasa menggunakan $nama_argumen, untuk mengambil nilai dari argumen
yang dilewatkan melalui url atau yang didapat dari form. Tapi kalau dengan
setting ini pengambilan nilai dari argumen dapat dilakukan dengan
$HTTP_GET_VARS[] atau $HTTP_POST_VARS. Dengan setting ini saya katakan
omong kosong kalau form dengan method "get" tidak aman.
|
|
2
|
Buatlah
file index.html dalam setiap direktori dalam aplikasi yang dibangun, walau
file tersebut tidak dipakai, atau dengan kata lain tidak terdapat string
apapun., ini untuk mengatasi konfigurasi standart dari kebanyakan web
server yang akan menampilkan seluruh file dan direktori pada direktori yang
diminta, jika dalam direktori yang diminta tidak terdapat file default yang
otomatis akan dipanggil.
|
|
3
|
Tangani
semua argumen yang kita dapatkan baik dari url atau dari form, dan bila
ditemukan nilai argumen tidak sesuai dengan perjanjian pembangunan aplikasi
maka tangani keadaan tersebut, baik di alihkan ke halaman error, atau ada
banyak cara lain. Sebagai contoh ada 2 nilai yang diijinkan yaitu list,dan
tampil, maka anda bisa menanganinya dengan
----------------------------code------------------------------------
if($HTTP_GET_VARS["argumen"]=="list")
penanganan1();
elseif($HTTP_GET_VARS["argumen"]=="tampil")
penangan2();
else
header("Location:./error.php");
-----------------------------code-----------------------------------
|
|
4
|
Bila
aplikasi yang dibuat memiliki banyak pengguna dan ada tingkatan otoritas
pengguna, buatlah tabel pada database untuk menyimpan data otoritas.
Sebagai contoh seperti berikut (dengan MySQL )
------------------------MySQL query---------------------------------
CREATE TABLE `kewenangan` (
`idkewenagan` tinyint(4) NOT NULL default '0',
`kewenagan` varchar(255) NOT NULL default '',
PRIMARY KEY (`idkewenagan`)
) TYPE=MyISAM;
CREATE TABLE `pengguna` (
`username` varchar(255) NOT NULL default '',
`password` varchar(32) binary NOT NULL default '',
`idkewenagan` tinyint(4) NOT NULL default '0',
PRIMARY KEY (`username`)
) TYPE=MyISAM;
------------------------MySQL query-------------------------------
dan buatlah fungsi untuk mengecek otoritas setiap pengguna yang masuk ke
sistem (untuk lebih lengkap bisa dibaca pada artikelku sebelumnya yang
berjudul).
-------------------------fungsi cek otoritas---------------------------
function cekotoritas($username,$otoritas,$mysqllink) {
$sqlcek="select username from pengguna,kewenagan where
pengguna.idkewenangan=kewenagan.idkewenangan and
kewenangan.idkewenangan='$otoritas' and pengguna.username='username'";
$kerjakancek=mysql_query($sqlcek,$mysqllink);
$datacek=mysql_fetch_row($$kerjakancek);
if($datacek[0]!=NULL)
return 1;
return 0;
}
-------------------------fungsi cek otoritas---------------------------
dan gunakan fungsi ini pada awal setiap halaman, untuk cek otoritas
pengguna, apakah berhak mengakses halaman tersebut atau tidak. Sangat
disarankan untuk menggunakan fungsi ini pada halaman pemasukan data ke database,
jadi sebelum data dimasukan dicek dulu apakah user bersangkutan berhak atau
tidak. Cara ini untuk menghindari pemasukan data langsung melalui url, jika
si includer tahu path dari halaman pemasukan data.
|
|
5
|
Sangat
disarankan untuk membuat privilege yang berbeda pada database untuk setiap
pengguna yang diijinkan mengakses aplikasi tersebut. Mungkin cara ini akan
saya bahas tersendiri pada artikel ku berikutnya. karena cara ini cukup
banyak kalau di bahas.
|
Mungkin untuk kali ini sekian dulu dari saya, oh ya lupa, ada
1 lagi catatan bahwa beberapa tips diatas akan menyebabkan server anda
bekerja lebih keras. Tetapi kalau aplikasi yang dibangun adalah aplikasi yang
penting dan memiliki resiko dan tanggung jawab besar, maka sangat disarankan
menggunakan server yang tahan banting atau bisa digunakan sistem clustering
baik di web server atau di database server
|