RadarURL Maret 2013 ~ 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.

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!