Anda di halaman 1dari 2

Mencegah Website dari serangan SQL Injection &

perhatikan setelah nilai 10 terdapat dua buah single quote. Hal

XSS

ini lah yang menyebabkan error, dan hal ini lah yang mejadi
celah sebuah situs dan dengan mudah di eksploitasi dengan

Mencegah

web

dari

SQL

injection

SQL Injection? Apa itu? Ya, beberapa dari kita para developer
web sudah mendengar hal ini, bahkan seorang yang bukan
developer web pun juga mengetahuinya. SQL Injection
merupakan salah satu teknik serangan terhadap sebuah situs

metode SQL Injection.


Nah, bagaimana kita mengatasi hal ini? Ya, caranya adalah
dengan melakukan sanitasi pada data yang dikirimkan dari
url.

atau website. Serangan ini memanfaatkan kesalahan perintah

PHP sendiri telah menyediakan method khusus untuk

SQL yang dikirimkan dari web ke database server untuk

menangani

dieksekusi oleh databaseserver.

yaitu mysql_real_escape atau mysql_real_escape_string. Nam

Pada umumnya sintak SQL yang sering dipakai pada proses


developing

atau

pembuatan

sebuah

situs

iyalah

sintak DML(Data Manipualtion Language) yakni INSERT,

hal

ini,

un kita juga bisa membuat sebuah method khusus untuk


mengerjakan hal ini, yang penting tujuannya adalah untuk
sanitasi data yang dikirimkan.

UPDATE dan DELETE. Pada umumnya sintak yang dikirim

Saat penggunakan method itu maka sintak pengiriman SQL

seperti ini

Query ke database server akan menjadi seperti ini

select * from `tblBerita` where `id` = 10

$SQL="select

10 didapat dari hasil parsing parameter url

'".mysql_real_escape_string($_GET['id'])."'";

http://www.website.com/index.php?id=10

dan querynya akan mejadi seperti ini bila ada penambahan

maka pada penulisan sintak php akan menjadi seperti ini

single quote pada url

$SQL="select

from

`tblBerita`

where

`id`

'".

from

`tblBerita`

where

`id`

select * from `tblBerita` where `id`='10'\'

$_GET['id']."'";

dengan demikian, database hanya akan membaca 1 singel

pada proses eksekusi normal sintak tersebut, database server

quote didepan angka 10 dan 1 single quote dibelakang angka

akan memberikan balikan hasil sesuai yang parameter yang

10, sedangkan 1 karakter single quote tambahan dibelakang

dikirimkan. Namun bila kita meracuni parameter yang dikirim

angka 10 akan terabaikan karena adanya karakter back slash (

melalu url dengan sebuah karakter khusus yaitu single

\ ).

quote ( ' ) seperti ini


http://www.website.com/index.php?id=10'
maka SQL query tersebut tidak akan bisa di eksekusi dan
database server akan memberikan balikan berupa pesan error

Demikianlah tutorial singkat dari saya mengenai Proteksi


Website dari Serangan SQL Injection.
regards

seperti berikut
#1064 - You have an error in your SQL syntax; check the

manual that corresponds

1) Batasi panjang input box (jika memungkinkan), dengan

to yourMySQL server version for the right syntax to use near

cara membatasinya di kode program, jadi si cracker pemula

''' at line 1

akan bingung sejenak melihat input box nya gak bisa diinject

mengapa? karena SQL yang dikirimkan ke database adalah

dengan

seperti ini

2) Filter input yang dimasukkan oleh user, terutama

select * from `tblBerita` where `id` ='10''

Cara

penggunaan

pencegahan

perintah
tanda

kutip

SQL

yang
tunggal

(Input

INJECTION

panjang.
Validation).

3) Matikan atau sembunyikan pesan-pesan error yang keluar


dari

SQL

Server

yang

berjalan.

4) Matikan fasilitas-fasilitas standar seperti Stored Procedures,

PHP sangat handal dalam melakukan konversi string dengan

Extended

cepat. Tetapi jenis apa yang akan anda lakukan jika hal diatas

Stored

Procedures

jika

memungkinkan.

5) Ubah Startup and run SQL Server menggunakan low

terjadi?

privilege user di SQL Server Security tab.


Saya melakukan survey terhadap teman-teman programmer.
Tidak sedikit yang menjawab "Pakai saja htmlentities() atau
strip_tags()"
3 Cara

Mengatasi

Serangan

XSS

XSS merupakan salah satu jenis serangan injeksi code (code


injection attack). XSS dilakukan oleh penyerang dengan cara
memasukkan kode HTML atau client script code lainnya ke
suatu situs. Serangan ini akan seolah-olah datang dari situs
tersebut. Akibat serangan ini antara lain penyerang dapat
mem-bypass keamanan di sisi klien, mendapatkan informasi
sensitif,

atau

menyimpan

aplikasi

Dikutip

berbahaya.
dari Wikipedia

htmlentities() memang dapat melakukan konversi tag-tag


HTML,

tetapi

bagaimana

dengan

Javascript?

strip_tags() memang dapat melakukan konversi tag-tag


HTML dan PHP dengan NULL byte, tetapi bagaimana dengan
Javascript?
Lalu
Saya

apa

yang

harus

memakai filter_var() dengan

dilakukan?

tipe

filter Sanitize

Caranya sebagai berikut :


filter_var($val, FILTER_SANITIZE_STRING);

Disini saya hanya menerangkan tempat dimana XSS dapat

Dan

hasilnya

adalah

dilakukan
XSS yang paling banyak digunakan adalah jenis GET dan

Berikut adalah Fungsi untuk keseluruhannya :

POST.

function xss_filter($val) {
$val = htmlentities($val);
$val = strip_tags($val);
$val = filter_var($val, FILTER_SANITIZE_STRING);

Salah satu contoh yang akan dibahas adalah jenis GET.


Lihat

gambar

dibawah

ini

return $val;
}

Masukkan script alert sederhana ini pada URL yang


mempunyai request GET
Saya

http://localhost/Momonimo/search?
search_key=<script>alert('XSS TRUE')</script>

membuat

Fungsi

diatas

(dengan

menambahkan

htmlentities dan strip_tags) agar XSS key yang digunakan


dapat terbaca semua. Semata-mata hanya ingin membuat rasa
penasaran para hacker

Mengatasi
---------------------------------------------------

XSS

See
more
at:
http://indonesiahackercyberteam.blogspot.ru/2014/07/menceg
ah-website-dari-serangan-sql.html#sthash.Hm9CxPJA.dpuf

Anda mungkin juga menyukai