SERANGAN SQL INJ ECTION MEMANFAATKAN GOOGLE
DORK “INURL”
TUGAS AKHIR
Oleh :
MASYITHA
0834010155
J URUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNOLOGI INDUSTRI
UNIVERSITAS PEMBANGUNAN NASIONAL “VETERAN”
J AWA TIMUR
2012
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh kHak Cipta © milik UPN "Veteran" Jatim :
TUGAS AKHIR
Diajukan Untuk Memenuhi Sebagian Per syar atan Dalam Memper oleh Gelar Sar jana Komputer
J urusan Tek nik Infor matika
Oleh :
MASYITHA
0834010155
J URUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNOLOGI INDUSTRI
UNIVERSITAS PEMBANGUNAN NASIONAL “VETERAN”
J AWA TIMUR
i ABSTRAKSI
Hingga saat ini tindakan penyerangan pada suatu web semakin tinggi. Sering terlihat di media cetak,dan media elektronik begitu banyak berita yang memuat aksi-aksi penyerangan terhadap suatu situs web. Salah satu contoh faktor timbulnya tindakan hacking adalah kesalahan dalam scripting pembuatan web adalah hal terbanyak yang dimanfaatkan oleh para attacker, sehingga rata-rata web yang berhasil diserang melalui lubang ini. Kelemahan-kelemahan scripting yang ditemukan pada proses vulnerabilities scanning misalnya, SQLi.
Untuk mencegah tindakan tersebut dapat menggunakan jasa perusahaan audit keamanan web. Dan tentunya akan menghabiskan banyak biaya, untuk menghindari hal tersebut, dalam proyek akhir ini akan dibangun aplikasi web vulnerability scanner yang berfungsi untuk mendeteksi suatu kelemahan web terhadap kelemahan SQLi.
Maka dengan menggunakan aplikasi web vulnerability scanner dapat dideteksi suatu kelemahan web terhadap kelemahan SQLi dengan lebih dini sehingga dapat dicegah. Kedepannya aplikasi ini dapat melihat isi dari database website yang ditarget mempunyai kelemahan SQL Injection.
.
Kata kunci : SQLi ,Web Vulnerability Scanner.
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh kHak Cipta © milik UPN "Veteran" Jatim :
Disu su n O leh :
M O C H AM A D T R I J O K O
NP M . 0534010093
Tela h d isetu ju i meng iku t i Ujia n Ne gara Lisa n Ge lo mb ang I Ta hu n A kad emik 2 0 1 0 / 201 1
Pemb imb ing Ut ama
Ac hmad J u naid i, S.Ko m NPT. 3 788 110 4 4019 9
Pemb imb ing Pe nd amp in g
Chr yst ia Aji P, S.Ko m, NPT. 3861 0100 29 61
Meng etahu i,
Ketu a Pro gram Stud i Sistem Info rmas i
Un iv ersita s Pemb angu nan Nasio nal ”Vetera n” J awa T imu r
PEMBUATAN APLIKASI WEB VULNERABILITY SCANNER
TERHADAP KELEMAHAN XSS (Cr oss Site Scr ipting)
MENGGUNAKAN J AVA.
Disu su n O leh :
M O C H AM A D T R I J O K O
NP M . 0534010093
Telah dipertahankan di hadapan dan diterima oleh Tim Penguji Tugas Akhir Jurusan Teknik Informatika Fakultas Teknologi Industri Universitas Pembangunan Nasional “Veteran” Jawa Timur
Pada Tanggal Februari 2010
Ir. Edi Purnomo Sasongko, MP NIP. 1 96 407 1 4198 80 31 001
Dekan Fakultas Teknologi Industri
Universitas Pembangunan Nasional “Veteran” Jawa Timur Surabaya
Ir. Sutiyono, MT NIP. 196007131987031001
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh kHak Cipta © milik UPN "Veteran" Jatim :
Alhamdulillah, dengan mengucapkan puji dan syukur kehadirat Allah
SWT atas rahmat dan hidayah-Nya sehingga penulis dapat menyelesaikan tugas
akhir ini dengan judul “APLIKASI WEB VULNERABILITY SCANNER
UNTUK SERANGAN SQL INJECTION MEMANFAATKAN GOOGLE DORK
”INURL”.
“yang merupakan persyaratan dalam memperoleh gelar Sarjana Komputer di
Universitas Pembangunan Nasional “VETERAN” Jatim.
Penulis mengucapkan terima kasih yang sebesar-besarnya kepada
pihak-pihak yang telah membantu baik materiil maupun dorongan spirituil untuk
menyelesaikan penulisan tugas akhir ini, terutama kepada:
1. Bapak Prof. Dr. Ir. Teguh Soedarto, MP, selaku Rektor UPN “Veteran” Jatim.
2. Bapak Ir. Sutiyono, MT, selaku DEKAN FTI UPN “VETERAN” Jatim.
3. Ibu Dr.Ir.Ni Ketut Sari, MT selaku Ketua Jurusan Teknik Infomatika UPN
“VETERAN” Jatim.
4. Bapak Hudan Studiawan, S.Kom, M.Kom selaku Dosen Pembimbing yang
telah meluangkan waktu untuk memberikan bimbingan selama proses
pelaksanaan Tugas Akhir penulis.
5. Special to: Orang Tua dan keluarga tercinta atas motivasi dan doanya sehingga semua yang dikerjakan dapat berjalan lancar.
6. Dosen-dosen Teknik Informatika, staff dan segenap civitas akademika UPN
iv
Awal), MAKCOMM (Fillah, Ika, Tika) dan tak lupa juga untuk seluruh
teman-teman TF angkatan 2008.Tidak lupa penulis ucapkan terima kasih
kepada teman-teman yang tidak dapat disebutkan satu persatu atas segala
bantuannya dalam menyelesaikan Tugas Akhir ini.
Penulis menyadari sepenuhnya masih banyak terdapat kekurangan dalam
penulisan Tugas Akhir ini. Oleh sebab itu kritik serta saran yang membangun dari
pembaca sangat membantu guna perbaikan dan pengembangan di masa yang akan
datang.
Akhirnya dengan ridho Allah penulis berharap semoga Tugas Akhir ini
dapat memberikan manfaat bagi pembaca sekalian terutama mahasiswa di bidang
komputer.
Surabaya, Juni 2012
Penulis
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh kHak Cipta © milik UPN "Veteran" Jatim :
Halaman
HALAMAN JUDUL
LEMBAR PENGESAHAN
LEMBAR PENGESAHAN DAN PERSETUJUAN
KETERANGAN REVISI
MOTTO
ABSTRAKSI……… i
KATA PENGANTAR .……….… ii
DAFTAR ISI ……… iv
DAFTAR TABEL ……… vii
DAFTAR GAMBAR ……… viii
BAB I PENDAHULUAN ………. 1
1.1 Latar Belakang ………... 1
1.2 Perumusan Masalah ……….. 2
1.3 Batasan Masalah ………... 2
1.4 Tujuan ………... 2
1.5 Manfaat ………..……….….. 3
1.6 Metodelogi Penelitian ………... 3
1.7 Sistematika Penelitian …………...……….………… 4
iv
2.2 SQL injection ...…...………. 10
2.2.1 Default Setting SQL ………..…... 11
2.2.2 Mencari Target ... 12
2.2.3 Lokasi SQL Injecksion ... 13
2.3 PHP ………... 14
2.4 MySQL ... 26
2.5 HTML (Hyper Text Markup Language) ... 28
2.5.1 Struktur HTML ... 29
2.6 Web Server ... 30
2.6.1 Cara Kerja Web Server …………...……….. 31
2.7 Flowchart ... 32
2.8 Google Dork ... 33
2.9 Java Script ... 35
2.10 Google Api ... 37
BAB III PERANCANGAN ... 40
3.1 Desain Sistem ………... 41
3.2 Perancangan Sistem ……... 42
3.3 Perancangan Data Input.. ... 42
3.4.1 Data Input Web vulnerability Berbasis Online .... 42
3.4 Perancangan Proses ... 43
3.4.1 Proses Scanning ………... 43
3.5 Perancangan Antar Muka ….………….…..……….. 47
BAB IV IMPLEMENTASI ………..………. 49
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh kHak Cipta © milik UPN "Veteran" Jatim :
5.1 Lingkungan Pengujian ……….. 53
5.2 Uji Coba ………..……….. 53
5.2.1 Aplikasi Web Vulnerability Scanner …….…..….. 54
5.2.2 Proses Scanning ………...………. 55
5.3 ANALISIS ……… 63
5.3.1 Analisis Scan SQL Injection ….……….…… 64
BAB VI PENUTUP……… ………...………. 65
6.1 Kesimpulan……… ………. 65
6.2 Saran……..……… ………. 65
iv
Halaman
Tabel 2.1 Perbandingan Antara Web Statis Dengan Web Dinamis... 9
Tabel 2.2 Tipe Data Dalam My SQL.. ……….…...… 27
Tabel 2.3 Simbol Flowchart …...……….…...… 32
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh kHak Cipta © milik UPN "Veteran" Jatim :
Halaman
Gambar 2.1 Data Tipikal Untuk Halaman Web Yang Statis ……...……. 7
Gambar 2.2 Contoh Alur Data Pada Halaman Web Yang Dinamis.…… 10
Gambar 2.3 Contoh Ilustrasi SQLi Pada admin login area .………. 12
Gambar 2.4 Cara kerja Web Server………... 32
Gambar 3.1 Perancangan Sistem Secara Global ……….….. 41
Gambar 3.2 Diagram Alur Scan SQLi ... 44
Gambar 3.3 Hasil pencarian pada mesin bing bersarkan inputan Google dork ”inurl:article.php?id=” ...…... 45
Gambar 3.4 Website target belum terinjeksi ...…...… 46
Gambar 3.5 Website target sudah terinjeksi ………... 47
Gambar 3.6 Antarmuka Aplikasi WVS...….…….. 48
Gambar 4.1 Tampilan Utama Aplikasi..……….. 50
Gambar 4.2 Tampilan laporan scan sql injection ... 52
Gambar 5.1 Halaman Utama Aplikasi WVS…...…... 54
Gambar 5.2 Tampilan awal aplikasi …...…….... 55
Gambar 5.3a Proses Scanning ……... 56
Gambar 5.3b Proses Scanning ……...…... 56
Gambar 5.4 Report Scanning ...…...……... 57
Gambar 5.5 Tampilan Website Sebelum di Injeksi ...……... 58
Gambar 5.6 Tampilan website sesudah di injeksi ………... 58
iv
Gambar 5.9 Tampilan website sebelum di injeksi... 60
Gambar 5.10 Tampilan website sesudah di injeksi... 61
Gambar 5.11 Proses scanning Google dork inurl:gallery.php?id=…………61
Gambar 5.12 Laporan scanning Google dork inurl:gallery.php?id=……… 62
Gambar 5.13 Tampilan website sebelum di injeksi... 63
Gambar 5.14 Tampilan website sesudah di injeksi... 63
Gambar 5.15 Halaman URL yang telah di injeksi... 64
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh kHak Cipta © milik UPN "Veteran" Jatim :
1.1 Latae Belakang
Perkembangan dalam dunia maya terjadi sangat pesat. Teknologi baru
dirancang dan diimplementasikan untuk memenuhi kebutuhan pengguna yang
semakin beragam. Teknologi halaman web termasuk didalamnya. Teknologi yang
ada kini telah revolusi menuju ke tingkatan yang berbeda. Halaman web kini tidak
lagi statis namun juga dinamis. Kini halaman web yang dinamis merupakan
pemandangan yang biasa dilihat ketika melakukan surfing menggunakan internet.
Halaman web yang dinamis merupakan teknologi yang memberi perubahan
penyediaan informasi, layanan, dan tampilan secara signifikan. Halaman web
yang dinamis memungkinkan interaksi yang lebih baik antara penyedia layanan
dengan penggunanya. Dengan menggunakan teknologi ini, halaman web akan
terlihat lebih manusiawi. Penyedia layanan dapat menambahkan konten yang
sebelumnya masih merupakan impian belaka.
Dalam computer system security, istilah vulnerability merupakan suatu
kelemahan yang memungkinkan seseorang untuk masuk dan mendapatkan hak
akses ke dalam komputer yang dituju (target). Vulnerability adalah kelemahan
yang dikarenakan kesalahan setting ataupun ketidaktahuan administrator.
(Prayitno Ahmad, 2009)
Hingga saat ini angka kejahatan di dunia maya tetap tinggi dan terus
meningkat. Sebuah penelitian yang dilakukan oleh Corsaire menunjukkan bahwa
terhadap serangan yang dilakukan oleh para cracker. Corsaire mendasarkan hasil temuan ini pada penelitian selama enam tahun terakhir.
Dalam menganalisis, Corsaire menggunakan sampel dari
perusahaan-perusahaan besar di beberapa tempat termasuk Inggris, Australia, Eropa, Asia dan
tentu saja Amerika Serikat. Hasil analisis menunjukkan bahwa meski ada usaha
untuk memperbaiki aplikasi berbasis web ini. Namun setidaknya masih ada sekitar
25% yang memiliki resiko tinggi.
Menurut berita yang dilansir ITNews hari Selasa (09/12/08) disebutkan
bahwa 25% aplikasi yang digolongkan dalam kategori resiko tinggi ini memiliki
celah yang membuat aplikasi tersebut rentan terhadap serangan yang bisa
mengakibatkan pencurian data dan pembobolan jenis lain. Sedangkan 75%
sisanya masih dipecah lagi dalam kategori medium dan low yang artinya masih
memiliki celah namun tak terlalu parah. Berikut merupakan data dari (Joe
McCormack, 2009) tentang statistik serangan terhadap aplikasi Web:
Ga mbar 1.1 Data Statistik Serangan terhadap Aplikasi Web
Dari Gambar 1.1 diatas diketahui bahwa serangan XSS dan SQL Injection
menempati urutan 2 besar. Para hacker berkonsentrasi melakukan eksploitasi pada
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh kHak Cipta © milik UPN "Veteran" Jatim :
web-web di internet. Web yang tidak aman memberikan kemudahan akses kepada
hacker untuk memanipulasi informasi dan melakukan aktivitas ilegal dengan menggunakan situs yang telah diserang. Situs yang menjadi korban dapat
disalahgunakan untuk melakukan aktivitas criminal. Misalnya saja melakukan
phishing, pencurian informasi sensitif milik pengguna, memanen email pengguna
untuk keperluan spamming, dan lain-lain. Dalam kondisi ini, attacker dapat
membuat agar pemilik sah-nya yang bertanggung jawab atas tindak kejahatan
tersebut.
Para hacker telah memiliki banyak daftar serangan yang secara rutin
dilakukan pada situs-situs di internet termasuk SQL Injection. Dan para hacker
selalu memiliki update serangan-serangan terbaru terhadap situs-situs di internet.
Dilatarbelakangi permasalahan di atas, dalam proyek akhir ini dibangun
sebuah aplikasi yang berfungsi sebagai pendeteksi terhadap kelemahan SQL
Injection pada suatu aplikasi web, sehingga dengan bantuan aplikasi tersebut suatu
aplikasi web dapat dideteksi lebih dini terhadap kelemahan SQL Injection.
Selain itu, aplikasi ini juga memberikan info letak kelemahan suatu web
terhadap serangan SQL Injection. Dengan aplikasi ini, pengguna bisa mendeteksi
apakah web memiliki kelemahan SQL Injection atau tidak.
1.2 Rumusan Masalah
Dari latar belakang masalah yang telah dipaparkan, maka akan dibangun
aplikasi web vulnerability scanner untuk serangan SQL Injection memanfaatkan
Google. Adapun beberapa rumusan permasalahan yang ada dalam membangun
a) Bagaimana membangun web vulnerability scanner berdasarkan data masukan
dari pengguna untuk web vulnerability scanner berbasis online.
b) Bagaimana mengolah informasi dan menampilkan hasil scanning yang
dibutuhkan oleh pengguna.
1.3 Batasan Masalah
Sedangkan batasan masalah pada proyek akhir ini, antara lain yang
digunakan:
a) Bahasa yang digunakan adalah PHP dan software development yang
digunakan adalah Adobe Macromedia Dreamwaver.
b) Aplikasi web yang dapat dipindai adalah aplikasi web yang dibangun
dengan menggunakan bahasa pemrograman PHP dengan MySQL sebagai
DBMS.
c) Kelemahan yang dibahas adalah SQL Injection.
1.4 Tujuan
Tujuan proyek akhir ini adalah untuk membangun aplikasi web vulnerability
scanner menggunakan PHP. Adapun manfaat dengan dibangunnya aplikasi ini
adalah untuk mendeteksi kelemahan web terhadap serangan SQL Injection.
1.5 Manfaat
Berdasarkan dari latar belakang diatas maka dapat dirumuskan masalah
sebagai berikut:
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh kHak Cipta © milik UPN "Veteran" Jatim :
a. Membangun web secara secure.
Membuat website dengan tingkat kemanan yang tinggi sehingga tidak
mudah untuk dirusak atau dimasuki oleh pihak – pihak tertentu.
b. Terhindar dari defacer website.
Website bebas dari para perusak tampilan pada website yang telah
dibangun, bahkan menghapus seluruh data yang ada di dalam database.
c. Mendeteksi kelemahan web terhadap serangan SQL Injection.
Mendeteksi salah satu jenis serangan web yang dilakukan dengan
memanfaatkan kelemahan pada suatu aplikasi web sehingga
memungkinkan aplikasi untuk menginjeksikan suatu tag HTML pada
aplikasi web tersebut dikarenakan adanya variabel yang tidak disanitasi
dengan baik.
1.6 Metodologi Penelitian
Dalam pengerjaan proyek akhir ini meliputi langkah-langkah sebagai
berikut:
1. Studi Liter atur
Pada tahap ini dilakukan studi literatur dari beberapa referensi baik itu
dari buku atau internet.
2. Per ancangan Sistem
Pada tahap ini dilakukan perancangan sistem yang akan dibangun,
meliputi perancangan database, perancangan sistem dan pembuatan user
3. Per siapan Data
Data-data penunjang yang didapatkan berupa suatu kesimpulan,
fakta-fakta dan aturan yang mengatur proses pencarian data yang saling
berhubungan satu sama lain disimpan ke dalam basis data RDBMS
(Relational DataBase Management System) sebagai media penyimpanan.
4. Pengujian dan Analisa
Pengujian dan analisa dimaksudkan untuk mengetahui sejauh mana
sistem yang dibuat pada proyek akhir ini dapat berfungsi sesuai dengan
proses sistem yang diharapkan.
5. Kesimpulan
Dibuat kesimpulan dari pengujian sistem proyek akhir dengan
membandingkan apakah hasilnya seperti yang diharapkan pada tujuan
proyek akhir sebelumnya.
6. Pembuatan Lapor an
Membuat dokumentasi dari semua tahapan proses diatas berupa laporan
yang berisi tentang dasar teori, hasil proyek akhir dan hasil analisis.
1.7 Sistematika Penelitian
Sistematika pembahasan yang akan diuraikan dalam buku laporan proyek
akhir ini terbagi dalam beberapa bab yang akan dibahas sebagai berikut:
BAB I PENDAHULUAN
Bab ini berisi tentang pendahuluan yang terdiri dari latar belakang,
perumusan masalah, batasan masalah, tujuan dan sasaran,
metodologi, serta sistematika pembahasan dari proyek akhir ini.
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh kHak Cipta © milik UPN "Veteran" Jatim :
BAB II TEORI PENUNJ ANG
Bab ini membahas mengenai teori-teori yang berkaitan dengan
penyelesaian proyek akhir, yang didapatkan dari berbagai macam
buku serta sumber-sumber terkait lainnya yang berhubungan
dengan pembuatan proyek akhir ini.
BAB III PERANCANGAN SISTEM
Bab ini membahas mengenai perancangan sistem, meliputi
perancangan hirarki, perancangan proses, dan perancangan user
interface.
BAB IV IMPLEMENTASI
Bab ini membahas mengenai implementasi sistem.
BAB V UJ I COBA DAN ANALISA
Bab ini menyajikan dan menjelaskan seluruh hasil dan analisa
dalam pembuatan proyek akhir ini dan bagaimana penyelesaian
dari setiap permasalahan error yang terjadi pada sistem operasi
Windows.
BAB VI PENUTUP
Bab ini berisi kesimpulan dari uji coba perangkat lunak, dan saran
untuk pengembangan, perbaikan serta penyempurnaan terhadap
6
TINJ AUAN PUSTAKA
2.1 Web
Penemu website adalah Sir Timothy John ¨Tim¨ Berners-Lee, sedangkan
website yang tersambung dengan jaringan, pertamakali muncul pada tahun 1991.
Maksud dari Tim ketika membuat website adalah untuk mempermudah tukar
menukar dan memperbarui informasi kepada sesama peneliti di tempat dia
bekerja. Pada tanggal 30 April 1993, menginformasikan bahwa WWW dapat
digunakan secara gratis oleh semua orang.
Sebuah website bisa berupa hasil kerja dari perorangan atau individu, atau
menunjukkan kepemilikan dari sebuah organisasi, perusahaan, dan biasanya
website itu menujukkan beberapa topik khusus, atau kepentingan tertentu. Sebuah
website bisa berisi hyperlink (pranala) yang menghubungkan ke website lain, jadi,
kadangkala perbedaan antara website yang dibuat oleh individu perseorangan
dengan website yang dibuat oleh organisasi bisnis bisa saja tidak kentara. Website
ditulis, atau secara dinamik di konversi menjadi HTML dan diakses melalui
sebuah program software yang biasa disebut dengan web browser, yang dikenal
juga dengan HTTP Client. Halaman web dapat dilihat atau diakses melalui
jaringan komputer dan internet, perangkatnya bisa saja berupa komputer pribadi,
laptop, PDA ataupun telepon selular. Sebuah website dibuat didalam sebuah
sistem komputer yang dikenal dengan server web, juga disebut HTTP Server, dan
pengertian ini juga bisa menunjuk pada software yang dipakai untuk menjalankan
sistem ini, yang kemudian menerima lalu mengirimkan halaman-halaman yang
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh kHak Cipta © milik UPN "Veteran" Jatim :
diperlukan untuk merespon permintaan dari pengguna. Apache adalah piranti
lunak yang biasa digunakan dalam sebuah webserver, kemudian setelah itu adalah
Microsoft Internet Information Services (IIS).(FN Jovan, 2007)
Web mempunyai 2 kategori yaitu:
a. Web statis
Tampilan web yang dilihat ketika melakukan surfing melalui internet
sebenarnya hanyalah file teks biasa. File tersebut terletak pada sebuah server
yang dimiliki oleh penyedia layanan tersebut. File ini dapat diperoleh oleh
pengguna dengan sebuah request. File dengan ekstensi tertentu tersebut
kemudian ditampilkan dengan menggunakan sebuah program interpreter.
Ektensi file yang biasa ditemukan antara lain html, htm, php, asp, cgi dan lain
lain. Untuk lebih jelasnya dapat dilihat oleh pengguna.
Software penerjemah melakukan proses visualisasi berdasarkan perintah yang
terdapat pada file teks yang diperoleh. Kesalahan bahasa pada file teks yang
diterima akan menyebabkan kesalahan pada proses penerjemahan. Software
penerjemah ini lebih dikenal dengan sebutan browser web. Browser web
populer saat ini adalah Firefox, Google Chrome.
b. Web Dinamis
Perbedaan mendasar antara proses penyediaan halaman web statis dengan
proses penyediaan halaman web yang dinamis terletak pada request dan
program penyediaan halaman web pada server yang digunakan. Tabel 2.1
menunjukkan perbedaan tersebut.
Dari Tabel 2.1, dapat disimpulkan bahwa teknologi dynamic web page
memungkinkan halaman web yang mampu beradaptasi masukan pengguna. Untuk
mendukung kemampuan tersebut, server yang menggunakan tekonologi dynamic
web page didukung kemampuan bahasa pemrograman. Isi halaman web yang
dinamis, terdapat pada server, biasanya berisi script pemrograman dalam bahasa
yang biasa terdapat dalam teknologi web seperti JavaScript dan VB. Script
pemrograman ini menerima dan memproses variabel – variabel yang dilakukan
pengguna ketika request dilakukan.
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh kHak Cipta © milik UPN "Veteran" Jatim :
Tabel 2.1 Perbandingan antara web statis dengan web dinamis
Teknologi Request Program pada server
Static web page Informasi berisi halaman yang diinginkan
Mengirimkan halaman yang
diinginkan
Halaman tersebut merupakan
file yang sama dengan yang
terdapat pada server
Dynamic web page Informasi berisi halaman yang diinginkan ditambah
masukkan pengguna
Mengirimkan halaman yang
isinya berdasarkan masukkan
pengguna
Isi halaman yang dikirimkan
dapat berbeda dengan yang
terdapat pada server
Halaman yang dikirimkan oleh server akan berisi informasi yang sangat
tergantung algoritma pemrosesan dari halaman yang terdapat pada server. Gambar
2.2 menunjukkan contoh alur data halaman web yang dinamis. Halaman web yang
dinamis ditunjukkan oleh file helo.asp. Terlihat bahwa file sumber (yang terdapat
Gambar 2.2 Contoh alur data pada halaman web yang dinamis
2.2 SQL injection
SQL injection adalah kegiatan menyisipkan perintah SQL kepada suatu SQL statement yang ada pada aplikasi yang sedang berjalan. Dengan kata lain, SQL injection ini merupakan suatu teknik pengeksploitasi pada web apilikasi yang
didalamnya menggunakan database untuk penyimpanan datanya. Terjadinya SQL
injection tersebut dikarenakan security atau keamanan pada level aplikasi (dalam
hal ini aplikasi web) masih kurang sempurna. Kurang sempurnanya adalah pada
cara aplikasi menangani inputan yang boleh di proses ke dalam database.
Misalnya pada suatu web yang terdapat fasilitas login, terdapat dua buah
inputan pada umumnya, yaitu username dan password. Jika karakter yang masuk
melalui dua buah inputan tersebut tidak difilter (disaring) dengan baik maka bisa
menimbulkan efek SQL injection, hal ini disebabkan oleh input yang secara sistem
akan menjadi bagian dari kriteria dari suatu perintah SQL di dalam aplikasi web.
Secara garis besar terjadinya SQL injection tersebut adalah sebagai berikut:
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh kHak Cipta © milik UPN "Veteran" Jatim :
a. Tidak adanya pemfilteran terhadap karakter – karakter tanda petik satu ’ dan
juga karakter double minus -- yang menyebabkan suatu aplikasi dapat disisipi
dengan perintah SQL.
b. Sehingga seorang hacker dapat menyisipkan perintah SQL kedalam suatu
parameter maupun pada text area suatu form.
2.2.1 Defa ult Setting SQL
Seperti yang diketahui bahwa teknik SQL injection ini memungkinkan
seseorang dapat login ke dalam sistem tanpa harus memiliki account. Salah
satunya yaitu default setting SQL. Default setting SQL yang paling berbahaya
adalah menggunakan adminID = sa dan password blank alias (kosong). Apabila
ada direktori sebuah situs yang disitu ada input untuk adminnya maka dimasukkan
id-nya dengan = 'sa' dan password-nya = ' ' maka langsung masuk sebagai admin,
ini jika default setting-nya belum diubah.
Namun ada lagi string yang bisa diinput untuk akses sebagai web admin yaitu
dengan string ' OR 1=1-- apabila ada input web admin berupa user dan password.
Maka apabila di masukan string ' OR 1=1-- di input box user dan masukan foobar
di input box password, maka akan membuat SQL query bingung diakibatkan jadi
SQL Query membacanya sebagai:
SELEC
T * from users where User ='' or 1=1-- and Password ='foobar'
yang artinya SQL melakukan SELECT semua query dari user yang user-nya ''
(kosong) atau (OR) 1=1 (tr ue) -- (tanda -- adalah mark dari SQL seperti halnya di
Gambar 2.3Contoh ilustrasi SQL injection Pada admin login area
Jika diuraikan, logikanya adalah SQL menganggap 1=1 sebagai true sehingga
diartikan kolom password diabaikan karena setelah 1=1 terdapat mark SQL ( -- )
sehingga password itupun diabaikan.
Inti dari injeksi dalam langkah awalnya adalah memaksa keluar sebuah error
page yang berisi informasi struktur database situs itu dan jika ingin melihatnya
harus dilakukan debug. Jadi yang dimasukkan adalah string debugging SQL code,
yaitu ' having 1=1--‘. Ini adalah string yang harus dimasukkan jika ingin melihat
error page dari situs sasaran. Sehingga, dapat dikatakan bahwa teknik ini
memungkinkan seseorang dapat login kedalam sistem tanpa harus memiliki
account. Selain itu SQL injection juga memungkinkan seseorang merubah,
menghapus, maupun menambahkan data–data yang berada didalam database.
Bahkan yang lebih berbahaya lagi yaitu mematikan database itu sendiri, sehingga
tidak bisa memberi layanan kepada web server. (Deris Setiawan, 2005).
2.2.2 Mencar i Tar get
Situs web MS-SQL dengan ASP adalah situs yang paling rentan terhadap
serangan ini. Hal pertama yang dilakukan dalam pencarian target yang sudah tidak
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh kHak Cipta © milik UPN "Veteran" Jatim :
asing lagi bagi yaitu buka www.google.com, pada kolom keywordnya masukkan
allinur l:co.nz/admin.asp, atau allinur l:/logon.asp, keyword ini dapat di
modifikasi ke berbagai bentuk. Penulisan allinurl perlu dicantumkan, dengan
begitu Google akan segera mencari semua URL dalam sebuah situs yang
mempunyai direktori /admin.asp. maka bisa saja mengganti keyword tersebut
dengan allinur l:.co.id atau net atau or g, or.id, sampai allinurl:.fr /admin.asp
semua tergantung kemauan di dalam mencari target menggunakan Google. Hal
yang terpenting dari semua itu adalah harus diketahui di mana harus memasukkan
string SQL misalnya di member login, user login, dan bahkan dapat pula di search product dan lainnya. (Deris Setiawan, 2005)
2.2.3 Lokasi SQL injection
Injeksi pada situs target tidak selalu melalui input box. Injeksi juga bisa
dilakukan dengan memasukan string-string SQL di URL situs target. Misalnya ada
sebuah situs www.xxxxxx.com/moreinfo.cfm?ProductID= 245 lalu, ketikkan
string injeksi debuging SQL tadi ke address bar dibelakang url target itu, salah
satu contohnya:
www.xxxxxx.com/moreinfo.cfm?ProductID=245' having 1=1-- atau juga dapat
menghapus nilai produk dari URL tersebut dan ganti dengan debugging codenya,
sebagai contoh:
www.xxxxxx.com/moreinfo?ProductID=' having 1=1--”
Apabila setelah itu akan keluar sebuah error page dari situs itu, ini
menandakan bahwa situs tersebut dapat memberikan informasi tentang struktur
SQL injection berikutnya. Apabila browser yang digunakan adalah Internet Explorer, ada sebagian situs yang tidak menampilkan error-nya. Hal ini
dikarenakan opsi Show Friendly HTTP Error Messages diaktifkan. Untuk itu
perlu menonaktifkannya dengan cara menghilangkan tanda centang di kotaknya.
Opsi ini dapat ditemukan di Tools > Inter net Option > Advanced cari opsinya di
bagian browsing lalu hilangkan tanda injeksi pada situs target tidak selalu
melakukan input box. Injeksi juga bisa dilakukan dengan centangnya dan klik
tombol Apply. Sesudah itu apabila menemui error page yang berisi HTTP 500
error - internal server error.
Sebelum mengatur opsi tadi, cukup menekan tombol Refresh, lalu terlihatlah
sudah error-nya. Setelah diketahui struktur database dari situs target, dengan
pengetahuan dasar dari belajar SQL yang dapat menghancurkan database itu
dengan perintah ' dr op database [nama_database] atau drop table
[nama_table]. Namun bukan ini yang dicari dalam SQL injection karena tidak
mendapat apa-apa dari string tadi. (Setiawan Deris, 2005)
2.3 PHP
Bahasa pemrograman script yang paling banyak dipakai saat ini. PHP banyak
dipakai untuk memrogram situs web dinamis, walaupun tidak tertutup
kemungkinan digunakan untuk pemakaian lain. Contoh terkenal dari aplikasi PHP
adalah phpBB dan MediaWiki (software di belakang Wikipedia). PHP juga dapat
dilihat sebagai pilihan lain dari ASP.NET/C#/VB.NET Microsoft, ColdFusion
Macromedia, JSP/Java Sun Microsystems, dan CGI/Perl. Contoh aplikasi lain
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh kHak Cipta © milik UPN "Veteran" Jatim :
yang lebih kompleks berupa CMS yang dibangun menggunakan PHP adalah
Mambo, Joomla!, Postnuke, Xaraya, dan lain-lain.
Pada awalnya PHP merupakan kependekan dari Personal Home Page (Situs
Personal). PHP pertama kali dibuat oleh Rasmus Lerdorf pada tahun 1995. Pada
waktu itu PHP masih bernama FI (Form Interpreted), yang wujudnya berupa
sekumpulan script yang digunakan untuk mengolah data form dari web.
Selanjutnya Rasmus merilis kode sumber tersebut untuk umum dan
menamakannya PHP/FI. Dengan perilisan kode sumber ini menjadi open source,
maka banyak programmer yang tertarik untuk ikut mengembangkan PHP. Pada
November 1997, dirilis PHP/FI 2.0. Pada rilis ini interpreter PHP sudah
diimplementasikan dalam program C. Dalam rilis ini disertakan juga
modul-modul ekstensi yang meningkatkan kemampuan PHP/FI secara signifikan.
Pada tahun 1997, sebuah perusahaan bernama Zend menulis ulang interpreter
PHP menjadi lebih bersih, lebih baik, dan lebih cepat. Kemudian pada Juni 1998,
perusahaan tersebut merilis interpreter baru untuk PHP dan meresmikan rilis
tersebut sebagai PHP 3.0 dan singkatan PHP dirubah menjadi akronim berulang
PHP: Hypertext Preprocessing. Pada pertengahan tahun 1999, Zend merilis
interpreter PHP baru dan rilis tersebut dikenal dengan PHP 4.0. PHP 4.0 adalah
versi PHP yang paling banyak dipakai pada awal abad ke-21. Versi ini banyak
dipakai disebabkan kemampuannya untuk membangun aplikasi web kompleks
tetapi tetap memiliki kecepatan dan stabilitas yang tinggi.
Pada Juni 2004, Zend merilis PHP 5.0. Dalam versi ini, inti dari interpreter
PHP mengalami perubahan besar. Versi ini juga memasukkan model
bahasa pemrograman ke arah paradigma berorientasi objek. kelebihan PHP dari bahasa pemrograman lain:
a. Bahasa pemrograman PHP adalah sebuah bahasa script yang tidak melakukan
sebuah kompilasi dalam penggunaanya.
b. Web Server yang mendukung PHP dapat ditemukan dimana-mana dari mulai
apache, IIS, Lighttpd, nginx, hingga Xitami dengan konfigurasi yang relatif mudah.
c. Dalam sisi pengembangan lebih mudah, karena banyaknya milis-milis dan
developer yang siap membantu dalam pengembangan.
d. Dalam sisi pemahamanan, PHP adalah bahasa scripting yang paling mudah
karena memiliki referensi yang banyak.
e. PHP adalah bahasa open source yang dapat digunakan di berbagai mesin
(Linux, Unix, Macintosh, Windows) dan dapat dijalankan secara runtime
melalui console serta juga dapat menjalankan perintah-perintah system.
PHPmemiliki 7 tipe data yaitu :
1. Integer
Nilai sebuah data dari sebuah tipe data integer adalah nilai bilangan bulat
tersebut dalam matematika. Representasi data ini merupakan cara
bagaimana nilainya disimpan di dalam memori komputer. Tipe data
integral terbagi menjadi dua buah kategori, baik itu bertanda (signed)
ataupun tidak bertanda (unsigned). Bilangan bulat bertanda mampu
merepresentasikan nilai bilangan bulat negatif, sementara bilangan bulat
tak bertanda hanya mampu merepresentasikan bilangan bulat positif.
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh kHak Cipta © milik UPN "Veteran" Jatim :
Representasi integer positif di dalam komputer sebenarnya adalah untaian
bit, dengan menggunakan sistem bilangan biner. Urutan dari bit-bit
tersebut pun bervariasi, bisa berupa Little Endian ataupun Big Endian.
Selain ukuran, lebar atau ketelitian (presisi) bilangan bulat juga bervariasi,
tergantung jumlah bit yang direpresentasikanya. Bilangan bulat yang
memiliki n bit dapat mengodekan 2n. Jika tipe bilangan bulat tersebut
adalah bilangan bulat tak bertanda, maka jangkauannya adalah dari 0
hingga 2n-1.
2. Double
Double adalah deklarasi untuk tipe data numerik bilangan pecahan secara
default
3. Boolean
Boolean adalah suatu tipe data yang hanya mempunyai dua nilai. Yaitu
true atau false (benar atau salah). Pada beberapa bahasa pemograman nilai
true bisa digantikan 1 dan nilai false digantikan 0.
4. String
String dalam pemrograman komputer adalah sebuah deret simbol. Tipe
data string adalah tipe data yang digunakan untuk menyimpan barisan
karakter.
5. Object
Object merupakan tipe data yang bisa berupa bilangan, variabel atau
fungsi. Data ini dapat dimasukkan ke dalam skrip program sehingga
6. Array
Array adalah suatu tipe data terstruktur yang dapat menyimpan banyak data dengan suatu nama yang sama dan menempati tempat di memori yang
berurutan (kontigu) serta bertipe data sama pula. Array dapat diakses
berdasarkan indeksnya. Indeks array umumnya dimulai dari 0 dan ada
pula yang dimulai dari angka bukan 0. Pengaksesan larik biasanya dibuat
dengan menggunakan perulangan (looping).
7. Null
Null itu artinya kosong, Tapi artian kosong tidak sama dengan string ""
atau string empty.
Kode program PHP menyatu dengan tag-tag HTML dalam satu file. Kode
PHP diawali dengan tag <? atau <?php dan ditutup dengan tag ?>. File yang
berisi tag HTML dan kode PHP ini diberiekstensi .php atau ekstensi lainnya yang
ditetapkan pada Apache atau web server. Berdasarkan ekstensi ini, pada saat file
diakses, server akan tahu bahwa file ini mengandung kode PHP. Server akan
menerjemahkan kode ini dan menghasilkan keluaran dalam bentuk tag HTML
yang akan dikirim ke browser client yang mengakses file tersebut. Sebagai
Echo “Selamat menggunakan PHP”; ?>
</CENTER> </BODY> </HTML>
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh kHak Cipta © milik UPN "Veteran" Jatim :
Pada contoh program diatas terdapat satu baris perintah PHP, yaitu
<?
Echo “Selamat menggunakan PHP”; ?>
Perintah ini dibuka dengan tag <? dan ditutup dengan tag ?>. Perintah PHP dapat
disisipkan disembarang tempat dari file diatas. Setiap baris perintah PHP diakhiri
dengan tanda titik koma (;), tag penutup ?> juga dapat berfungsi sebagai
pengganti titik koma (;), jadi baris perintah diatas dapat juga dituliskan <?
Echo“Selamat menggunakan PHP”?> (Abdul Kadir, 2009).
Penggunan cURL pada php
cURL (dibaca: si URL) singkatan dari Client URL dan dikembangkan oleh
Daniel Stenberg pada tahun 1998 sebagai alat bantu command line untuk transfer
files dengan sintaks URL melalui bermacam-macam protokol (FTP, HTTP, HTTPS, SCP, SFTP, TELNET, LDAP, dsb). Langkah awal menggunakan cURL
dalam PHP adalah menginisialisasi sebuah session (atau disebut juga membuat
cURL resource), yaitu dengan:
<?php
$ch = curl_init(); //buat resource cURL ?>
Setelah sebuah resource cURL terbentuk, curl_init() akan memberikan penangan
(handle) berupa fungsi-fungsi untuk meset berbagai opsi (curl_setopt()), untuk
mulai menjalankan cURL sesuai dengan opsi yang diset (curl_exec()), dan
kemudian menutup session dari resource yang dibentuk tersebut (curl_close()).
Misal ingin mendapatkan halaman http://gedex.web.id/, maka bisa menggunakan
<?php
$ch = curl_init(); //buat resourcce cURL
//set opsi URL
curl_setopt($ch, CURLOPT_URL, "http://gedex.web.id/"); ?>
Setelah itu bisa mendapatkan halamannya dengan memanggil fungsi curl_exec(),
yang secara otomatis (defaultnya) akan mencetak halaman tersebut.
<?php
$ch = curl_init(); //buat resourcce cURL
//set opsi URL
curl_setopt($ch, CURLOPT_URL, "http://gedex.web.id/");
//dapatkan halaman URL dan berikan (cetak) ke browser curl_exec($ch);
?>
Untuk membebaskan pemakaian resource sistem, ada baiknya menutup session
dari resource cURL yang telah dibuat dengan fungsi curl_close():
<?php
$ch = curl_init(); //buat resourcce cURL
//set opsi URL
curl_setopt($ch, CURLOPT_URL, "http://gedex.web.id/");
//dapatkan halaman URL dan berikan (cetak) ke browser curl_exec($ch);
//tutup resource cURL curl_close($ch); ?>
Pada contoh di atas, output halamannya langsung dicetak setelah memanggil
fungsi curl_exec($ch). Agar output dikembalikan dari fungsi curl_exec()
(sehingga bisa ditampung ke sebuah variabel untuk pemrosesan lainnya) tanpa
langsung mencetak, perlu menset CURLOPT_RETURNTRANSFER ke true.
Contohnya:
<?php
$ch = curl_init(); //buat resourcce cURL
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh kHak Cipta © milik UPN "Veteran" Jatim :
//set opsi URL dan opsi RETURNTRANSFER
curl_setopt($ch, CURLOPT_URL, "http://gedex.web.id/"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//dapatkan halaman URL dan berikan ke variabel $output $output = curl_exec($ch);
//tutup resource cURL curl_close($ch);
//ganti kata 'gedex' dengan 'dini'
$output = str_replace('gedex', 'dini', $output);
//cetak output echo $output; ?>
Pada contoh di atas, halaman web (file HTML) tidak langsung dicetak
setelah pemanggilan curl_exec($ch), tapi diberikan ke variabel $output yang
selanjutnya digunakan untuk mengganti kata ‘gedex’ menjadi kata ‘dini’. Inilah
salah satu opsi yang tersedia dari curl_setopt(). Masih ada banyak lagi opsi
curl_setopt yang tersedia. Tulisan kali ini tidak akan membahas semua opsi yang
tersedia, tetapi hanya sebagian opsi yang menarik dan sering digunakan. Opsi
pertama yang menarik adalah CURLOPT_FOLLOWLOCATION. Lihat kembali contoh
di atas (penggunaan cURL dengan CLI dengan parameter -L). Apabila opsi
CURLOPT_FOLLOWLOCATION diset ke true, cURL akan mengikuti redirect
(pengalihan) saat mencoba mendapatkan file. Misal saat cURL mencoba
mendapatkan halaman (file HTML) http://google.com dan halaman index
google.com meredirect ke http://google.co.id, cURL secara otomatis mengikuti
dan mendapatkan halaman http://google.co.id. Jika familiar dengan beberapa CMS
berbasis PHP, ada beberapa file yang tidak bisa akses secara langsung melalui
URL dan jika diakses akan diredirect ke file PHP lainnya. Biasanya file tersebut
menggunakan fungsi header ("Location: http://domain/file_lainnya"). cURL akan
<?php
$ch = curl_init(); //buat resourcce cURL
//set opsi URL dan opsi FOLLOWLOCATION
curl_setopt($ch, CURLOPT_URL, "http://www.google.com"); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
//dapatkan halaman URL curl_exec($ch);
//tutup resource cURL curl_close($ch); ?>
Dua opsi yang berkaitan dengan opsi CURLOPT_FOLLOWLOCATION adalah
CURLOPT_MAXREDIRS dan CURLOPT_AUTOREFERER. Opsi CURLOPT_MAXREDIRS
digunakan untuk menentukan banyaknya redirect yang dapat dilalui oleh cURL.
Jika ingin mengaturnya dengan nilai 3, maka setelah 3x redirect cURL tidak akan
mengikuti redirect selanjutnya. Penggunaan opsi CURLOPT_AUTOREFERER yang
diatur ke true akan menyebabkan cURL menambahkan Referer header disetiap
redirect. Pada contoh di atas (parameter -d dengan CLI), cURL dapat digunakan
untuk mengirim data layaknya menginput form. Ambil contoh lagi, kali ini
halaman yang sedang dibaca, tepatnya form komentar di bawah. Untuk mengirim
komentar di halaman ini menggunakan cURL, perlu diketahui field post yang
akan ditangkap oleh server. OK, ini potongan HTML untuk form komentar:
<form
action="http://gedex.web.id/wp-comments-post.php" method="post" id="commentform">
<p><input type="text" name="author" id="author" value="" size="22" tabindex="1" />
<label for="author"><small>Name (required)</small></label></p>
<p><input type="text" name="email" id="email" value="" size="22" tabindex="2" />
<label for="email"><small>Mail (will not be published) (required)</small></label></p>
<p><input type="text" name="url" id="url" value="" size="22" tabindex="3" />
<label for="url"><small>Website</small></label></p>
<p><textarea name="comment" id="comment" cols="100%" rows="10" tabindex="4"></textarea></p>
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh kHak Cipta © milik UPN "Veteran" Jatim :
<p><input name="submit" type="submit" id="submit" tabindex="5" value="Submit Comment" />
<input type="hidden" name="comment_post_ID" value="5" /> </p>
</form>
Ada lima field (author, email, url, comment dan comment_post_ID) yang
bisa dikirim. Ditulis menggunakan cURL dalam PHP. Opsi untuk melakukan
request dengan metode HTTP POST adalah CURLOPT_POST (harus diatur ke true
jika ingin mengirim data). Opsi yang terkait adalah CURLOPT_POSTFIELDS yang
nilainya berupa string yang merepresentasikan data yang akan dipost. Lima field
tersebut dapat diencode ke bentuk URL menjadi:
$data =
author=gedex&email=gedex@dudu.lz&url=http://gedex.web.id&comment=t esting post data in string using cURL&comment_post_ID=5
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
Atau bisa juga dengan menggunakan array:
$data
= array('author' => 'gedex', 'email' => 'gedex@dudu.lz',
'url' => 'http://gedex.web.id', 'comment' => 'testing post data in array using cURL', 'comment_post_ID' => '5');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
Disini untuk mengirim data (memberi komentar di halaman ini) menggunakan
cURL, kodenya kurang lebih seperti ini:
<?php
$ch = curl_init(); //buat resourcce cURL
//set opsi URL dan opsi FOLLOWLOCATION
curl_setopt($ch, CURLOPT_URL, "http://gedex.web.id/wp-comments-post.php");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
//set opsi post dan data post
$data = array('author' => 'gedex', 'email' => 'gedex@dudu.lz', 'url' => 'http://gedex.web.id', 'comment' => 'testing post data in array using cURL', 'comment_post_ID' => '148');
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
Opsi lainnya adalah CURLOPT_CONNECTTIMEOUT yang digunakan untuk
menentukan seberapa cURL harus menunggu saat mencoba terhubung. Nilainya
bertipe integer yang merepresentasikan banyaknya waktu dalam satuan detik. Jika
CURLOPT_CONNECTTIMEOUT diatur, nilainya perlu diperhatikan. Karena jika
diatur terlalu kecil dapat menyebabkan request gagal (tidak terjadi) dan jika diatur
terlalu tinggi (misal 1000 atau 0 untuk tak hingga) dapat menyebabkan skrip PHP
menjadi crash. Opsi yang terkait dengan opsi ini adalah CURLOPT_TIMEOUT, yang
digunakan untuk menentukan berapa lama eksekusi request cURL. Jika mengatur
nilainya terlalu kecil dapat menyebabkan halaman yang lambat loadingnya
menjadi tidak lengkap tertangkap cURL. Opsi lainnya adalah
CURLOPT_USERAGENT, yang dapat digunakan untuk mengatur string user-agent
saat meminta, misalnya:
<?php
$ch = curl_init(); //buat resourcce cURL
//set opsi URL dan opsi lainnya
curl_setopt($ch, CURLOPT_URL, "http://www.useragent.org/"); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_USERAGENT, 'gedex web spider/1.0');
//crawl URL curl_exec($ch); ?>
Ada banyak opsi lainnya seperti CURLOPT_BINARYTRANSFER, CURLOPT_FTPA
PPEND, CURLOPT_HEADER, CURLOPT_PUT, CURLOPT_UPLOAD, dan sebagainya.
Semuanya bisa dibaca di manual curl_setopt. Selain fungsi curl_setopt(), fungsi
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh kHak Cipta © milik UPN "Veteran" Jatim :
lainnya yang cukup berguna adalah curl_getinfo(). Fungsi curl_getinfo() digunakan
untuk mendapatkan berbagai macam informasi mengenai halaman yang telah
diakses dan juga mengenai akses (request) itu sendiri. Fungsi ini menerima
parameter berupa resource cURL dan parameter setelahnya adalah opsi yang
berupa konstanta untuk mendapatkan informasi tertentu. Jika hanya parameter
awal saja maka nilai yang diberikan oleh fungsi ini berupa array berupa informasi
request terakhir. Contohnya:
<?php
$ch = curl_init(); //buat resourcce cURL
//set opsi URL dan opsi lainnya
curl_setopt($ch, CURLOPT_URL, "http://www.gedex.web.id/"); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FILETIME, true);
$outout = curl_exec($ch);
//cetak info echo <pre>
print_r (curl_getinfo($ch)); echo </pre>
?>
Informasi yang didapat adalah mengenai request terakhir yang terjadi,
seperti jumlah waktu yang dibutuhkan, content-type, ukuran header dan
sebagainya. Mengatur CURLOPT_FILETIME ke true agar curl_getinfo() memberikan
output mengenai waktu modifikasi dari dokumen yang didapat (Rusli Ahmad,
2010). Berikut output yang diberikan:
Array (
[url] =>
http://gedex.web.id/wp-login.php?redirect_to=%2Fwp2.5%2Fwp-admin%2F [content_type] => text/html; charset=UTF-8 [http_code] => 200
[ssl_verify_result] => 0
[download_content_length] => 1886 [upload_content_length] => 0 [starttransfer_time] => 2.119 [redirect_time] => 13.227 )
2.4 MySQL
MySQL adalah database yang paling banyak dipakai. Menurut perusahaan
pengembangnya, MySQL telah terpasang di sekitar 3 juta komputer. Puluhan
hingga ratusan ribu situs mengandalkan MySQL bekerja siang malam memompa
data bagi para pengunjungnya. Penyebab utama MySQL begitu popular di
kalangan web maupun desktop. Pertama, MySQL tersedia di berbagai platform
Linux dan berbagai varian Unix. Sesuatu yang tidak dimiliki MS Access, misalnya
padahal MS Access amat popular di platform Windows. Banyak server Desktop
berbasiskan Unix, ini menjadikan MS Access otomatis tidak dapat dipakai karena
tidak memiliki kemampuan client-server atau networking.
Kedua, fitur-fitur yang dimiliki MySQL memang yang biasanya banyak
dibutuhkan dalam aplikasi Desktop. Misalnya, klausa Limit SQL-nya, praktis
untuk melakukan paging. Atau jenis indeks field Fultext, untuk full text searching.
Atau sebutlah kekayaaan fungsi-fungsi builtinnya, mulai dari memformat dan
memanipulasi tanggal, mengolah string, regex, enkripsi dan hashing. Yang
terakhir misalnya, praktis untuk melakukan penyimpanan password anggota situs.
Sementara fitur-fitur yang lebih jarang digunakan belum atau baru muncul saja di
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh kHak Cipta © milik UPN "Veteran" Jatim :
versi-versi terakhir. Subselect misalnya, sampai saat ini tidak ada di MySQL. Atau
view, atau stored procedure, atau trigger.
Sebelum versi 3.23.15 sekitar dua tahun yang lalu MySQL tidak bisa
melakukan transaksi sama sekali. MySQL adalah database yang paling banyak
dipakai. Menurut perusahaan pengembangnya, MySQL telah terpasang di sekitar 3
juta komputer. Puluhan hingga ratusan ribu situs mengandalkan MySQL bekerja
siang malam memompa data bagi para pengunjungnya.
Tabel 2.2 Tipe Data Dalam My SQL
Tipe Data Keterangan
INT(M) [UNSIGNED] Angka -2147483648 s/d 2147483647
FLOAT(M,D) Angka pecahan
DATE Tanggal
Format: YYYY-MM-DD
DATE TIME Tanggal dan Waktu
Format: YYYY-MM-DD HH:MM:SS
CHAR(M) String dengan panjang tetap sesuai dengan
yang ditentukan.
Panjangnya 1-255 karakter
VARCHAR(M) String dengan panjang yang berubah-ubah
sesuai dengan yang disimpan saat itu. Panjangnya 1-255 karakter
BLOB Teks dengan panjang maksimum 65535
karakter
LONGBLOB Teks dengan panjang maksimum 4294967295
karakter
Ketiga, MySQL memiliki overhead koneksi yang rendah. Soal kecepatan
melakukan transaksi atau kinerja di kondisi load tinggi mungkin bisa
diperdebatkan dengan berbagai benchmark berbeda. MySQL menunjukkan
MySQL cocok bekerja dengan aplikasi CGI, di mana di setiap request skrip akan
melakukan koneksi, mengirimkan satu atau lebih perintah SQL, lalu memutuskan
koneksi lagi. Cobalah melakukan hal ini dengan Interbase atau bahkan Oracle.
Maka dengan load beberapa request per detik saja server Desktop atau database
mungkin akan segera menyerah karena tidak bisa mengimbangi beban ini.
Dalam bahasa SQL pada umumnya informasi tersimpan dalam tabel-tabel yang
secara logik merupakan struktur dua dimensi terdiri dari baris (row atau record)
dan kolom (column atau field). Sedangkan dalam sebuah database dapat terdiri
dari beberapa table. Beberapa tipe data dalam MySQL yang sering dipakai (Bimo,
2003).
2.5 HTML (Hyper Text Mark up Language)
Di dalam desain web, tidak akan bisa lepas dengan yang namanya HTML
(Hypertext Markup Language). HTML adalah bahasa standar yang diguna-
kan untuk menyusun/membangun suatu halaman web (Bimo, 2003).
2.5.1 Str uktur HTML
Bahasa HTML (tag) dapat ditulis/dibuat melalui berbagai macam word editor,
misalnya Notepad, Wordpad, PHP Designer 2005, dan lain-lain. Tag-tag tersebut
dapat dituliskan dengan huruf besar ataupun huruf kecil. Setelah tag HTML
ditulis dengan menggunakan Notepad atau word editor yang lain, simpanlah file
tersebut dengan format file nama_file.htm atau nama_file.html. Sebagai contoh,
file HTML tersebut disimpan dengan nama index.htm atau index.html. Adapun
struktur HTML adalah sebagai berikut:
<HTML> <HEAD> <META>
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh kHak Cipta © milik UPN "Veteran" Jatim :
<TITLE> … </TITLE> </HEAD> <BODY> …
</BODY> </HTML>
Keterangan:
a. Tag HTML secara default dimulai dari <HTML> dan diakhiri dengan
</HTML>.
b. Tag <HEAD> … </HEAD> merupakan tag kepala sebelum badan. Tag
kepala ini akan terlebih dulu dieksekusi sebelum tag badan. Di dalam
tag ini berisi tag <META> dan <TITLE>. Tag <META> merupakan
informasi atau header suatu dokumen HTML. Atribut yang dimiliki oleh
tag ini antara lain:
c. HTTP_EQUIV, atribut ini berfungsi untuk menampilkan dokumen
HTML secara otomatis dalam jangka waktu tertentu.
d. CONTENT, atribut ini berisi informasi tentang isi document HTML yang akan dipanggil.
e. NAME, atribut ini merupakan identifikasi dari meta itu sendiri. Tag <META>
dalam suatu dokumen HTML boleh ada maupun tidak. Sedangkan tag
<TITLE> … </TITLE> adalah tag judul. Sebaiknya setiap halaman web
memiliki judul, dan judul tersebut dituliskan di dalam <TITLE> …
</TITLE>. Judul ini akan muncul dalam titlebar dari browser.
f. Sedangkan tag <BODY> … </BODY> adalah tag berisi content dari suatu
Setelah tag tersebut di atas ditulis, simpan dalam format .htm atau
.html (misal index.htm) akan tetapi terlebih dahulu ubah Save as type
ke dalam All Files. Kemudian tentukan letak direktori mana file tersebut
akan disimpan, selanjutnya klik Save. Selanjutnya dokumen HTML tersebut
dipanggil dengan browser untuk melihat hasilnya. Dari tampilan pada browser
di atas, dapat terlihat bahwa apa yang ditulis pada “ <TITLE> … </TITLE> akan
muncul pada titlebar browser dan apa yang ditulis pada <BODY> … </BODY>
akan muncul pada halaman web.Untuk selanjutnya, hanya akan memperhatikan
tag-tag yang ada di dalam <BODY> … </BODY> karena bentuk tampilan atau
desain web tergantung pada tag yang ditulis di dalam <BODY> … </BODY> ”.
2.6 Web Server
Web Server atau Server Web merupakan sebuah perangkat lunak server yang
berfungsi menerima permintaan HTTP atau HTTPS dari klien yang dikenal
dengan broser web dan mengirimkan kembali hasilnya dalam bentuk
halaman-halaman web yang umumnya berbentuk dokumen HTML. Jadi, pada dasarnya web
server hanyalah sebuah perangkat lunak yang bisa saja berada di komputer
apapun dengan spesifikasi apapun. PC biasa pun dapat berfungsi sebagai web
server. Karena web server hanyalah suatu perangkat lunak, saat ini banyak pilihan
yang dapat dipilih. Mulai dari yang gratis (free) sampai yang berbayar, mulai dari
yang kompleks sampai yang bias berjalan di CD. Beberapa diantaranya yang
cukup banyak digunakan adalah Apache webserver, Internet Information Services
(IIS), Xitami, PWS, dan sebagainya. (Indonesia Friend World, 2010)
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh kHak Cipta © milik UPN "Veteran" Jatim :
Cara Kerja Web Server
Prinsip atau cara kerja web server itu sendiri, cukup sederhana untuk
dipahami, karena pada dasarnya tugas web server hanya ada 2 (dua), yaitu:
a. Menerima permintaan (request) dari client.
b. Mengirim apa yang diminta oleh client (response).
Penjelasan Gambar 2.4:
1. Client disini dapat berupa computer desktop dengan minimal memiliki
browser dan terhubung ke web server melalui jaringan (intranet atau internet).
2. Komputer yang berfungsi sebagai server, dimana di dalamnya terdapat
perangkat lunak web server. Agar komputer ini dapat diakses oleh client maka
komputer harus terhubung ke jaringan (intranet atau internet). Dalam jaringan
internet, komputer ini biasa saja bernama www.Google.com. www.bl.ac.id
atau memiliki kode computer (disebut IP Address) seperti 202.10.20.10 dan
200.100.50.25.
3. Pertama, client (user) akan meminta suatu halaman ke (web) server untuk
ditampilkan di komputer client. Misalnya client mengetikan suatu alamat
(biasa disebut URL) di browser http://www.google.com. Client menekan
tombol enter atau klik tombol Go pada browser. Melalui media jaringan (bisa
internet, bisa intranet) dan melalui protocol http, akan dicarilah computer
bernama www.google.com. Jika ditemukan, maka seolah-olah terjadi
permintaan, inilah yang disebut request.
4. Sekarang dari sisi server (web server). Mendapat permintaan halaman utama
permintaan. Jika ditemukan, maka halaman yang diminta akan dikirimkan ke
client, Namun jika tidak ditemukan, maka server akan memberi pesan “404. Page Not Found”,
Gambar 2.4 Cara kerja web server
2.7 Flowchar t
Flowchart adalah sekumpulan simbol-simbol yang menunjukkan atau menggambarkan rangkaian kegiatan-kegiatan program dari awal hingga akhir.
Jadi flowchart juga digunakan untuk menggambarkan urutan langkah-langkah
pekerjaan di suatu algoritma. Penjelasan arti dari lambing-lambang flowchart
dapat didefinisikan seperti pada tabel berikut ini (Yuniar, 2007):
Tabel 2.3 Simbol Flowchart
Simbol Fungsi
Terminator, untuk memulai dan mengakhiri suatu program.
Process, menunjukkan setiap pengolahan yang dilakukan oleh komputer.
Data, untuk memasukkan data maupun menunjukkan
hasil dari suatu proses.
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh kHak Cipta © milik UPN "Veteran" Jatim :
Decision, suatu kondisi yang akan menghasilkan beberapa kemungkinan jawaban atau pilihan.
Connector, merupakan simbol untuk masuk dan keluarnya suatu prosedur pada lembar kertas yang sama.
Off-page connector, merupakan simbol untuk masuk dan keluarnya suatu prosedur pada lembar kertas yang lain.
Flow atau arus, prosedur yang dapat dilakukan dari atas
ke bawah, bawah ke atas, kiri ke kanan, atau kanan ke
kiri.
Document, merupakan simbol untuk data yang berbentuk informasi.
Predefined process, untuk menyatakan sekumpulan langkah proses yang ditulis sebagai prosedur.
Display, untuk output yang ditujukan suatu device, seperti monitor.
Magnetic disk, untuk menyimpan data.
2.8 Google Dork
Google dork sebagai senjata hacking. Banyak pencarian pada search engines
keyword-keyword yang tersimpan di mesin search engines. Sehingga untuk
mempermudahnya Google menyediakan fasilitas-fasilitas (dork), untuk
mempermudahkan suatu pencarian, bahkan juga dapat melakukan hacking
(melihat password) account orang lain yang terindex oleh Google. (Berry, 2011)
Table 2.4 Type-type Google dork
Keyword Keterangan
Intitle atau allintitle (Mencari judul atau title pada suatu web)
Inurl atau allinurl (Mencari suatu string yang terdapat pada url)
filetype (Mencari suatu file secara lebih spesifik)
(www.google.c.id/help/faq_filetypes.html)
allintext (Mencari suatu nilai string dalam suatu web)
site (Mencari pada web tertentu)
link (Mencari web-web yang mempunyai link pada
web yang di pilih)
Contoh dalam penggunaannya:
Apabila ingin mencari sebuah lagu dari aveng*d maka diketikan saja di Google
seperti ini
intit
le:"index of/avenged"
dan apa hasilnya, akan terlihat semua kumpulan lagu-lagu tersebut, dan dengan
mudah untuk mengunduhnya. Pengertian di atas, maksudnya biasanya dalam
sebuah database file web terdapat kata (index of) maka digunakan fungsi intitle
untuk mencari sebuah title yang berkaitan dengan kata (index of), lalu ketikan kata
Hak Cipta © milik UPN "Veteran" Jatim :
Dilarang mengutip sebagian atau seluruh kHak Cipta © milik UPN "Veteran" Jatim :