PDA

View Full Version : سوال: ایجاد کد امنیتی



sun php
سه شنبه 20 مهر 1389, 12:27 عصر
سلام خدمت دوستان عزیز و اساتید گرامی
من می خوام برای ورود به بخش مدیریت سایتم یه کد امنیتی ایجاد کنم ولی چطوری این کار رو باید انجام بدم رو بلد نیستم می خواستم از شما دوستان یه راهنمایی بگیرم که چطوری باید این کار رو انجام بدم
با تشکر :بوس:

sama01
سه شنبه 20 مهر 1389, 12:59 عصر
می‌توانید در همین فروم و در اینترنت، با جست‌وجوی عبارت captcha به نتایج خوب برسید. حتی هم فارسی.

استفاده از recaptcha (که متعلق به گوگل است) هم در بسیاری از سایت‌ها رابج است و هم امن و آسان.

binyaft
سه شنبه 20 مهر 1389, 13:59 عصر
http://www.white-hat-web-design.co.uk/articles/php-captcha.php

sun php
سه شنبه 20 مهر 1389, 22:07 عصر
با تشکر از راهنمایی دوستان من توی سایت یه اموزش استفاده از کدهای captcha رو پیدا کردم و از اون استفاده کردم ولی هنگام نمایش نمی دونم چرا تصویر رو نمایش نمیده من کدی رو که دارم استفاده می کنم رو میذارم رو سایت لطفا مشکل من رو به من گوش زد کنید .
لینک اموزش کد : http://www.barnamenevis.org/forum/showthread.php?t=233055&highlight=captcha

funpatogh
سه شنبه 20 مهر 1389, 22:41 عصر
توی فرمت یک فیلد بزار برای وارد کردن کد و یک img هم بزار برای captcha.php


<img src="captcha.php">

بعد وقتی این فایل لود میشه یک سشن ایجاد میشه که شما باید این فیلد رو با مقدار سشن مقایشه کنی اگر یکی بودند لاگین انجام بشه اگه نه هم یک کد جدید ایجاد میشود


<?php
$seccode = mt_rand(10000, 99999);
session_start();
$_SESSION['seccode'] = $seccode;
header("Content-Type: image/png");
$im = imagecreate(60, 18) or die('Error on create image!');
$corfundo = imagecolorallocate($im, 255, 244, 234);
$corfonte = imagecolorallocate($im, 255, 128, 0);
$corlinha = imagecolorallocate($im, 255, 200, 150);
$corborda = imagecolorallocate($im, 255, 128, 0);
for($x=10; $x <= 100; $x+=10)
imageline($im, $x, 0, $x, 50, $corlinha);
imageline($im, 0, 9, 100, 9, $corlinha);
imageline($im, 0, 0, 0, 50, $corborda);
imageline($im, 0, 0, 100, 0, $corborda);
imageline($im, 0, 17, 100, 17, $corborda);
imageline($im, 59, 0, 59, 17, $corborda);
imagestring($im, 5, 8, 1, $seccode, $corfonte);
imagepng($im);
imagedestroy($im);
?>

sun php
چهارشنبه 21 مهر 1389, 08:57 صبح
توی فرمت یک فیلد بزار برای وارد کردن کد و یک img هم بزار برای captcha.php


<img src="captcha.php">
بعد وقتی این فایل لود میشه یک سشن ایجاد میشه که شما باید این فیلد رو با مقدار سشن مقایشه کنی اگر یکی بودند لاگین انجام بشه اگه نه هم یک کد جدید ایجاد میشود


<?php
$seccode = mt_rand(10000, 99999);
session_start();
$_SESSION['seccode'] = $seccode;
header("Content-Type: image/png");
$im = imagecreate(60, 18) or die('Error on create image!');
$corfundo = imagecolorallocate($im, 255, 244, 234);
$corfonte = imagecolorallocate($im, 255, 128, 0);
$corlinha = imagecolorallocate($im, 255, 200, 150);
$corborda = imagecolorallocate($im, 255, 128, 0);
for($x=10; $x <= 100; $x+=10)
imageline($im, $x, 0, $x, 50, $corlinha);
imageline($im, 0, 9, 100, 9, $corlinha);
imageline($im, 0, 0, 0, 50, $corborda);
imageline($im, 0, 0, 100, 0, $corborda);
imageline($im, 0, 17, 100, 17, $corborda);
imageline($im, 59, 0, 59, 17, $corborda);
imagestring($im, 5, 8, 1, $seccode, $corfonte);
imagepng($im);
imagedestroy($im);
?>

با تشکر از شما دوست گرامی :بوس:
به نظر من شما کدی که من نوشتم رو درست نگاه نکردید من تصویر رو به فایل php اختصاص دادم ولی نشون نمیده این هم کدش

<img src="visual-captcha.php" width="200" height="60" alt="Visual CAPTCHA" > و در مورد کد دومی که گذاشتید میشه واضح تر توضیح بدید که من این کد را باید دقیقا کجا قرارش بدم ؟
اگه منظورتون چک کردن کد هست باز هم من در اول صفحه لاگین این کار رو کردم این هم کدش :

if(isset($_REQUEST['_submit'])) {
$puser = htmlspecialchars($_REQUEST["user_name"]);
$ppass = htmlspecialchars($_REQUEST["pass_word"]);
require('php-captcha.inc.php');
if (PhpCaptcha::Validate(htmlspecialchars($_REQUEST["user_code"])) {
$select = "select * from user_account where userid='$puser' and password='$ppass' ";
$query=mysql_query($select);
$Ncol=mysql_num_rows($query) ;
if ($Ncol <= 0) {
echo '<script>alert(" äÇã ßÇÑÈÑ æ ÇÓã ÑãÒ ãæÌæÏ æÇÑÏå ÇÔÊÈÇå ÇÓÊ "); </script>';
}else{
setcookie ("pa_user", $puser,time()+36000);
setcookie ("pa_pass", $ppass,time()+36000);
$pa_user = $puser;
$pa_pass = $ppass;
$ok_cookie = true;
echo '<script>window.location.href="index.php"</script>';
return;
}
} else {
echo '<script>alert("˜Ï ÇãäíÊí æÇÑÏ ÔÏå ÇÔÊÈÇå ãí ÈÇÔÏ . "); </script>';
}

binyaft
چهارشنبه 21 مهر 1389, 13:33 عصر
جی دی فعاله؟؟
اگه فعال نیست ، شاید به همین دلیل تصویر نمایش داده نمیشه

alonemm
چهارشنبه 21 مهر 1389, 15:23 عصر
شما هم میتونید خودتون اینکارو بکنید.
من توی یک پروژه خودم واسش یک کلاس و یک متد نوشتم که یک عدد به صورت رندم درست میکرد و از یک آرایه که حروف هم داشت به صورت رندم کارکتر هم میزاش یعنی مثل میشد:
A39BP22
بعد اینو نمایش میدادم و توسط یک فیلد مخفی به صفحه لاگین پستش میکردم و با یک شرط چک میکردم تکس باکسی که کاربر فرستاده مقدارش برابر این هست یا نه.

binyaft
چهارشنبه 21 مهر 1389, 17:58 عصر
بعد اینو نمایش میدادم و توسط یک فیلد مخفی به صفحه لاگین پستش میکردم و با یک شرط چک میکردم تکس باکسی که کاربر فرستاده مقدارش برابر این هست یا نه.
این روش امنیت نداره ، بهتره با سشن اطلاعات رو بفرستید
روش بالا رو میشه با یک regex ساده دور زد

funpatogh
چهارشنبه 21 مهر 1389, 20:19 عصر
عزیز جوابم من ربطی به اون فایل نداشت
چون شما اون captcha که گزاشتی حرفه ای هست مشکل پیدا خواهی کرد با ساده ترش تست کن به جواب رسیدی بعد فایل خودت رو بگزار
اون کدی که من دادم رو توی یک فایل به اسم captcha.php ذخیره کن و توی هاستت اجراش کن ببین اصلا تصویر نمایش داده میشه یا نه اگه نمایش داد که معلومه gd فعال هست
با این تابه هم میتونی چک کنی ببینی که فعال هست یا خیر


if(extension_loaded('gd'))
echo "active";
else
echo "not Active";

sun php
چهارشنبه 21 مهر 1389, 21:54 عصر
با تشکر از دوستان یه سوال دیگه هم برای من اینجا پیش اومد این بود که حالا اگر اجازه رایت روی SESSION رو نداشته باشم باید چطوری این کد رو درست کنم و چک کنم این فایل هایی که من پیدا کردم همشون رویSESSION این کار رو انجام میدند

shahriyar3
چهارشنبه 21 مهر 1389, 21:57 عصر
اجازه رايت روي سشن ديگه چه صيغه ايه؟؟؟
خوب يه سشن جديد ايجاد كن


$_SESSION['captcha']

funpatogh
چهارشنبه 21 مهر 1389, 22:47 عصر
چرا اجازه ایجاد سشن ندارید؟

Emir New
پنج شنبه 22 مهر 1389, 10:00 صبح
با سلام خدمت دوستان من هم این رو شنیدم که گاهی اوقات نمیشه روی SESSIONچیزی رو نوشت نمی دونم چرا؟
اگر ممکن هست میشه بحث SESSION رو بیشتر باز کنید ؟
من می خوام اطلاعات بیشتری در مورد SESSION داشته باشم الان هیچی اطلاعات خوبی راجع بهش ندارم :افسرده:

xoogle.ir
پنج شنبه 22 مهر 1389, 10:41 صبح
این یکی از هزارات صفحه ای است که در مورد سشن در گوگل پیدا میشه :

http://www.tizag.com/phpT/phpsessions.php

من خودم از اینجا یاد گرفتم.