PDA

View Full Version : امنیت با تصاویر امنیتی



amin_sltny
سه شنبه 03 بهمن 1391, 12:44 عصر
سلام دوستان

من با کد های زیر یه تصویر امنیتی ساختم می خواستم بدونم نظر شما درباره این کد چیه و کمکم کنید(!!!!!!!!!!!!) چه جوری باید از اون در وبم استفاده کنم؟


<?php

session_start();
$rndCode = md5(microtime());
$capCode = strtoupper(substr($rndCode,0,5));
$_SESSION['captcha'] = $capCode;

$img=imagecreate(210,70);
$numberChar=mt_rand(4,5);
$background=imagecolorallocatealpha($img,mt_rand(2 00,255),mt_rand(200,255),mt_rand(200,255),(mt_rand (1,9)/10));
$text_colour=imagecolorallocatealpha($img,mt_rand( 0,150),mt_rand(0,150),mt_rand(0,150),(mt_rand(1,9)/10));
$line_colour = imagecolorallocatealpha($img,mt_rand(50,150),mt_ra nd(50,150),mt_rand(50,150),(mt_rand(1,9)/10));
$font=array("Font/a.ttf","Font/b.ttf","Font/c.ttf","Font/e.ttf","Font/f.ttf","Font/g.ttf");
$num=array(0,-10);
for($i=1;$i<=$numberChar;$i++)
{

$num[0]=2*10+$num[1];
$num[1]=$num[0]+20;
$Fontnumber=mt_rand(0,5);
imagettftext($img,mt_rand(20,30),mt_rand(-20,10),mt_rand($num[0],$num[1]),mt_rand(35,45),$text_colour,$font[$Fontnumber],$capCode[$i-1]);
imageline($img,mt_rand(0,200),mt_rand(0,75),mt_ran d(0,360),mt_rand(0,360),$line_colour);
}
imagesetthickness($img,2);
header('Content-Type:image/png');
imagepng($img);
imagedestroy($img);
?>
98858
98859

siavashsay
سه شنبه 03 بهمن 1391, 13:23 عصر
دوست عزیز ! نظری که نمیشه داد !
یعنی خوب و بدش که با خودتون ! باید ببینید راضیتون میکنه یا نه ! در هر صورت !
روش استفاده :
یک کد عکس درست میکنید به اینصورت :

<img src="your_page_folder/captcha.php" alt="captcha" />
این کد عکس اون captcha رو نشون میده !
حالا میای توی همون صفحه یک text input درست میکنی و آیدیش رو میذاری مثلا : captchaCode !
بعد میای یک متغیر درست میکنی و مقدار اون رو برابر با session اون captcha میدی ! مثلا :

$captcha=$_SEESION['captcha'];
و در نهایت موقعی که داری form خودت رو آنالیز میکنی و مقادیر رو میگیری این 2 تا رو مقایسه میکنی که اگر درست نبود خطا بده !

// any vars
$captchaCode=$_POST['captchaCode']; // این مقدار فیلدی هست که کاربر وارد کرده
$captcha=$_SESSION['captcha']; // این مقدار اصلی اون captcha کدی که درست شده هست
if($captchaCode != $captcha){ // اینجا هم چک میکنی اگر باهم برابر نبودند خطا رو صادر و از اجرای بقیه برنامه جلوگیری میکنی
echo "error, Captcha is not true";
exit;
}

موفق باشید :)

amin_sltny
سه شنبه 03 بهمن 1391, 14:03 عصر
دوست عزیز ! نظری که نمیشه داد !
یعنی خوب و بدش که با خودتون ! باید ببینید راضیتون میکنه یا نه ! در هر صورت !
روش استفاده :
یک کد عکس درست میکنید به اینصورت :

<img src="your_page_folder/captcha.php" alt="captcha" />
این کد عکس اون captcha رو نشون میده !
حالا میای توی همون صفحه یک text input درست میکنی و آیدیش رو میذاری مثلا : captchaCode !
بعد میای یک متغیر درست میکنی و مقدار اون رو برابر با session اون captcha میدی ! مثلا :

$captcha=$_SEESION['captcha'];
و در نهایت موقعی که داری form خودت رو آنالیز میکنی و مقادیر رو میگیری این 2 تا رو مقایسه میکنی که اگر درست نبود خطا بده !

// any vars
$captchaCode=$_POST['captchaCode']; // این مقدار فیلدی هست که کاربر وارد کرده
$captcha=$_SESSION['captcha']; // این مقدار اصلی اون captcha کدی که درست شده هست
if($captchaCode != $captcha){ // اینجا هم چک میکنی اگر باهم برابر نبودند خطا رو صادر و از اجرای بقیه برنامه جلوگیری میکنی
echo "error, Captcha is not true";
exit;
}

موفق باشید :)
دوست عزیز من اومدم و کار هایی را که گفته بودید را به صورت زیر انجام دادم:

عکس را به صورت زیر در صفحه به نمایش در آوردم



<img width="150" height="50" id="psec" src="../pic/index.php">

که ادرس کد های بالایی که نوشتم

عکس را با موفقیت ایجاد کرد.بعد اومدم تکس را گذاشتم با ای دی ای که گفتید بعد action فرم را به ادرس 1.php دادم و کدهایی را که اخر بار گفتید را نوشتم اما خطا های زیر را میده


Notice: Undefined variable: _SEESION in D:\xampp\htdocs\reg\registry\1.php on line 10

Notice: Undefined variable: _SESSION in D:\xampp\htdocs\reg\registry\1.php on line 12
error, Captcha is not true

Tarragon
سه شنبه 03 بهمن 1391, 14:06 عصر
بنظرم یه session_start(); تو l.php بزارید درست بشه.

siavashsay
سه شنبه 03 بهمن 1391, 14:09 عصر
دوست عزیز !
در بالای هر صفحه ای که SESSION ها توشون دارن کار میکنن باید این کد رو بنویسید :

<?php
session_start();
?>
<html>
<head>
..
اون html - head رو نوشتم واسه اینکه بدونید قبل از اونها باید session_start کنید !
توی همون صفحه ای که فرم رو آنالیز کردید اون کد رو بذارید و سشن ها رو استارت کنید اول !

amin_sltny
سه شنبه 03 بهمن 1391, 14:13 عصر
ممنون درست شد.فقط اگه بخوام صفحما جوری بسازم که نیازی به ساخت صفحه 1.php نباشه باید چه کار کنم

ravand
سه شنبه 03 بهمن 1391, 14:16 عصر
منم یه مشکلی با تصویر امنیتی دارم اینکه وقتی فرد پیام ارسال میکنه دفعه ی بعد هم راحت با کلیک روی دکمه پیغام ارسال میشه و تصویر امنیتی تغییر نمیکنه . علتشم اینه که از ایجکس استفاده کردم. شما چه راه حلی پیشنهاد میدید؟
متشکرم.

Tarragon
سه شنبه 03 بهمن 1391, 14:20 عصر
سلام بترتیب
سیاوش جان یه زمان پست ندادیم اما بنظرم من همینو گفتم
امین جان عزیز (چون هم اسمیم :چشمک:) این دستور اگر فیلد ارسال شده باشه می نویسه
<?php
session_start();
if(isset($_POST['captcha'])){
$captchaCode=$_POST['captchaCode']; // این مقدار فیلدی هست که کاربر وارد کرده
$captcha=$_SESSION['captcha']; // این مقدار اصلی اون captcha کدی که درست شده هست
if($captchaCode != $captcha){ // اینجا هم چک میکنی اگر باهم برابر نبودند خطا رو صادر و از اجرای بقیه برنامه جلوگیری میکنی
echo "error, Captcha is not true";
exit;
}
else{echo 'Captcha is valid';}
}
سوم دوست عزیز شما چک کن اگر کپتچا درست بود سشن کپچا رو unset کن.

amin_sltny
سه شنبه 03 بهمن 1391, 14:29 عصر
سلام بترتیب
سیاوش جان یه زمان پست ندادیم اما بنظرم من همینو گفتم
امین جان عزیز (چون هم اسمیم :چشمک:) این دستور اگر فیلد ارسال شده باشه می نویسه
<?php
session_start();
if(isset($_POST['captcha'])){
$captchaCode=$_POST['captchaCode']; // این مقدار فیلدی هست که کاربر وارد کرده
$captcha=$_SESSION['captcha']; // این مقدار اصلی اون captcha کدی که درست شده هست
if($captchaCode != $captcha){ // اینجا هم چک میکنی اگر باهم برابر نبودند خطا رو صادر و از اجرای بقیه برنامه جلوگیری میکنی
echo "error, Captcha is not true";
exit;
}
else{echo 'Captcha is valid';}
}
سوم دوست عزیز شما چک کن اگر کپتچا درست بود سشن کپچا رو unset کن.
امین جان این exit چه کار می کنه؟

siavashsay
سه شنبه 03 بهمن 1391, 14:34 عصر
امین جان این exit چه کار می کنه؟
از اجرا شدن بقیه دستورات جلوگیری میکنه ! :)

amin_sltny
سه شنبه 03 بهمن 1391, 14:39 عصر
راستی دوستان نظرتونا درباره امنیت تصویری که تولید میشه نداید؟به نظر شما تا چه حد قابل اطمینانه