View Single Post
  #1 (permalink)  
Old 10-10-2004, 03:49 PM
YajivMalhotra's Avatar
YajivMalhotra YajivMalhotra is offline
Novice Webmaster
 
Join Date: Oct 2004
Location: Johor Bahru, Malaysia
Posts: 41
Rep Power: 0
YajivMalhotra is on a distinguished road
Send a message via Yahoo to YajivMalhotra
Anti SQL Injection Code / Intro

Sql injection biasa berlaku kat login form. Katakan query anda seperti ini:

sql_send("insert into yajiv (name) value ('$name');");

Biasanya SQL Injection attack dilakukan pada Login form:

User akan memasukkan username'nya (dalam field username) sebagai contoh di bawah
Yajiv')"; delete * from names;

Oleh Itu, SQL akan query berikut:
insert into names (name) value ('Yajiv')"; delete * from names;');

Sekarang query default telah berubah kepada query baru. Sekiranya database tak secure, semua data dalam table names akan hilang

Untuk mengelakkan kejadian di atas berlaku function berikut boleh membantu:


<?PHP
function stripQuotes($strWords)
{
$strWords = str_replace("''", "'", $strWords)
return $strWords ;
}
function killChars($strWords)
{
$badChars = array("select", "drop", ";", "--", "insert", "delete", "xp_") ;
str_replace() ;
foreach($badChars as $current)
{
$strWords = str_replace($current, '', $strWords);
}
return $strWords ;
}
?>


Masukkan Code berikut dibahagian login process:
$login = stripQuotes( $_POST['user'], $_POST['pass']

Oleh itu, function ini akan menapis ayat-ayat berikut:

select
drop"
;
--
insert
delete
xp_

(Anda boleh edit sendiri)

Sekarang site dah selamat daripada SQL Injection. Untuk keterangan lanjut sila layari:

http://www.sqlsecurity.com/


Selamat Mencuba

Last edited by YajivMalhotra; 11-10-2004 at 01:01 AM.
Reply With Quote