Sering kali Web Developer mengalami kesulitan ketika akan menerapkan kebijakan keamanan (Security Policy) di dalam aplikasi web yang mereka buat. Di samping karena banyaknya faktor keamanan yang harus diterapkan dengan baik dan benar untuk mencegah orang yang tidak berhak mengakses sebuah aplikasi web, juga karena kurangnya pengetahuan mengenai fitur keamanan apa saja yang harus diterapkan di seluruh bagian dari aplikasi web tersebut. Apalagi jika harus menerapkannya secara komprehensif (tidak boleh sebagian saja). Katakanlah jika terjadi penambahan menu atau halaman baru yang harus diintegrasikan ke dalam aplikasi tadi, maka harus selalu dipastikan faktor keamanan aplikasi sudah diimplementasikan.
PHPMaker menyediakan pengaturan keamanan (Security Settings) yang sangat lengkap untuk diterapkan di aplikasi web yang di-generate olehnya. Mulai dari disediakannya login khusus untuk Pengguna dengan level yang paling tinggi (Administrator), sampai kepada metode untuk mengamankan dan membatasi akses data untuk Pengguna dengan level tertentu. Hampir semua aspek keamanan yang wajib ada di sebuah aplikasi berbasis web sudah disediakan oleh PHPMaker, sehingga aplikasi web yang kita bangkitkan dengannya sudah dilengkapi dengan fitur-fitur keamanan tersebut.
Anda dapat menentukan pengaturan keamanan di Aplikasi Web Anda melalui menu tab Security. Anda bisa menambahkan fitur Login untuk Pengguna level Administrator sebagai super-user dengan mengaktifkan pengaturan Administrator Login (Hard-coded). Selain itu, Anda juga bisa mengaktifkan Login untuk Pengguna yang datanya disimpan di tabel tertentu melalui pengaturan Use Existing Table, kemudian menentukan nama tabel yang bertalian, beserta nama field Username dan Password yang digunakan di form Login. PHPMaker bahkan menyediakan pengaturan lanjutan. Cukup dengan mengklik tombol Advanced di dalam pengaturan Use Existing Table tadi.
PHPMaker mendukung dua tipe keamanan, yaitu User ID dan User Level. Kedua istilah ini sudah sejak lama digunakan oleh PHPMaker untuk memisahkan pengaturan keamanan aplikasi pada dua level. User ID mengamankan data pada level Record, sedangkan User Level mengamankan data pada level Table. Keduanya bisa bersifat saling melengkapi dan mereka dapat bekerja masing-masing atau bersamaan. Pengguna akan mendapatkan User ID dan User Level mereka setelah berhasil login ke dalam aplikasi web. Sebelum Pengguna login, identitas mereka akan dikenali sebagai Anonymous User atau dulu sering disebut dengan Pengguna yang memiliki level Guest atau tamu.
Enaknya lagi, PHPMaker menyediakan kemudahan bagi Web Developer untuk mendefinisikan hak akses (Permissions) bagi Anonymous User. Misalnya, aksi-aksi apa saja yang bisa dilakukan oleh Pengguna terhadap tabel-tabel tertentu.
Seperti yang sudah disebutkan di atas, bahwa User ID mengamankan data pada level Record. Tabel yang dilindungi harus memiliki field User ID yang menandakan record-record tersebut milik Pengguna tertentu. Nama field User ID dapat berbeda di tabel-tabel yang dilindungi tersebut. Artinya, field ini tidak selalu harus diberi nama dengan User ID. Untuk menyederhanakan pengertian, kita menggunakan istilah User ID.
Ketika fitur User ID di PHPMaker diaktifkan, maka Pengguna hanya dapat mengakses data milik mereka sendiri saja. Tidak sampai di situ saja, PHPMaker pun menyediakan fitur Parent User ID yang memungkinkan seorang Pengguna aplikasi web dapat mengakses record-record milik beberapa Pengguna lainnya yang menjadi bawahannya. Parent User ID bersifat hirarki. Artinya, Penguna yang diset menggunakan Parent User ID tersebut dapat mengakses record-record yang dimiliki oleh Pengguna yang berada di bawahnya. Hal ini sangat cocok bagi aplikasi web yang membutuhkan fitur pengawasan record-record milik beberapa Pengguna oleh Pengguna yang bertindak sebagai Manajer.
Sedangkan User Level seperti yang sudah kita ketahui sekilas di atas, akan mengamankan data pada level Table. Setiap Pengguna diberikan hak akses tertentu ke tabel-tabel tertentu yang terdapat di dalam Database. Ada dua jenis keamanan User Level:
-
Static User Level
User Level dan hak akses didefinisikan dari dalam aplikasi PHPMaker, dan User Level tidak diganti setelah proses pembangkitan file skrip selesai dilakukan.
-
Dynamic User Level
User Level dan hak akses didefinisikan dalam dua tabel khusus di dalam Database. User Level dapat diganti melalui file skrip yang sudah dibangkitkan oleh PHPMaker. Enaknya, PHPMaker juga menyediakan kemudahan bagi Web Developer untuk membuat kedua tabel ini dengan cepat. Kedua tabel ini dikenal dengan tabel User Level dan User Level Permissions.
Jika Anda memiliki project PHPMaker yang sebelumnya menggunakan Static User Level dan ingin diubah menjadi menggunakan Dynamic User Level, maka Anda dapat memigrasikannya dengan sangat mudah dan cepat. Pastikan bahwa kedua tabel yang digunakan oleh Dynamic User Level tadi sudah berhasil dibuat, lalu klik tombol [Migrate]. Selanjutnya PHPMaker akan memigrasikan semua hak akses atau permission milik User Level yang bersifat statik tadi ke dalam tabel User Level Permissions.
Ada dua User Level yang sudah disediakan oleh PHPMaker, dan oleh karenanya tidak dapat diubah atau dihapus, yaitu: Administrator dan Default. Anda dapat menambahkan User Level lainnya selain yang sudah disediakan oleh PHPMaker tersebut.
Penting untuk diketahui, bahwa sekalipun Anda telah mengaktifkan semua hak akses untuk User Level selain dua yang sudah disebutkan di atas tadi, User Level tersebut tidak akan menjadi sama dengan User Level Administrator. User Level yang didefinisikan kemudian oleh Pengguna tidak memiliki hak akses untuk mengelola data Pengguna (sekalipun Pengguna induk-nya memiliki pengawasan pada beberapa Pengguna yang berada di bawahnya).
Henry mengatakan
Pak Masino mohon memberi contoh kasus penggunaan ParentUserID. Saya masih bingung untuk penerapannya.
Masino Sinaga mengatakan
Download project demo yang sudah disediakan oleh PHPMaker. Di situ ada contoh penerapannya.
sukratos mengatakan
selamat malam pak.
mau tanya masalah login. ketika saya upload ke website kenapa login tidak bisa login padahal dataase sudah connect terbukti data pada halaman tanpa login muncul.
mohon solusinya pak.
Masino Sinaga mengatakan
Aktifkan mode Debug dari menu Tools -> Advanced Settings, lalu generate ulang semua file script, dan terakhir, cek apakah ada pesan error yang ditampilkan di web-nya?
Kevin Immanuel mengatakan
Pak bagaimana cara membuat program yang bisa membatasi penambahan jumlah database contoh kasus :
1 siswa dengan nomor nis …..
hanya bisa meminjam 1 buku di tanggal yang sama .
Masino Sinaga mengatakan
Tinggal periksa saja di server event Row_Inserting menggunakan SQL Query lewat fungsi global ExecuteScalar, dan jika kriteria terpenuhi, maka tampilkan pesan kepada user dengan menggunakan method setFailureMessage, lalu kembalikan nilai false di baris kode berikutnya.