اموزش امنيت - توابع - mysql

با سلام
امروز ميخوام يه اموزشي اينجا بدم كه تا به امروز يه 100 نفري ازم در موردش سوال كردن :
با نام و ياد خدا شروع ميكنيم :
بسياري از كسايي كه ميخوان پي اچ پي رو ياد بگيرن در اوايل كارشون ممكنه خطاهايي انجام بدن كه باعث دسترسي هكر به اطلاعات ديتابيس سيستمشون بشه خب براي جلو گيري از اين كار من سه تابع رو امروز اموزش ميدم
تابع اول:
PHP:
    function Rows($tablename,$condition=false)
    {
        if($condition and $condition != 'sql') $line = @ mysql_query("SELECT * FROM `$tablename` WHERE $condition")  or die(mysql_error());;
        else if($condition == 'sql')$line= $tablename;
        else $line= @ mysql_query("SELECT * FROM `$tablename`") or die(mysql_error());
        return @ mysql_num_rows($line);
    }
اين تابع رو براي شماردن ركورد ها نوشتم كه به سه روش ليست ركورد ها رو ميشماره :
1- فقط با وارد كردن نام تيبل:
PHP:
<?php 
echo Rows('news');
?>
2- با وارد كردن نام تيبل و خاص كردن ركورد ها با جست و جو :
PHP:
<?php 
echo Rows('news',"`stats`='On'");
?>
3- با وارد كرد يك متغيير حاوي كوري :
PHP:
<?php 
$sql = mysql_query("select * from table where stats=on");
 echo Rows($sql,"sql");
 ?>
خب اين از اموزش كار كردن با تابع و روش هاي ان.حالا ميخوايم اموزش جلوگيري از دسترسي هكر به اطلاعات تيبل ها رو با اين تابع و توابع كمكي اموزش بديم
توابع كمكي:
PHP:
    function Sqi( $value ){
         if( get_magic_quotes_gpc() ){
         $value = stripslashes( $value );
         }
         if( function_exists( "mysql_real_escape_string" ) ){
         $value = mysql_real_escape_string( $value );
         }
         else
         {
         $value = addslashes( $value );
         }
    return $value;
    }
خب وقتي شما ميخوايد از ديتابيس خروجي بگيريد و هنگامي كه از روش گت براي دريافت ورودي استفاده ميكنيد امن ترين راه براي جلوگيري از هك به اين شكل هست:
PHP:
$sql = mysql_query("select * from table where `id`='".Sqi($_GET['id'])."' limit 1");
if(Rows($sql,'sql') > 0){
$Result = mysql_fetch_assoc($sql);
echo $Result['fild'];
}else echo ' ركوردي پيدا نشد';
استفاده كنيد ديگه مشكلي پيش نمياد . و يا ارور هايي حاوي:
کد:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/................on line 6
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\\\'' at line 1
در سايت شما ظاهر نميشن.خب اين بود اموزش امروز . يه سري توابع خوب كه هميشه به امنيت و سرعت برنامه نويسي كمك زيادي ميكنن به زودي گذاشته خواهند شد.
با تشكر
 

جدیدترین ارسال ها

بالا