SQL Injection dan pencegahanya

SQL injection itu penyerangan untuk dapat mengakses database server dengan memasukan query baik melalui field atau URL yang akan menyebabkan database server meng-generate query SQL yang tidak valid. Ini mudah terjadi karena sebenarnya difasilitasi oleh kode program itu sendiri.

Kalau menurut Masku , ini adalah salah satu teknik paling mudah yang sering digunakan untuk masuk ke database sasaran. Meskipun ini dapat dicegah jika kode program kita tervalidasi dengan baik. Sebenarnya apa bila anda teliti,teknik SQL injection sangat sederhana sekali. Akan tetapi
justru yang sering diabaikan oleh para programer,entah itu tidak tahu atau lupa.

Berikut ini beberapa contoh teknik SQL injection,implementasi,dan cara menggagalkan nya.

  • Single Injection
Contoh : Awalnya kita mempunyai kode seperti ini:

$match = false;
if (isset($_POST['submit'])) {
$nama = $_POST['nama'];
$pass = $_POST['pass'];
$sql = "SELECT nama, password FROM user WHERE
nama='$nama' AND password='$pass'";
$res = mysqli_query($db, $sql);
// jika res berhasil,dan row yang
// dikembalikan=1, set $match=true
if ($res && mysqli_query_rows($res) == 1) {
$match = true ;
mysqli_free_result($res);
}
if ($match === true) {
echo 'account match';
} else {
echo 'invalid account';
}
}



kode ini sangatlah rapuh meskipun kelihatanya melakukan verivikasi data. Bila kita ingin melakukan penyerangan kita bisa menggunakan query-query seperti dibawah ini:

// mengisi field nama saja,# adalah komentar,
// yang akan mengabaikan baris setelahnya
admin'#

// mengisi nama field saja
// mengekstrak data kelokasi tertentu
'OR' 1=1 INTO DUMPFILE '/path/ke_lokasi/file.txt '#
'OR' 1=1 INTO OUTFILE '/path/ke_lokasi/file.txt '#



Ini adalah contoh yang sangat umum. Untuk mencegahnya kita dapat menggunakan fungsi mysql_real_escape_string () atau addslashes()

$nama = myMacig($_POST['nama']};
$pass = myMacig($_POST['pass']};

  • Multiple Injection
Contoh SQL injection lainnya adalah dengan memberikan multiple query,seperti berikut:
// $id dari method GET/POST
$sql = "SELECT * FROM buku WHERE kode='{$id}’ “;
//mengahapus isi table
0; DELETE FROM user
// membuat account baru
0; GRANT ALL ON *.* TO 'xxx@%'

Dalam kasus ini,macig quote akan mengabaikan tanda titik koma,ini sangat membahayakan
jika menggunakan SQLite atau postgreSQL. Adapun solusi nya adalah menggunakan operator
casting untuk memastikan bahwa id harus integer.

//Simulasi nilai $_POST['id']
0; DELETE FROM user
$id = (int) myMacig($_POST['id']);




Cara pencegahan yang umum digunakan :
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 di
inject 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.



Referensi :

Securtionline, Amikom, Mas

07.11.0385

, ,

NTLDR IS MISSING

NTLDR IS MISSING?

Sudah pernah membaca pesan seperti ini bukan?

Pesan ini biasanya muncul pada saat kita melakukan booting pertama kali. Hal ini muncul karena kesalahan pada saat kita melakukan shutdownn, virus, instalasi program tertentu dll. Biasanya komputer gagal masuk ke system operasi sehingga untuk memperbaikinya agak sedikit rumit. Apalagi bagi kalangan amatir seperti saya ini. Panik dong. Apalagi di hardisk komputer ada banyak data kantor yang penting. Itu artinya komputer ini sama dengan nyawa kerja saya.

Seorang teman yang baik hati menawarkan untuk membantu menginstal ulang saja. Bisa repot dong jadinya.

Pada akhirnya, berkat bantuan paman google akhirnya ditemukanlah cara yang ternyata lumayan mudah. Karena kebetulan komputer saya menggunakan partisi dengan system file NTFS.

Jika komputer menggunakan partisi dengan system file FAT32, caranya lebih mudah daripada NTFS. Hal ini lebih karena faktor keamanan yang lebih kuat di NTFS sehingga membongkarnya pun rada rada sulit. Cukup dengan melakukan booting menggunakan startup disk Win98, lalu menyalin file NTLDR atau NTDETECT.COM dari direktori i386 ke direktori C:\.

Sedangkan untuk system files NTFS, langkah langkah yang bisa dilakukan antara lain :

  1. Masukan dan boot menggunakan CD WindowsXP.
  2. Saat muncul pilihan untuk melakukan Repair Windows, tekan tombol R pada keyboard.
  3. Lalu tekan nomor yang sesuai dengan lokasi instalasi Windows yang akan diperbaiki, biasanya pilih angka 1.
  4. Ketik password administrator saat diminta, bila sebelumnya kita tidak pernah mengisi password administrator saat instalasi Windows pertama kali, langsung tekan Enter.
  5. Ketik perintah berikut : (X: merupakan drive pengganti untuk CDROM).
    COPY X:\i386\NTLDR C\:
    COPY X:\i386\NTDETECT.COM C:\
  6. Keluarkan CD dari CDROM lalu ketik exit.

Mudah-mudahan sharing ini bermanfaat bagi teman-teman yang mengalami kejadian yang sama dan bingung menanganinya.

07.11.0385

cara menampilkan status YM di halaman blog

Sekedar membagi informasi pada teman-teman yang ingin menampilkan status YM pada halaman blog tetapi belum tau caranya. Bagi yang udah tau caranya ya udah ga usah diterusin bacanya. Buang-buang waktu, mending terusin kerja biar bos seneng.

Caranya gampang. Letakan script dibawah ini sesuai selera. Biasanya sih di sidebar.

<a href="ymsgr:sendIM?apasih-ini">

<img border=0 src="http://opi.yahoo.com/online?u=apasih-ini&amp;m=g&amp;t=1" /> </a>



Silahkan ganti ID yahoo saya apash-ini dengan id yahoo kamu, angka t=1 menunjukkan variasi gambar yang bisa kamu pilih, mulai dari angka 0 sampai 5.

Contoh:


  • t=0




  • t=1



  • t=2



  • t=3




  • t=4



  • t=5






Udah deh. Gampangkan?

Nb. Jangan tanya kenapa saya ga pasang status YM di halaman blog saya ya...
(wong saya ga punya YM kok... ^sambil nglirik Mas^)

07.11.0385