

PHP Sql İnjection Engelleme
-
<?
/*********************************************
Sokarım
*********************************************/
$url_denied = array(
'/bin', '/../', '../../', '/usr', '/etc', '/boot', '/dev', '/perl', '/initrd', '/lost+found', '/mnt', '/proc', '/root', '/sbin', '/cgi-bin', '/tmp', '/var',
'ps%20', 'wget%20', 'uname%20-a', '/chgrp', 'chgrp%20', '/chown', 'chown%20', '/chmod', 'chmod%20', 'md%20', 'mdir', 'rm%20', 'rmdir%20', 'mv%20', 'tftp%20', 'ftp%20', 'telnet%20', 'ls%20',
'gcc%20-o', 'cc%20', 'cpp%20', 'g++%20', 'python%20', 'tclsh8%20', 'nasm%20', 'perl%20', 'traceroute%20', 'nc%20', 'nmap%20', '%20-display%20', 'lsof%20',
'.conf', '.htgroup', '.htpasswd', '.htaccess', '.history', '.bash_history',
'/rksh', '/bash', '/zsh', '/csh', '/tcsh', '/rsh', '/ksh', '/icat', 'document.domain(',
'/....', '..../', 'cat%20', '/*%0a.pl',
'/server-status', 'chunked', '/mod_gzip_status',
'cmdd=', 'http://', 'exec', 'passthru', 'cmd', 'fopen', 'exit', 'fwrite',
'<script', '/script>', '<?', '?>', 'javascript://', 'img src=',
'phpbb_root_path=', 'sql=', 'delete%20', '%20delete', 'drop%20', '%20drop', 'insert into', 'select%20', '%20select', 'union%20', '%20union', 'union(',
'chr%20', 'chr(', 'http_', 'http', 'txt?', 'gif?', 'jpg?', 'dat?', '_http', 'php_', '_php', '_global', 'global_', 'global[', '_globals', 'globals_', 'globals[', '_server', 'server_', 'server[',
'$_request', '$_get', '$request', '$get', '\'', '/*', '+union', '/**/select', '+',
);
$_server = isset($_SERVER) && !empty($_SERVER) ? '_SERVER' : 'HTTP_SERVER_VARS';
$_env = isset($_ENV) && !empty($_ENV) ? '_ENV' : 'HTTP_ENV_VARS';
if ( ($url_request = !empty(${$_server}['QUERY_STRING']) ? ${$_server}['QUERY_STRING'] : (!empty(${$_env}['QUERY_STRING']) ? ${$_env}['QUERY_STRING'] : getenv('QUERY_STRING'))) )
{
$url_request = preg_replace('/([\s]+)/', '%20', strtolower($url_request));
$url_checked = preg_replace('/[\n\r]/', '', str_replace($url_denied, '', $url_request));
if ( $url_request != $url_checked )
{ $remote_addr = ( !empty($HTTP_SERVER_VARS['REMOTE_ADDR']) ) ? $HTTP_SERVER_VARS['REMOTE_ADDR'] : ( ( !empty($HTTP_ENV_VARS['REMOTE_ADDR']) ) ? $HTTP_ENV_VARS['REMOTE_ADDR'] : getenv('REMOTE_ADDR') );
$message = "<b>Tarih:</b> " . Date('D d M Y G:i', time()) . "\r\n<br />";
$message .= "<b>Sorgulanan Baglanti:</b> " . $HTTP_SERVER_VARS['PHP_SELF'] . '?' . $url_request . "\r\n<br />";
$message .= "<b>IP:</b> " . $remote_addr . "\r\n<br />";
$message .= "<b>___________________________________________</b>\r\n<br />";
$handle =fopen('loglar.php', 'a');
fwrite($handle,$message);
fclose($handle);
die('<script>location.href="uyari.php";</script>');
}
}
unset($_server);
unset($_env);
?>Yukarıdaki kodu mysql bağlantı dosyanıza include ederseniz %98 ihtmal ile yazılımı Sağlama alırsınız.
-
güzel paylaşım hoca, nedense ''Sql Injection'' görünce aklıma ''HolyZone'' geliyo :) , selim varmı bir açıklaması
-
güzel yaplaşım... Günün biliişimle ilgili açılan güzel konulardan biri hep böyle olsa keşke....
-
güzel kod tşk ederim
-
o kadar güzel oldu ki bu... eyvallah
-
el altında kalsın
-
hocam eline sağlık. kodların içinde loglar.php ve uyari.php var. o dosyalar nedir?
-
güzel araç
-
UniFroG bunu yazdı:
-----------------------------hocam eline sağlık. kodların içinde loglar.php ve uyari.php var. o dosyalar nedir?
-----------------------------
yukarıdaki arraydakilerden biri denendiginde tarih,ip,browser agentı vs.. gibi bilgileri loglar.php ye kaydediyor daha sonra bakılması için. deneyen kişiyede uyari.php gösteriliyor. -
Kanka dokturmussun yine helal :)
-
çok iyi ama eksik, gelen verilerin hepsini ufaltarak süzgeçe alın,
çünkü sql injectionlada UNION la union aynı olsada süzgeçte ufakları alınmış durumda, işi garantiye alıp tüm gelen verileri ufaltın php de sonra süzgeçe sokun,
diğer bir 2. <scrtipt> gibi bir ifadenin html yorumlamasında farklı şekilleri var ör :
"%3cscript","\x3cscript","%3e%3c/script%3e",
gibi bunlarda aynı şeyi yapabiliyor bunlar süzgeç içinde yok daha geliştirilmesi lazım yüzde 90 değil anca bu yüzde 70 i felan korumaya yarar
ama güzel. Başarılı ellerine sağlık.