Sebelum ni aku pernah ceritakan tentang cara nak design database (DB) structure, dan kali ni aku nak fokuskan pada penggunaan DB MySQL secara secure (good practise). Sekarang mungkin dah ada yg guna MariaDB. Sejak study kat KUTKM (sekarang dah tukar nama jadi UTeM) tahun 2003 lagi, aku dapati ramai sangat orang guna username = root untuk connect ke DB system yg diaorang buat. Contohnya
1 2 3 |
<?php mysql_connect('localhost', 'root', ''); ?> |
Mungkin kita tak sedar bahawa penggunaan macam tu adalah sangat bahaya sebab root adalah user utama yg mempunyai kuasa penuh / full access privileges dalam DB tu sama seperti dalam Linux. Dah la pakai root, tak set password pulak tu!
Sepatutnya kita kena gunakan user lain yg hanya ada access ke DB atau bahagian tertentu je. Contohnya
1 2 3 4 |
<?php mysql_connect('localhost', 'web_user', '$3cReTp4sSw0rD'); mysql_select_db('db_laravel_test01'); ?> |
Dalam contoh kat atas ni, kita connect ke MySQL menggunakan user web_user
dan password yg hanya ada akses ke DB db_laravel_test01
sahaja. Kenapa? Sebab bila develop sesebuah web-based system, hampir semua pengguna Internet boleh capai application / system yg kita develop tu, dan terdedah kepada pelbagai jenis ancaman macam Cross-site Scripting (XSS), SQL injection, dan Code injection. Andai kata ada penggodam / hacker yg boleh pecah masuk ke system tu serta dapat akses root untuk DB, maka berlakulah kebocoran data / data leakage bukan hanya untuk system tu sahaja tapi untuk keseluruhan DB tu.
Bawah ni aku sediakan video untuk kita nak manage user access dan privileges dalam MySQL;
Walaupon buat di localhost, tapi cuba biasakan diri untuk ikut good practise, takut nanti bila nak publish ke production masih kekalkan tak guna password tambah-tambah lagi dalam shared hosting. Ada beberapa tips lagi untuk enhance security dalam MySQL DB macam host access limit, Secure Socket Layer (SSL), dan combination dengan firewall. InshaAllah nanti next POST aku akan cuba ceritakan.
Share the post "Tips untuk secure MySQL DB user"