PDA

View Full Version : سوال: جلوگيري از بدست آوردن ديتابيس



ravand
دوشنبه 01 خرداد 1391, 17:25 عصر
فرض كنيد اين صفحه اي از سايت ماست.


<?php
$page=(integer) htmlentities($_GET['page']);
if($page<=0) $page=1;
$per_page=5;
$start = ($page-1)*$per_page;
mysql_Connect('localhost','root','');
mysql_select_db('database');
mysql_query("SET NAMES 'UTF8'");
$Q0=mysql_query("SELECT * FROM `jadval` ORDER BY ID DESC Limit $start,$per_page");
while($row=mysql_fetch_assoc($Q0)){
echo ('<a href="id.php?id='.$row['id'].'">'.$row['subject'].'</a><br>');
}
$Q=mysql_query("SELECT id FROM `posts`");
$pages_link=ceil(mysql_num_rows($Q)/$per_page);
echo '<table align="center" width="150" height="50" border="0">';
echo '<tr>';
for($i=1;$i<=$pages_link;$i++){
$aks="aks.png";
{
echo '<td width="35" height="30">';
echo '<a href="link.php?page='.$i.'">
<div id="jadi"><img src='.$aks.' width="30" height="30"></div>
<div id="matn">'.$i.'</div></a>';
echo '</td>';
} }
echo '</div>';
?>

يه هكر عين آب خوردن مياد با زدن چند تا دستور يا استفاده از نرم افزار خاصي ديتابيس ما رو در مياره.
چجوري واقعا بايد كاري كرد كه نتونه ديتابيس رو بدست بياره؟
متشكرم.

behzadkhatari
دوشنبه 01 خرداد 1391, 18:05 عصر
اولا $_get رو با mysql_real_escape_stringو strip_tags بخونید و بعد با استفاده $_SREVER['HTTP_REFERER']
مطمئن باشد که از صفحه مربوط به سایت شما وارد این صفحه شدید

ravand
دوشنبه 01 خرداد 1391, 20:48 عصر
من از اين روش هم استفاده كردم ولي فايده اي نداره.

public function escape($sql) {
$sql=str_replace("<"," ",$sql);
$sql=str_replace(">"," ",$sql);
$sql = addcslashes($sql, '%_');
$search = array('&' , '"' , "'" , '<' , '>' );
$replace = array('&amp;', '&quot;', '&#39;', '&lt;', '&gt;' );
$str = str_replace($search, $replace, $sql);
$sql = trim($sql);
$sql = strip_tags($sql);
if(!get_magic_quotes_gpc() )
{
$sql = addslashes($sql);
}
$sql = addslashes($sql);
$sql = str_replace(array('\\', "\0", "\n", "\r", "'", '"', "\x1a"), array('\\\\', '\\0', '\\n', '\\r', "\\'", '\\"', '\\Z'), $sql);
$sql = stripslashes($sql);
$sql = mysql_real_escape_string($sql);
return $sql;
}

Unique
دوشنبه 01 خرداد 1391, 20:56 عصر
مطالب زیادی در مورد جلوگیری از sql injection توی سایت وجود داره و بسیار کار آمده و اگه شما موارد امنیتی را رعایت کنین ، احتمال هک شدن شما به این شکل تقریبا صفر هستش! اما به نظر من بهترین راه استفاده از Stored Procedures ها و یا Preapared Statements ها در pdo هستش که واقعا جلو Sql Injection را میگیره و امنیت شما را در مقابل این حملات فوق العاده بالا میبره.