Arsip: protect/un-protect data FB/IB dari "gangguan" SYSDBA
by mat_koder in Articles more 19 years ago 3601
Ada kalanya kita sebagai developer suatu aplikasi database ingin data-nya relatif aman dari "gangguan luar" , supaya data tetap terpelihara utuh . Saya katakan relatif karena tentunya bila si "pengganggu" tsb punya akses ke physical db maka bisa saja dianya melakukan gangguan thp file tsb ( misalnya menghapus file).
Cara yg umum dilakukan developer untuk memngontrol akses de db adalah dengan mengatur akses user ( yg user name-nya sdh diatur sebelumnya ) ke tabel-tabel tertentu , dengan menset akses baca/tulis/insert/modify dll. Cara ini bisa di-bypass dengan mudah bilamana ada user yg bisa login dengan SYSDBA password , bahkan bilamana password SYSDBA-nya dirubah, bisa saja user tsb menggantikan security.fdb ( tempat password SYSDBA diletakkan) dengan "fresh" security.fdb yg didapatkan dari instalasi baru Firebird ( atau membawa file FDB/GDB tsb ke server yg SYSDBA accountnya dikenal - dan mengopreknya disana).
cara lain yg sedikit lebih sulit ditembus adalah dengan meng-create ROLE SYSDBA di db file tsb , sehingga ketika user mencoba login dengan SYSDBA account, akan menimbulkan error krn SYSDBA-nya dupilkate ( sdh ada di role ). Contoh produk lokal yg menggunakan proteksi ini adalah ACCURATE ( applikasi accounting yg di-develop dgn Delphi) , versi trialnya.
Cara proteksi semacam ini disinggung pada artikel berikut :
http://ftp.ibphoenix.com/main.nfs?a=ibphoenix&s=1123605099:169734&page=ibp_file_meta_security
namun dlm artikel tsb tidak dibahas cara melakukannya.
meng-create ROLE SYSDBA pada firebird adalah dengan syntak:
'create role SYSDBA'
namun bilamana ini dilakukan maka akan error sebab SYSDBA sdh terdaftar sebagai user, sehingga satu-satunya cara adalah dengan login di firebird yg super-usernya bukanlah SYSDBA.
Ada 2 cara melakukannya:
1. Membangun kembali firebird dari source ( bisa di-download dari sourceforge.net ) dimana
source-nya sdh dirubah dengan super-user name bukan lagi SYSDBA.
2. Login lewat standar Firebird installation ( super user=SYSDBA / password=masterkey ), dan dilakukan lewat kode Delphi.
cara yg no-2 yg akan ditunjukkan dalam artikel ini.
I. Memprotect data.
Triknya adalah dengan memanipulasi username SYSDBA di security.fdb ( isc.gdb pd interbase ) dan dengan username yg sdh dimanipulasi ini , konek ke target db.
Langkahnya secara garis besar sbb:
1. Penting : backup / copy dulu security.fdb , klo-klo ntar ada masalah.
3. Bikin koneksi ke security.fdb ( pake IBX : TIBDatabase & TIBTransaction)
2. Bikin SQL yg meng-update user name SYSDBA ke nama laen ( yg akan sbg owner dari role SYSDBA di target db); contoh "TEMP_DBA"
3. Open koneksi ke security.fdb tsb dan exec SQL query.
4. penting : biarkan koneksi ke security Db tetap open.
5. Commit transaction ( shg SYSDBA tdk akan dikenali lagi bilamana user laen akan login).
6. Bikin koneksi baru lagi khusus utk target db.
7. Untuk koneksi ini tentunya nama user = "TEMP_DBA" , password=masterkey
8. Open db ke target db ini
9. Bikin SQL utk membuat/create role SYSDBA di target db
10. Commit transaction - bikin permanen di DB
11. Close connection ke target db.
12. di security db , bikin SQL untuk mengembalikan user name dari TEMP_DBA ke SYSDBA.
13 EXec SQL tsb dan commit.
14. Close semua koneksi.
contoh potongan kodenya sbb:
( contoh ini menggunakan lokal server - server dan prog dlm kompie yg sama)
contoh penggunaan:
II. Unlock db yg terproteksi
Caranya mirip dengan langkah nge-proteknya yakni:
1. Backup security.fdb
2. Bikin koneksi ke security.fdb
3. bikin SQL utk ngeganti SYSDBA ke nama laen ( mis TEMP_DBA ).
4. Exec SQL ini dan commit shg user berikutnya kan melihat new name ini.
5. Biarkan koneksi ke security.fdb ini tetap open.
5. Dengan new name ini ( TEMP_DBA ) , bikin koneksi baru ke target db.
6. setelah terkonek , query data system table tentang role ( tabel RDB$ROLES ), dan cari Owner dari role SYSDBA.
7. Setelah mendapatkan nama owner tsb , di security.fdb , ganti lagi nama user TEMP_DBA ke nama Owner tsb dan commit.
8. Konek lagi ke target db dengan nama user = nama owner dari role.
9. di koneksi baru ini, drop role SYSDBA dan commit.
10.kembali di koneksi security.fdb , bikin SQL baru yg mengganti nama user dari Owner tadi ke original (=SYSDBA).
11. Exec query dan commit, dan close.
contoh potongan kodenya sbb:
( make local connection ).
contoh pemakaian:
cara lain yg sedikit lebih sulit ditembus adalah dengan meng-create ROLE SYSDBA di db file tsb , sehingga ketika user mencoba login dengan SYSDBA account, akan menimbulkan error krn SYSDBA-nya dupilkate ( sdh ada di role ). Contoh produk lokal yg menggunakan proteksi ini adalah ACCURATE ( applikasi accounting yg di-develop dgn Delphi) , versi trialnya.
Cara proteksi semacam ini disinggung pada artikel berikut :
http://ftp.ibphoenix.com/main.nfs?a=ibphoenix&s=1123605099:169734&page=ibp_file_meta_security
namun dlm artikel tsb tidak dibahas cara melakukannya.
meng-create ROLE SYSDBA pada firebird adalah dengan syntak:
'create role SYSDBA'
namun bilamana ini dilakukan maka akan error sebab SYSDBA sdh terdaftar sebagai user, sehingga satu-satunya cara adalah dengan login di firebird yg super-usernya bukanlah SYSDBA.
Ada 2 cara melakukannya:
1. Membangun kembali firebird dari source ( bisa di-download dari sourceforge.net ) dimana
source-nya sdh dirubah dengan super-user name bukan lagi SYSDBA.
2. Login lewat standar Firebird installation ( super user=SYSDBA / password=masterkey ), dan dilakukan lewat kode Delphi.
cara yg no-2 yg akan ditunjukkan dalam artikel ini.
I. Memprotect data.
Triknya adalah dengan memanipulasi username SYSDBA di security.fdb ( isc.gdb pd interbase ) dan dengan username yg sdh dimanipulasi ini , konek ke target db.
Langkahnya secara garis besar sbb:
1. Penting : backup / copy dulu security.fdb , klo-klo ntar ada masalah.
3. Bikin koneksi ke security.fdb ( pake IBX : TIBDatabase & TIBTransaction)
2. Bikin SQL yg meng-update user name SYSDBA ke nama laen ( yg akan sbg owner dari role SYSDBA di target db); contoh "TEMP_DBA"
3. Open koneksi ke security.fdb tsb dan exec SQL query.
4. penting : biarkan koneksi ke security Db tetap open.
5. Commit transaction ( shg SYSDBA tdk akan dikenali lagi bilamana user laen akan login).
6. Bikin koneksi baru lagi khusus utk target db.
7. Untuk koneksi ini tentunya nama user = "TEMP_DBA" , password=masterkey
8. Open db ke target db ini
9. Bikin SQL utk membuat/create role SYSDBA di target db
10. Commit transaction - bikin permanen di DB
11. Close connection ke target db.
12. di security db , bikin SQL untuk mengembalikan user name dari TEMP_DBA ke SYSDBA.
13 EXec SQL tsb dan commit.
14. Close semua koneksi.
contoh potongan kodenya sbb:
( contoh ini menggunakan lokal server - server dan prog dlm kompie yg sama)
|
contoh penggunaan:
|
II. Unlock db yg terproteksi
Caranya mirip dengan langkah nge-proteknya yakni:
1. Backup security.fdb
2. Bikin koneksi ke security.fdb
3. bikin SQL utk ngeganti SYSDBA ke nama laen ( mis TEMP_DBA ).
4. Exec SQL ini dan commit shg user berikutnya kan melihat new name ini.
5. Biarkan koneksi ke security.fdb ini tetap open.
5. Dengan new name ini ( TEMP_DBA ) , bikin koneksi baru ke target db.
6. setelah terkonek , query data system table tentang role ( tabel RDB$ROLES ), dan cari Owner dari role SYSDBA.
7. Setelah mendapatkan nama owner tsb , di security.fdb , ganti lagi nama user TEMP_DBA ke nama Owner tsb dan commit.
8. Konek lagi ke target db dengan nama user = nama owner dari role.
9. di koneksi baru ini, drop role SYSDBA dan commit.
10.kembali di koneksi security.fdb , bikin SQL baru yg mengganti nama user dari Owner tadi ke original (=SYSDBA).
11. Exec query dan commit, dan close.
contoh potongan kodenya sbb:
( make local connection ).
|
contoh pemakaian:
|
Random Articles
- Makna Pascal di Pascal Indonesia
- Mematikan Taskbar dan Tray Ikon
- Contoh Unit Untuk Block Keyboard Keys,.,.,.,.
- Disable Internet Explorer
- Pascal Indonesia Reborn
- Validasi Angka Pada Edit
- SELAMAT ULTAH KE-25, DELPHI!
- Membuat EditBox yang RataKanan
- Mengunci Regedit, MSCONFIG, TaskMngr, dll
- Membuat Check Box Pada DBGrid
AI Forward

๐ We're thrilled to partner with Alibaba Cloud for "AI Forward - Alibaba Cloud Global Developer Summit 2025" in Jakarta! Join us and explore the future of AI. Register now:
https://int.alibabacloud.com/m/1000400772/
#AlibabaCloud #DeveloperSummit #Jakarta #AIFORWARD
Last Articles
Recent Topic
- PascalTalk #6: (Podcast) Kuliah IT di luar negeri, susah gak sih?
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #5: UX: Research, Design and Engineer
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #4: Obrolan Ringan Seputar IT
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #2: Membuat Sendiri SMART HOME
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #3: RADically Fast and Easy Mobile Apps Development with Delphi
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #1: Pemanfaatan Artificial Intelligence di Masa Covid-19
by LuriDarmawan in Tutorial & Community Project more 4 years ago - Tempat Latihan Posting
by LuriDarmawan in OOT more 5 years ago - Archive
- Looping lagi...
by idhiel in Hal umum tentang Pascal Indonesia more 12 years ago - [ask] koneksi ke ODBC user Dsn saat runtime dengan ado
by halimanh in FireBird more 12 years ago - Validasi menggunakan data tanggal
by mas_kofa in Hal umum tentang Pascal Indonesia more 12 years ago