привет всем тут я новенький. ) с кем не знаком с радостью познакомлюсь. вопрос: популярным типом взлома сайтов являются Sql Inj пишут для них моды вроде этих PHP: <?php if(!defined('IN_TRACKER')) die('Hacking attempt!'); // Cracker Tracker Protection System // Created by: Christian Knerr - www.cback.de // phpBB Users: Please use our complete phpBB2 Mod! // Version: 2.0.0 // // License: GPL // // // Begin CrackerTracker StandAlone // $cracktrack = $_SERVER['QUERY_STRING']; $wormprotector = 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='); $checkworm = str_replace($wormprotector, '*', $cracktrack); if ($cracktrack != $checkworm) { $cremotead = $_SERVER['REMOTE_ADDR']; $cuseragent = $_SERVER['HTTP_USER_AGENT']; die( "<font color=red><strong>Oi blea ti menea pitaissea vzlomati? Ia tebe dam suka</strong></font> <br /><br /><b>Mi zapisali tvoi dannie, skoro priidut paru liudei i viibut tebea v jopu:</b><br />$cremotead - $cuseragent" ); } ну вобщем я считаю, что это ерунда недавно пришла идейка по более надежной защите от скл инж, сводящей на нет всякие ущрения хацкеров. что если использовать рег выражения при проверке урл адреса? ну вот допустим что переменная value содержит данные введенные пользователем, пусть например в ней должно храниться что-то вроде аськиного номера. var newReg = new RegExp ("^[0-9]{1,10}$","i"); попробуйте обмануть рег выражение. что думаете по-поводу вышеизложенного? спасибо всем за внимание, и если что не так приношу свои извинения.
мод то существует, но какой процент им пользуется? да и тут уже другой вопрос, а реально ли вообще обойти рег выражения? если нет, то лишь используя их можно обеспечить уверенную защиту от скл инж.
например $trusted = preg_replace('/union/' , '' , $_GET[id]); можно обойти 1)index.php?id=uNiOn ставим независимость регистра $trusted = preg_replace('/union/i' , '' , $_GET[id]); все равно можно обойти 2)index.php?id=ununionion
ну вот вы написали ИД= чему-то там, по сути ИД - типа инт значит и проверка только на числа если же например будет такое (что-то вроде): index.php?action=union+delete+select&id=123 то параметр action можно проверить из нескольких СУЩЕУСТВУЮЩИХ и ВОЗМОЖНЫХ вариантов типа: delete||add||post а все другие варианты заменять на один из них, или просто die;
Ну а зачем тогда, уважаемый, вы забиваете себе и нам голову какими-то волшебными (читай ненужными) регулярками и фильтрами. Ничего лучше придумывать не нужно, потому, что это и так отлично работает //add ShAnKaR прочитал мои мысли
запрети символы без которых скул невоможна, например "(" ")" "%20" "+" "/" наверное, еще что-то забыл. Перебирать все слова которые могут встречаться в cmd или скуле- это пздц))