Professional Documents
Culture Documents
Abstrak
organisasi/perusahaan perlu memahami berbagai hal yang terkait dengan informasi yang akan
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
2
PENDAHULUAN
aplikasi yang lainnya. Informasi dari database tersebut sudah sangat dibutuhkan terutama
akan berlomba untuk menyediakan informasi tentang segala kegiatan yang berkenaan dengan
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
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
Pada dasarnya keamanan database (database security) dapat dibagi sebagai berikut:
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
Sekarang sebagian orang akan mengatakan, " Bagaimana server database anda menyediakan
―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
Trusted IP addresses
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
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
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 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
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.
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
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
(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.
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
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
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,
1. Server security/Keamanan Server – memastikan keamanan yang terkait dengan data
3. Session security/Keamanan Sesi – memastikan bahwa data tidak diintersep (dipotong)
C:\>Ping 10.200.200.35
C:\> 6
Anda dapat melihat lapisan-lapisan tersebut sebagai lapisan perlindungan. Untuk setiap
lapisan dari keamanan yang ditambahkan, sistem menjadi lebih terlindungi. Seperti rantai,
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
Dua metode utama dimana informasi dari database dipublikasi ke Web adalah menggunakan
halaman Web statis dan pembuatan halaman Web dinamis aktif. Dua metode tersebut
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
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
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
Direktori dapat juga dilindungi dengan menggunakan keamanan sistem operasi yang
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
7
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
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
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
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.
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
sebelum pemakai dapat mengakses informasi khusus. Pemakai harus mempunyai beberapa 8
bentuk identifikasi yang valid sebelum akses diberikan. Login dikerjakan dalam dua cara
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
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
(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.
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
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.
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
Sistem key-publik memerlukan bahwa setiap bagian mempunyai suatu key publik
atau private. Key tersebut harus dihasilkan oleh sumber yang terpercaya. Untuk
www.verisign.com). Menghasilkan suatu biaya key sebesar $300 per server untuk
tahun pertama dan sekitar $100 untuk setiap tahun setelahnya. Anda harus menunggu
authentikasi di dunia tidak akan mencegah packet sniffer dari pemotongan (intercept)
data yang dikirim melintasi jaringan. Untuk alasan ini, organisasi telah memulai untuk
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
publik/private, suatu Certifitace Server dalam perusahaan membuat kunci dan membuat ciri-
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.
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
password sederhana (seperti PIN untuk kartu ATM-nya) yang dipergunakan untuk melakukan
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
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
sumber, dan sifat keamanan lainnya dipusatkan pada Server Kerberos yang dipercaya.
Perusahaan keamanan saat ini mencari untuk menggabungkan Kerberos dan Certificate
Server
Kerberos mempunyai fungsi mirip dengan fungsi pada Certificate Server: Kerberos bekerja
Menggunakan tokens dan berbagai teknologi lainnya, suatu sistem Kerberos membuat suatu
dapat menyediakan dimana saja dalam pengembangan keamanan Web selama beberapa
tahun ke depan.
Kerberos dibuat oleh MIT sebagai suatu solusi terhadap permasalahan keamanan jaringan.
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
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).
jaringan anda. Kerberos menyediakan piranti autentikasi dan kriptografi yang kuat di
atas network untuk membantu anda mengamankan sistem informasi anda melintasi
Keamanan Vendor-khusus
diimplementasikan untuk menyediakan link di antara database dan halaman HTML yang
dipublish. Berikut ini beberapa komponen keamanan yang disediakan oleh vendor-vendor
Oracle
Oracle Corp. (Redwood Shores, Calif.), sambil menyediakan keamanan SSL dan S-HTTP ,
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
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
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
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
peran aktif dalam diskuisi standard keamanan, Microsoft berharap dapat membentuk
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
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.
Kerberos pada NT server dengan keamanan kunci publik. Microsoft telah me-release
Certificate Server API dalam usaha membuat suatu standard Certificate Server.
Membuat aman data anda untuk disebarkan melalui Internet dan Intranet bukan tugas yang
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
Untuk Informasi keamanan umum tersedia pada web, tempat terbaik untuk memulai
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
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
Berikut ini diberikan contoh untuk SQL Statemen yang akan dilakukan injection: Diberikan
Dari Statemen SQL diatas akan menghasilkan menghasilkan 'id', 'name', 'no_telp',
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
Perhatikan terhadap 'blablabla' tersebut , dimana where clausenya menggunakan quote (‗),
name: blablabla'john
Pada saat ASP di-browse ada pesaan error sebagai berikut (yang biasanya akan muncul):
SQL atau "Structured Query Language" seharusnya tidak menyentuh system calls.
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 :
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
pada saat tampil di aplikasi Web maka biasanya akan ditampilkan dua hal tersebut yaitu
LOGIN :
PASS :
LOGIN :‘ or 1=1--
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,
Bagaimana caranya agar bisa mengetahui Nama Tabelnya dan struktur yang ada.
Untuk meng-inject, attacker harus mengetahui struktur tablenya. Jadi attacker bisa meng-
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‖
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
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
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
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
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
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.
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
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
Untuk mengetahui isi dari tabel yang diquery bisa menggunakan beberapa cara, antara lain
sebagai berikut:
LOGIN :' union select min(username),1,1,1 from users where username > 'a'--
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
Maka akan didapatkan passwordnya. Atau karena sudah mengetahui struktur table yang
digunakan, maka bisa membuat sendiri user dan passwordnya, yaitu dengan melakukan insert
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
diharapkan dapat menjadi input/masukan yang berarti terutama kepada administrator jaringan
Akses Tabel (Table Access Control) dan juga terhadap Pembatasan Akses Database
(Restricting Database Access) dimana hal tersebut di atas sangat berpengaruh terhadap
clinet/server yang telah disediakan oleh beberapa vendor dengan beberapa kelebihan dan
kekurangannya, yang sekiranya dapat dipilih sesuai dengan kemampuan dan kepentingan
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