Prefix Tabel Pada Database, Perlukah?

Prefix tabel, perlukah?

Dari berbagai database yang saya temui, hampir semua menggunakan prefix tbl_, tb_, atau t_, mulai dari aplikasi gratis yang bebas didownload hingga aplikasi berbayar. Sebenarnya apa maksud dari prefix ini dan apakah memang diperlukan?

Mari kita bahas lebih dalam…

Alasan Memberi Prefix Pada Tabel

Setidaknya ada tiga alasan mengapa menambahkan prefix pada tabel:

1. Membedakan Tabel Dengan View

Alasan pertama menambahkan prefix pada tabel adalah untuk mempermudah membedakan antara tabel dengan view, tabel diberi prefix tbl_ atau tb_ sedangkan view diberi prefik v_

Model seperti ini paling sering digunakan, entah karena latah atau memang benar-benar mengetahui alasan kenapa melakukan hal tersebut, bahkan ada yang memberi prefix v_tbl_, mungkin karena tabel yang berubah menjadi view

Apakah ini diperlukan?

Menurut saya TIDAK.

Kenapa? karena berbagai alasan sebagai berikut:

  • Bagaimana jika tabel berubah menjadi view dan view berubah menjadi tabel? apakah cukup merename tabel? tidak, kita harus mengubah semua query yang kita tulis di setiap detail aplikasi, melelahkan…
  • Dengan aplikasi database managemen yang ada, seperti HeidiSQL, phpMyAdmin, MySQL Workbech, dll kita dapat sangat mudah membedakan mana view dan mana tabel.
  • Mungkin ada yang beralasan, ketika menulis SQL akan langsung kelihatan bahwa yang kita gunakan dalam query adalah tabel atau view. Pada query select dan sering nya select, tidak masalah kita menggunakan view atau tabel, sedangkan pada statement Insert, Update, dan Delete, kita pasti sudah tahu bahwa yang akan kita ubah datanya adalah tabel buka view.
  • Akan repot ketika menulis nama Foreign Key (FK). Nama FK ini biasanya mengacu pada nama tabel yang terhubung, misal ketika menghubungkan tabel produk dan kategori, nama FK adalah produk_kategori, bagaimana jika tabel menggunakan prefix? tb_produk_tb_ktegori, atau v_produk_tb_kategori? aneh…
  • Tidak nyaman ketika melihat daftar tabel yang semuanya menggunakan prefix, seolah-olah semuanya adalah tabel yang sama.

2. Menghindari SQL Injection

Alasan kedua adalah menghindari SQL injection, misal dengan memberi prefix acak seperti m@i4_user

Dengan memberi prefik pada tabel, maka akan sulit menebak nama tabel pada database, misal attacker ingin mencari tabel yang berisi data username dan password maka mungkin attacker akan menduga tabel tersebut adalah tabel user, dengan menambahkan prefix tertentu, attacker tidak dapat menemukan tabel tersebut.

Hal ini diperkuat dengan berbagai CMS seperti wordpress yang menyediakan prefix pada tabel dan Framework Pemrograman seperti CI yang memfasilitasi penggunaan prefix.

Namun apakah perlu?

Menurut Saya Tidak. Kenapa?

Model ini termasuk dalam Security through obscurity (keamanan dalam ketidakjelasan), dengan mengaburkan nama tabel, (harapannya) akan membuat data menjadi lebih aman.

Anggapan ini keliru, karena dengan memiliki akses ke database atau akses penuh ke file program Anda (terjadi baik perusahaan kecil maupun perusahaan besar), maka attacker dapat dengan mudah melihat seluruh database dan nama tabel yang ada, baik dengan mengetahui username dan password database atau dengan melihat data pada system-tables seperti INFORMATION_SCHEMA.TABLES (tergantung database yang digunakan), banyak juga script kiddies sederhana yang dapat melakukan hal itu.

Dengan demikian, perkuat security pada level akses database bukan dengan memberi prefix pada nama tabel.

Sehingga, pada model ini memberi prefix tabel hanya memberi sedikit sekali manfaat, tidak sebanding dengan kesulitan yang ditimbulkan.

3. Satu Database Untuk Beberapa Aplikasi

Alasan ketiga adalah prefix tabel digunakan jika satu database digunakan oleh lebih dari satu aplikasi.

Sebagai contoh kita memiliki dua buah blog, misal blog A dan blog B yang keduanya menggunakan database yang sama, misal database dbblog, agar data tidak bentrok, maka masing masing tabel blog kita beri prefix, misal blog A dengan prefix bloga_ dan blog B dengan prefix blogb_

Dengan memberi prefix pada tabel, maka pengambilan data tidak akan bentrok karena masing masing memiliki nama yang unik, misal blog A mengambil data konfigurasi blog pada tabel bloga_option, sedangkan blog B pada tabel blogb_option

Hal ini diperjelas ketika kita menginstall WordPress. Pada bagian prefix table terdapat keterangan

If you want to run multiple WordPress installations in a single database, change this.

Yang artinya jika Anda ingin menjalankan beberapa Instalasi WordPress dalam satu database, ubah nilai ini.

Prefix Tabel Pada Database
Prefix Tabel Pada WordPress

Contoh lain adalah pada paket hosting murah dimana kita hanya diperbolehkan menggunakan satu database, maka dengan memeberi prefix pada tabel, kita dapat menggunakan database tersebut untuk banyak aplikasi.

Hal yang sama juga terjadi ketika kita menggunakan shared hosting (shared server), nama database pasti akan diberi prefix sesuai dengan username kita, kenapa? karena pada shared hosting tersebut, satu server digunakan oleh banyak user, dimana masing masing user bisa membuat database sendiri, sehingga untuk menghindari bentrokan dan memastikan bahwa nama database unik, maka diberilah prefix database.

Alasan Yang Tepat

Dari berbagai penjelasan diatas, mana alasan penggunaan prefix table yang paling tepat?

Alasan yang paling tepat adalah alasan nomor tiga karena jelas alasan nomor tiga lah yang paling masuk akal dan bermanfaat jika dibanding kedua alasan lainnya.

Dengan demikian, dapat disimpulkan bahwa prefix table jelas tidak diperlukan, kecuali kita ingin menggunakan database yang sama untuk beberapa aplikasi yang berbeda.

Namun demikian, jika aplikasi mengharuskan kita menggunakan prefix (seperti WordPress) maka gunakan prefix yang random, untuk sedikit meningkatkan keamanan.

Demikian pembahasan tentang penggunaan prefix pada tabel database, semoga bermanfaat.

Subscibe Now

Suka dengan artikel di Jagowebdev.com? jangan sampai ketinggalan, segera join ke milis kami untuk update informasi terbaru dari Jagowebdev.com

Komitmen Kami: Kami senantiasa menghargai privasi Anda dan tidak akan membagikan identitas Anda ke pihak manapun.

4 Feedback dari pembaca

Silakan tinggalkan komentar

Newsletter

Jadilah yang pertama tahu berita terbaru dari Jagowebdev.com