RewriteRule ^([^/-]+)/([^/-]+)/([^/-]+)/c/([^/-]+)/([a-zA-Z0-9-_]+)/$ index.php?sub=$1&lang=$2§ion=$3&do=cat&catid=$4&seo=$5& [L,NC]
Mesela benim htaccess içinde yazdığım kurallardan bir tanesi böyle. Herhangi bir problem oluşturur mu? Birde internette araştırırken şöyle bir kod buldum. Bu kod bu tür açıklar için yeterlimidir?
$inj = array ('select', 'insert', 'delete', 'update', 'drop table', 'union', 'null', 'SELECT', 'INSERT', 'DELETE', 'UPDATE', 'DROP TABLE', 'UNION', 'NULL','order by','order by');
for ($i = 0; $i < sizeof ($_GET); ++$i){
for ($j = 0; $j < sizeof ($inj); ++$j){
foreach($_GET as $gets){
if(preg_match ('/' . $inj[$j] . '/', $gets)){
$temp = key ($_GET);
$_GET[$temp] = '';
exit('<iframe title="YouTube video player" width="800" height="600" src="http://www.youtube.com/embed/bzen6iORGIk" frameborder="0" allowfullscreen></iframe>');
continue;
}
}
}
}
değildir zaten ayni verilerin bir büyük bir küçük halinin bulunmasından ne kadar amatörce olduğunu anlayabilirsiniz mesela uNion yada un/**/ion şeklinde kolayca bypass edilebilir ayrıca mesela listele.php?mod=select&id=1 şeklinde linkiniz olsa gene ötecek
eğer mysqli kullanabiliyorsaniz
en güzeli bindparam şeklinde yapmak
örnek kod
$sql = 'INSERT INTO users(userkey, mail, ip) VALUES(UNHEX(?), ?, ?)
ON DUPLICATE KEY UPDATE userkey=UNHEX(?), ip=?, ts=CURRENT_TIMESTAMP()';
$stmt = $mysql->stmt_init();
$ip = ip2long($_SERVER['REMOTE_ADDR']);
$userkey = gen_key();
$stmt->prepare($sql);
$stmt->bind_param('ssisi', $userkey, $mail, $ip, $userkey, $ip);
$stmt->execute();
$stmt->close();http://sourceforge.net/p/dwpa/code/1.../index.php#l34
kullanamıyorsaniz mysql_real_escape_string() en ideali
burdan yeni script yazacak arkadaşlara en iyi öneri mysql yerine mysqli kullanmaları