Phòng Chống SQL Injector bằng PHP

†Wasa_ßjn†

New member
Phương thức hoạt động của nó là kiểm tra các câu truy vấn đầu vào và so sánh với các từ khóa ( là những dạng truy vấn mà Hacker sư dụng để kiểm tra xem website có bị dính SQL Injection hay không ) có trong danh sách, nếu câu truy vấn có nhưng từ trùng với các từ khóa trong danh sách nó sẽ đưa ra cảnh báo và block lại nhưng câu truy vấn đó. Các bạn có thể thêm vào danh sách nhưng từ khóa ( câu truy vấn ) được coi là có hại để tăng cường bảo mật cho website của mình.

Tạo một file có tên "AntiSQLInjection.php" với nội dung như sau:
<?php
$cautruyvan = $_SERVER['QUERY_STRING'];
$tukhoa = array('chr(', 'chr=', 'chr%20', '%20chr', 'wget%20', '%20wget', 'wget(',
'cmd=', '%20cmd', 'cmd%20', 'rush=', '%20rush', 'rush%20',
'union%20', '%20union', 'union(', 'union=', 'echr(', '%20echr', 'echr%20', 'echr=',
'esystem(', 'esystem%20', 'cp%20', '%20cp', 'cp(', 'mdir%20', '%20mdir', 'mdir(',
'mcd%20', 'mrd%20', 'rm%20', '%20mcd', '%20mrd', '%20rm',
'mcd(', 'mrd(', 'rm(', 'mcd=', 'mrd=', 'mv%20', 'rmdir%20', 'mv(', 'rmdir(',
'chmod(', 'chmod%20', '%20chmod', 'chmod(', 'chmod=', 'chown%20', 'chgrp%20', 'chown(', 'chgrp(',
'locate%20', 'grep%20', 'locate(', 'grep(', 'diff%20', 'kill%20', 'kill(', 'killall',
'passwd%20', '%20passwd', 'passwd(', 'telnet%20', 'vi(', 'vi%20',
'insert%20into', 'select%20', 'nigga(', '%20nigga', 'nigga%20', 'fopen', 'fwrite', '%20like', 'like%20',
'$_request', '$_get', '$request', '$get', '.system', 'HTTP_PHP', '&aim', '%20getenv', 'getenv%20',
'new_password', '&icq','/etc/password','/etc/shadow', '/etc/groups', '/etc/gshadow',
'HTTP_USER_AGENT', 'HTTP_HOST', '/bin/ps', 'wget%20', 'uname\x20-a', '/usr/bin/id',
'/bin/echo', '/bin/kill', '/bin/', '/chgrp', '/chown', '/usr/bin', 'g\+\+', 'bin/python',
'bin/tclsh', 'bin/nasm', 'perl%20', 'traceroute%20', 'ping%20', '.pl', '/usr/X11R6/bin/xterm', 'lsof%20',
'/bin/mail', '.conf', 'motd%20', 'HTTP/1.', '.inc.php', 'config.php', 'cgi-', '.eml',
'file\://', 'window.open', '<SCRIPT>', 'javascript\://','img src', 'img%20src','.jsp','ftp.exe',
'xp_enumdsn', 'xp_availablemedia', 'xp_filelist', 'xp_cmdshell', 'nc.exe', '.htpasswd',
'servlet', '/etc/passwd', 'wwwacl', '~root', '~ftp', '.js', '.jsp', 'admin_', '.history',
'bash_history', '.bash_history', '~nobody', 'server-info', 'server-status', 'reboot%20', 'halt%20',
'powerdown%20', '/home/ftp', '/home/www', 'secure_site, ok', 'chunked', 'org.apache', '/servlet/con',
'<script', '/robot.txt' ,'/perl' ,'mod_gzip_status', 'db_mysql.inc', '.inc', 'select%20from',
'select from', 'drop%20', '.system', 'getenv', 'http_', '_php', 'php_', 'phpinfo()', '<?php', '?>', 'sql=');

$kiemtra = str_replace($tukhoa, '*', $cautruyvan);

if ($cautruyvan != $kiemtra)
{
$cremotead = $_SERVER['REMOTE_ADDR'];
$cuseragent = $_SERVER['HTTP_USER_AGENT'];

die( "Phat hien co su tan cong! <br /><br /><b>Viec tan cong nay da bi ngan chan va se duoc ghi nhan lai:</b><br />$cremotead - $cuseragent" );
}

?>
Thêm đoạn code sau vào file mà bạn muốn bảo vệ:
<?php

include "AntiSQLInjection.php";

?>
 
Sửa lần cuối:
thế inject drop table trên address bar thì sao hả heo còn tùy thuộc vào cấu trúc của file PHP nữa :|
 
Làm ơn cho Bờm hỏi với thế file AntiSQLInjection.php này đặt ở đâu vậy ta, pro có thể nói rõ hơn được không

có phải là đặt nó ở trong www/muweb à....
 
Thì bạn muốn bảo vệ file nào thì cho vào đó.VD bảo vệ file index.php thì cho vào vào file index thêm vào dòng hướng dẫn
PHP:
<?php

include "AntiSQLInjection.php";

?>
mình nghĩ là nv
 
Cám ơn bạn đã chỉ cho Bờm nhưng mà Bờm muốn câu chả lời của chủ topich cho chắc ăn hi hi, tại về Web này Bờm dốt quá...hi hi........:06:
 
bạn heo pro ơi, chỉ giúp cho Bờm nốt vụ này đi, sao Bờm chả hiểu gì hết vậy ta....
web của Bờm nó không có folder include đâu thế là làm sao vậy.....
 
ok đáp ứng yêu cầu của bờm đây
bờm Open cái SQL_injector.php ra , thường là ở folder Include ( dùng emeditor cho nó đẹp nha :D )
rồi chèn cái code này vào phía trên của SQL_Injector.php
<?php

include "AntiSQLInjection.php";

?>
 
ok đáp ứng yêu cầu của bờm đây
bờm Open cái SQL_injector.php ra , thường là ở folder Include ( dùng emeditor cho nó đẹp nha :D )
rồi chèn cái code này vào phía trên của SQL_Injector.php

Cám ơn bạn heo nha, quả thật là về web thì Bờm dốt lắm mà,......thế Bờm làm vầy có đung không nhá,.....

copy file AntiSQLInjection.php vào trong folder Include rồi sau đó mở file SQL_injector.php
và sau đó thêm dòng code: <?php

include "AntiSQLInjection.php";

?>

này vào đó là xong thôi à, có cần phải thêm vào cái nào nữa không và có cần phải mở thêm file nào nữa không ta....

Còn cái này là cái gì thế Bờm ko biết..:( dùng emeditor cho nó đẹp nha :D )
 
Back
Top