Daftar Isi
Simulasi
Simulasi ini dijalankan secara berurutan, tidak bisa dibolak-balik.
Persiapan Data
Login sebagai admin_
Memasukkan data awal di tabel informasi dan pembayaran.
INSERT INTO `db`.`informasi` (`informasi`) VALUES ('john giro1,giro2');
INSERT INTO `db`.`informasi` (`informasi`) VALUES ('paimo giro1,giro3');
INSERT INTO `db`.`pembayaran` (`kodebilling`, `nama`, `statustagihan`, `norekening`, `nominal`) VALUES ('123456789', 'Fulan', 'tagihan', 'giro1', '100000');
INSERT INTO `db`.`pembayaran` (`kodebilling`, `nama`, `statustagihan`, `norekening`, `nominal`) VALUES ('987654321', 'Juan Dela Cruz', 'tagihan', 'giro1,giro3', '150000');
INSERT INTO `db`.`pembayaran` (`kodebilling`, `nama`, `statustagihan`, `norekening`, `nominal`) VALUES ('111222333', 'Max Mustermann', 'tagihan', 'giro1,giro2', '200000');
INSERT INTO `db`.`pembayaran` (`kodebilling`, `nama`, `statustagihan`, `norekening`, `nominal`) VALUES ('333222111', 'Jean Dupont', 'tagihan', 'giro2', '250000');
INSERT INTO `db`.`pembayaran` (`kodebilling`, `nama`, `statustagihan`, `norekening`, `nominal`) VALUES ('123123123', 'Tan Ah Beng', 'tagihan', 'giro3', '300000');Uji Keamanan
Login sebagai john
mysql> select * from db.informasi;
+-------------+-------------------+
| idinformasi | informasi |
+-------------+-------------------+
| 1 | john giro1,giro2 |
| 2 | paimo giro1,giro3 |
+-------------+-------------------+
2 rows in set (0.03 sec)
mysql> select * from db.pembayaran;
ERROR 1143 (42000): SELECT command denied to user 'john'@'1.2.3.4' for column 'idpembayaran' in table 'pembayaran'
mysql> select * from db.viewpembayaran;
ERROR 1143 (42000): SELECT command denied to user 'john'@'1.2.3.4' for column 'idpembayaran' in table 'viewpembayaran'
mysql> update db.pembayaran set statustagihan='lunas' where kodebilling="111222333";
ERROR 1142 (42000): UPDATE command denied to user 'john'@'1.2.3.4' for table 'pembayaran'
mysql> update db.viewpembayaran set statustagihan='lunas' where kodebilling="333222111";
ERROR 1142 (45000): An error occurred. Permission denied.Uji menunjukkan bahwa pengguna john tidak dapat
- menampilkan data dari
db.pembayaran - menampilkan semua kolom dari
db.viewpembayaran - memperbarui tabel
db.pembayaran - memperbarui tabel
db.viewpembayaranyang nomor rekeningnya tidak sesuai dengan dirinya (bukan giro1 atau giro2)
Uji menunjukkan bahwa pengguna john dapat menampilkan data dari db.informasi.
Uji Data Awal
Login sebagai admin_
mysql> select kodebilling, statustagihan, norekening, pengguna from db.pembayaran;
+-------------+---------------+-------------+----------+
| kodebilling | statustagihan | norekening | pengguna |
+-------------+---------------+-------------+----------+
| 123456789 | tagihan | giro1 | NULL |
| 987654321 | tagihan | giro1,giro3 | NULL |
| 111222333 | tagihan | giro1,giro2 | NULL |
| 333222111 | tagihan | giro2 | NULL |
| 123123123 | tagihan | giro3 | NULL |
+-------------+---------------+-------------+----------+
5 rows in set (0.03 sec)Hanya empat baris yang dapat dibaca oleh pengguna john, yaitu dengan rekening giro1 dan giro2, serta pengguna john atau null. Hanya empat baris yang dapat dibaca oleh pengguna paimo, yaitu dengan rekening giro1 dan giro3, serta pengguna paimo atau null.
Login sebagai john
mysql> select kodebilling, nama, statustagihan, norekening from db.viewpembayaran;
+-------------+----------------+---------------+-------------+
| kodebilling | nama | statustagihan | norekening |
+-------------+----------------+---------------+-------------+
| 123456789 | Fulan | tagihan | giro1 |
| 987654321 | Juan Dela Cruz | tagihan | giro1,giro3 |
| 111222333 | Max Mustermann | tagihan | giro1,giro2 |
| 333222111 | Jean Dupont | tagihan | giro2 |
+-------------+----------------+---------------+-------------+
4 rows in set (0.03 sec)Dari data awal benar bahwa hanya empat baris yang dapat dibaca oleh pengguna john, yaitu dengan rekening giro1 dan giro2.
Login sebagai paimo
mysql> select kodebilling, nama, statustagihan, norekening from db.viewpembayaran;
+-------------+----------------+---------------+-------------+
| kodebilling | nama | statustagihan | norekening |
+-------------+----------------+---------------+-------------+
| 123456789 | Fulan | tagihan | giro1 |
| 987654321 | Juan Dela Cruz | tagihan | giro1,giro3 |
| 111222333 | Max Mustermann | tagihan | giro1,giro2 |
| 123123123 | Tan Ah Beng | tagihan | giro3 |
+-------------+----------------+---------------+-------------+
4 rows in set (0.03 sec)Dari data awal benar bahwa hanya empat baris yang dapat dibaca oleh pengguna paimo, yaitu dengan rekening giro1 dan giro3.
Uji Update Data
Login sebagai john
mysql> update db.viewpembayaran set statustagihan='lunas' where kodebilling="111222333";
Query OK, 1 row affected (0.04 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select kodebilling, nama, statustagihan, norekening from db.viewpembayaran;
+-------------+----------------+---------------+-------------+
| kodebilling | nama | statustagihan | norekening |
+-------------+----------------+---------------+-------------+
| 123456789 | Fulan | tagihan | giro1 |
| 987654321 | Juan Dela Cruz | tagihan | giro1,giro3 |
| 111222333 | Max Mustermann | lunas | giro1,giro2 |
| 123123123 | Tan Ah Beng | tagihan | giro3 |
+-------------+----------------+---------------+-------------+
4 rows in set (0.03 sec)Proses pembaruan data berhasil untuk salah satu data yang tampil untuk pengguna john dan statustagihan berubah menjadi lunas. Baris yang diubah adalah data yang dapat dilihat oleh pengguna john dan paimo dan seharusnya baris tersebut tidak dapat dilihat oleh pengguna paimo setelah diubah.
Login sebagai paimo
mysql> select kodebilling, nama, statustagihan, norekening from db.viewpembayaran;
+-------------+----------------+---------------+-------------+
| kodebilling | nama | statustagihan | norekening |
+-------------+----------------+---------------+-------------+
| 123456789 | Fulan | tagihan | giro1 |
| 987654321 | Juan Dela Cruz | tagihan | giro1,giro3 |
| 333222111 | Jean Dupont | tagihan | giro2 |
+-------------+----------------+---------------+-------------+
3 rows in set (0.03 sec)Benar bahwa baris yang diubah oleh pengguna john tidak dapat dilihat oleh paimo karena baris tersebut sudah menjadi milik john.
Login sebagai admin_
mysql> select kodebilling, statustagihan, norekening, pengguna from db.pembayaran;
+-------------+---------------+-------------+----------+
| kodebilling | statustagihan | norekening | pengguna |
+-------------+---------------+-------------+----------+
| 123456789 | tagihan | giro1 | NULL |
| 987654321 | tagihan | giro1,giro3 | NULL |
| 111222333 | lunas | giro1,giro2 | paimo |
| 333222111 | tagihan | giro2 | NULL |
| 123123123 | tagihan | giro3 | NULL |
+-------------+---------------+-------------+----------+
5 rows in set (0.03 sec)Empat baris yang dapat dibaca oleh pengguna john, yaitu dengan rekening giro1 dan giro2, serta pengguna john atau null. Tiga baris yang dapat dibaca oleh pengguna paimo, yaitu dengan rekening giro1 dan giro3, serta pengguna paimo atau null.
Demikian, semoga bermanfaat. [bst]
Sumber: