Selasa, 08 November 2016

SQL Injection

Injeksi SQL (Bahaasa Inggris: SQL Injection)adalah 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.

Bentuk-bentuk celah keamanan injeksi SQL
Karakter-karakter pelolos yang tidak disaring secara benar

Bentuk injeksi SQL ini terjadi ketika masukan pengguna tidak disaring dari karakter-karakter pelolos dan kemudian diteruskan ke dalam sebuah pernyataan SQL. Ini menimbulkan potensi untuk memanipulasi pernyataan-pernyataan yang dilakukan pada basis data oleh pengguna akhir aplikasi.

Baris kode berikut menggambarkan celah keamanan ini:

pernyataan := "SELECT * FROM pengguna WHERE nama = '" + namaPengguna + "';"



Jika variabel "namaPengguna" dirangkai sedemikian rupa oleh pengguna yang bermaksud buruk, pernyataan SQL tersebut bisa melakukan lebih daripada yang pengarangnya maksudkan. Sebagai contoh, mengeset variabel "namaPengguna" sebagai
a' or 't'='t

menjadikan pernyataan SQL ini oleh bahasa yang memuatnya:


SELECT * FROM pengguna WHERE nama = 'a' or 't'='t';


Jika kode ini akan digunakan dalam sebuah prosedur untuk melakukan otentikasi, maka contoh ini dapat dipakai untuk memaksakan pemilihan sebuah nama pengguna yang sah karena evaluasi 't'='t' akan selalu bernilai benar.


Secara teori, perintah SQL sah apapun bisa diinjeksi melalui metode ini, termasuk menjalankan banyak pernyataan. Nilai "namaPengguna" berikut ini pada pernyataan di atas akan menyebabkan dihapusnya tabel "pengguna" dan juga pengambilan semua data dari tabel "data":

a';DROP TABLE pengguna; SELECT * FROM data WHERE nama LIKE '%


Masukan ini menjadikan pernyataan akhir SQL sebagai berikut:


SELECT * FROM pengguna WHERE nama = 'a';DROP TABLE pengguna; SELECT * FROM data WHERE nama LIKE '%';


Penanganan tipe yang tidak benar

Bentuk injeksi SQL ini terjadi ketika sebuah unsur masukan pengguna tidak bertipe kuat atau tidak diperiksa batasan-batasan tipenya. Ini dapat terjadi ketika sebuah unsur numerik akan digunakan dalam sebuah pernyataan SQL, tetapi pemrogram tidak melakukan pemeriksaan untuk memastikan bahwa masukan pengguna adalah numerik. Sebagai contoh:


pernyataan := "SELECT * FROM data WHERE id = " + variabel_a + ";"


Terlihat jelas dari pernyataan ini pengarang memaksudkan variabel_a menjadi sebuah nomor yang berhubungan dengan unsur "id". Namun begitu, jika pada kenyataannya itu adalah sebuah string, maka pengguna akhir dapat memanipulasi pernyataan tersebut sesukanya, dan karena itu mengabaikan kebutuhan akan karakter-karakter pelolos. Sebagai contoh, mengeset variabel_a sebagai



1;DROP TABLE pengguna


akan menghapus tabel "pengguna" dari basis data karena hasil akhir SQL-nya akan menjadi sebagai berikut:


SELECT * FROM data WHERE id = 1;DROP TABLE pengguna;



Celah keamanan dalam server basis data
Terkadang celah-celah keamanan dapat berada dalam perangkat lunak server basis data itu sendiri, seperti yang terjadi pada fungsi-fungsi real_escape_chars() di server MySQL.




Untuk Mengamankannya Bisa Lihat Disini

Senin, 07 November 2016

Bahasa Program C

Programming C
Apa Itu Bahasa Program C?
Bahasa pemrograman C merupakan salah satu bahasa pemrograman komputer. Dibuat pada tahun 1972 oleh Dennis Ritchie untuk Sistem Operasi Unix di Bell Telephone Laboratories.
Meskipun C dibuat untuk memprogram sistem dan jaringan komputer namun bahasa ini juga sering digunakan dalam mengembangkan software aplikasi. C juga banyak dipakai oleh berbagai jenis platform sistem operasi dan arsitektur komputer, bahkan terdapat beberepa compiler yang sangat populer telah tersedia. C secara luar biasa memengaruhi bahasa populer lainnya, terutama C++ yang merupakan extensi dari C.
C K&R
Pada tahun 1978, Dennis Ritchie dan Brian Kernighan menerbitkan edisi pertama dari buku yang berjudul The C Programming Language. Buku ini hingga sekarang diakui sebagai kitab suci bahasa C dan merupakan referensi utama seorang pemrogram yang ingin mengetahui tentang bahasa C, terutama karena begitu lengkapnya cakupan buku ini tentang bahasa C dan mudahnya program yang dicontohkan dalam buku ini. Versi bahasa C yang ditampilkan dalam buku ini kemudian dikenal dalam kalangan pemrogram sebagai C K&R. Pada buku The C Programming Language edisi kedua kemudian melingkupi ANSI C yang diperkenalkan belakangan.
ANSI C & ISO C
Pada perkembangannya, muncul versi-versi C lain yang pada akhirnya membuat kebingungan di kalangan pemrogram. Karena itu, pada tahun 1983, American National Standards Institute (ANSI) membuat sebuah komite untuk membuat sebuah versi standar dari bahasa C. Setelah melalui proses yang panjang dan sengit, pada tahun 1989, telah berhasil disahkan standar yang dinamakan ANSI X3.159-1989, versi ini seringkali dinamakan ANSI C, atau kadang-kadang C89. Pada 1990, versi ANSI C diadopsi oleh Organization for Standardization (ISO) dengan sedikit perubahan dengan nama ISO/IEC 9899:1990. Versi ini seringkali dinamakan ISO C atau C90. Karena versi ANSI C dan ISO C hanya memiliki sedikit perbedaan, pemanggilan C90 dan C89 merujuk pada bahasa yang sama.
C99
Versi C99 dibuat oleh ISO C pada tahun 1999. Versi ini dimaksudkan terutama untuk memperbanyak dukungan kepada pemrograman berorientasi objek, terutama setelah C++, yang dibuat berdasarkan bahasa ini mendapat tempat yang istimewa di kalangan pemrogram
Hello, World!
contoh program sederhana yang akan mencetak kalimat "Hello, World!" dengan menggunakan pustaka stdio.h (ANSI C):

#include
int main(void)
{
printf("Hello, World!\n");
return 0;
}


Perbandingan dengan C++
C++ pada awalnya disebut sebagai "C dengan Kelas" (C With Classes) dan diciptakan untuk memiliki fitur pemrograman berorientasi objek. Karena C++ berdasarkan dari C, maka kebanyakan kode C bisa dirakit di kompilator C++ dengan mudah. Perbedaan kecil contohnya kata "new" dan "delete" yang terdapat di kode C tidak bisa dirakit di C++ karena kata-kata ini adalah kata dipesan C++. Pustaka C biasanya bisa diimpor ke pustaka C++, tapi karena kompilator C dan C++ memiliki "name mangling" yang berbeda, maka perubahan kecil di kode C perlu dilakukan.



Sumber

Minggu, 06 November 2016

Cross Site Scripting(XSS)

Apa Itu XSS?
Cross Scripting Site juga dikenal sebagai XSS, adalah salah satu web Pengenaan kerentanan yang paling umum yang memungkinkan penyerang untuk menjalankan sendiri script sisi klien-nya (terutama Javascript) ke dalam halaman web dilihat oleh pengguna lain. Dalam serangan XSS khas, seorang hacker menyuntikkan kode javascript berbahaya di situs yang sah. Bila pengguna mengunjungi halaman yang terinfeksi atau link dibuat khusus, itu akan mengeksekusi javascript berbahaya. Sebuah hasil eksploitasi celah XSS akan memungkinkan penyerang untuk melakukan serangan phishing, mencuri akun dan bahkan worm(virus worm).
Contoh:
Mari kita bayangkan, seorang hacker telah menemukan kerentanan XSS di Gmail dan menyuntikkan script berbahaya. Ketika pengguna mengunjungi situs, itu akan mengeksekusi script berbahaya. Kode berbahaya dapat digunakan untuk mengarahkan pengguna ke palsu halaman gmail atau menangkap cookie. Menggunakan ini(cookies), ia bisa login ke account Anda dan mengubah password.

Ini akan sangat membantu untuk memahami XSS, jika Anda memiliki prasyarat berikut: -Pengetahuan yang kuat di HTML, javascript -Pengetahuan dasar dalam HTTP client-Server architecure -(Opsional) Dasar pengetahuan tentang pemrograman server side (php, asp, jsp) Untuk Tutorialnya Kita Lanjut Nanti :) See You ;)