PDA

View Full Version : سوال: اطلاعات بیشتر درباره Session



sun php
یک شنبه 25 مهر 1389, 21:40 عصر
با سلام
شاید این سوال برای شما مسخره یا تکراری باشه ولی من می خوام بدونم که چرا بعضی از برنامه نویس ها با کار روی Session ها مخالف هستند
یا بهتر هست این رو بگیم که میشه در این تاپیک از معایب و محاسن Session صحبت بشه تا ببینیم ایا کار بر روی Session مناسب هست یا خیر ؟
با تشکر :قلب:

binyaft
یک شنبه 25 مهر 1389, 22:20 عصر
شنیدم داخل شیر هاستینگ session ها رو میدزدن ،

sun php
یک شنبه 25 مهر 1389, 22:33 عصر
ایا میشه جلوی این دزدی رو بست یا خیر ؟
بعدش هم اگر این طور باشه حرف یکی از دوستان من که می گفت برای این که کد امنیتی رو درست کنی از Session استفاده نکن درست هست که :متفکر:

binyaft
دوشنبه 26 مهر 1389, 12:48 عصر
اینجوری هم نیست که هر کس خواست بیاد سشن های یک سرور رو برداره بعد هر کاری که خواست انجام بده
برای ارسال کد امنیتی راه بهتری داری؟

Emir New
دوشنبه 26 مهر 1389, 16:24 عصر
اره من یه نمونه کد پیدا کردم که از Session استفاده نمی کنه این کد رو می ذارم شما نظرتون رو در این باره بدبد
کد شماره 1:

<?php
function get_rnd_iv($iv_len){
$iv = '';
while ($iv_len-- > 0) {
$iv .= chr(mt_rand());
}
return $iv;
}
function md5_encrypt($plain_text, $password, $iv_len = 16){
$plain_text .= "\x13";
$n = strlen($plain_text);
if ($n % 16) $plain_text .= str_repeat("\0", 16 - ($n % 16));
$i = 0;
$enc_text = get_rnd_iv($iv_len);
$iv = substr($password ^ $enc_text, 0, 512);
while ($i < $n) {
$block = substr($plain_text, $i, 16) ^ pack('H*', md5($iv));
$enc_text .= $block;
$iv = substr($block . $iv, 0, 512) ^ $password;
$i += 16;
}
return base64_encode($enc_text);
}
function md5_decrypt($enc_text, $password, $iv_len = 16){
$enc_text = base64_decode($enc_text);
$n = strlen($enc_text);
$i = $iv_len;
$plain_text = '';
$iv = substr($password ^ substr($enc_text, 0, $iv_len), 0, 512);
while ($i< $n) {
$block = substr($enc_text, $i, 16);
$plain_text .= $block ^ pack('H*', md5($iv));
$iv = substr($block . $iv, 0, 512) ^ $password;
$i += 16;
}
return preg_replace('/\\x13\\x00*$/', '', $plain_text);
}
?>

کد شماره 2:

<?php
require_once "encode.php";
$decid = urldecode(md5_decrypt($_REQUEST['id'], $_REQUEST['key']));
header("Content-type: image/png");
$img = imagecreatetruecolor(75, 25);
$black = imagecolorallocate($img, 0, 0, 0);
$red = imagecolorallocate($img, 236, 134, 72);
$bgline = imagecolorallocate($img, 81, 102, 125);
$bg = imagecolorallocate($img, 131, 152, 175);
imagefill($img, 0, 0, $bg);


imageline($img,0,6,75,6,$bgline);
imageline($img,0,12,75,12,$bgline);
imageline($img,0,18,75,18,$bgline);

imageline($img,7,0,7,25,$bgline);
imageline($img,14,0,14,25,$bgline);
imageline($img,21,0,21,25,$bgline);
imageline($img,28,0,28,25,$bgline);
imageline($img,35,0,35,25,$bgline);
imageline($img,42,0,42,25,$bgline);
imageline($img,49,0,49,25,$bgline);
imageline($img,56,0,56,25,$bgline);
imageline($img,63,0,63,25,$bgline);
imageline($img,70,0,70,25,$bgline);


imageline($img,3,6,70,18,$red);
imagestring($img, 5, 5, 5, $decid, $black);
//imagettftext($img,20,0,10,20,$brown,"/path/arial.ttf",$decid);
imagepng($img, '', 75);
imagedestroy($img);
?>

binyaft
دوشنبه 26 مهر 1389, 16:55 عصر
اینطوری که من فهمیدم اول میاد یه الگوریتم رمزگذاری شخصی سازی شده رو پیاد میکنه ،
و مثلا داخل یه فیلد hidden مقدارشو میگذاره که به سرور ارسال بشه حالا پی اچ پی با تابع md5_decrypt کد مورد نظر رو دکد میکنه و سپس مقایسه میکنه با کدی که به تصویر تبدیل شده ،
این راه هم راه خوبیه و شاید بهتر از سشن ها ، البته این هم بگم که اگر کد الگوریتم دکد لو بره ساده تر از اون که فکر کنید میشه کد امنیتی رو دور زد که فکر نکنم چنین چیزی پیش بیاد

eshpilen
دوشنبه 26 مهر 1389, 18:12 عصر
با سلام
شاید این سوال برای شما مسخره یا تکراری باشه ولی من می خوام بدونم که چرا بعضی از برنامه نویس ها با کار روی Session ها مخالف هستند
یا بهتر هست این رو بگیم که میشه در این تاپیک از معایب و محاسن Session صحبت بشه تا ببینیم ایا کار بر روی Session مناسب هست یا خیر ؟
با تشکر :قلب:

من جدیدا PHP مطالعه نکردم اما فکر میکنم مشکل امنیتی سشن ها تاحد زیادی (یا کاملا) حل شده باشه. این مسئله مال قدیم و مثلا PHP4 بوده.
اما دلیل دیگری که ممکنه از سشن پرهیز کنن اونم تنها جایی که مقدور هست و اصولا ضرورتی نداره، احتمالا بخاطر کاهش هزینه های پرفورمنس و اینطور چیزها باشه.
بهرحال همون موقع قدیم هم میشد مشکل امنیتی سشن ها رو با تنظیمات یا ذخیره سازی سشن در دیتابیس (بجای سیستم فایل معمولی) حل کرد.

eshpilen
دوشنبه 26 مهر 1389, 18:30 عصر
اره من یه نمونه کد پیدا کردم که از Session استفاده نمی کنه این کد رو می ذارم شما نظرتون رو در این باره بدبد

منبع؟
.....

Emir New
دوشنبه 26 مهر 1389, 19:07 عصر
منبع؟
.....
من توی اینترنت این رو پیدا کردم از طریق سرچ گوگل پیدا کردم حقیقتش ادرسش رو برنداشتم :گیج:
حالا که کد هست منبع رو می خواهی چکار ؟
حالا خدایش باحال بود یا نه ؟

eshpilen
دوشنبه 26 مهر 1389, 19:46 عصر
من توی اینترنت این رو پیدا کردم از طریق سرچ گوگل پیدا کردم حقیقتش ادرسش رو برنداشتم :گیج:

خسته نباشید خب دوباره پیداش کن!
احتمالا یک قسمت از کدش رو با گوگل سرچ کنی باید پیدا بشه.


حالا که کد هست مرو می خواهی چکار ؟آخه احتمال میدم اصلا کاربردش جایگزین شدن با سشن نباشه. یا شاید در همه حالتی نباشه.
کلا مبهم هست.


حالا خدایش باحال بود یا نه ؟زیاد نه. خیلی مبهم هست. نه توضیحی نه چیزی!!
امنیت الگوریتم رمزنگاری ای هم که پیاده کرده به شدت زیر سوال هست. باید دید واقعا چقدر امنیت داره یا امنیت حداقلی رو برای چه کاربردی درنظر گرفته.
بنظرم پیاده سازی یه الگوریتم رمزنگاری بحد کافی امن اینقدر ساده و مختصر نیست. البته بستگی به کاربردش داره که تا چه حد جدی باشه. بهرحال بوسیلهء mcrypt میشه امنیت خیلی بیشتری داشت.

funpatogh
دوشنبه 26 مهر 1389, 19:53 عصر
با session_set_save_handler میشه سشن ها رو توی db ذخیره کرد تا کسی دزدی نکنه

Emir New
دوشنبه 26 مهر 1389, 21:34 عصر
خسته نباشید خب دوباره پیداش کن!
احتمالا یک قسمت از کدش رو با گوگل سرچ کنی باید پیدا بشه.
من یه خورده گشتم ولی پیداش نکردم دیگه حوصله گشتن رو نداشتم
شما که می گی یه تیکه رو توی گوگل سرچ کن شاید پیداش کردی چرا خودتون این کار رو انجام نمیدید؟


آخه احتمال میدم اصلا کاربردش جایگزین شدن با سشن نباشه. یا شاید در همه حالتی نباشه.
کلا مبهم هست.
من اون تیکه کدی رو هم که تصویر رو نشون میده براتون میذارم تا بهتر متوجه موضوع بشید


<?php
require_once "encode.php";
$string = md5(rand(0, microtime()*1000000));
$verify_string = substr($string, 3, 4);
$verify_string_hash = md5($verify_string);
$key = md5(rand(0,999));
$encid = urlencode(md5_encrypt($verify_string, $key));
echo "<img class='secimg' src='secureCodeGenerator.php?id=$encid&key=$key'>";
echo '<input name="rndval" value="'.$string.'" type="hidden">';
?>




امنیت الگوریتم رمزنگاری ای هم که پیاده کرده به شدت زیر سوال هست. باید دید واقعا چقدر امنیت داره یا امنیت حداقلی رو برای چه کاربردی درنظر گرفته.
من معذرت می خوام که نمی تونم بگم در چه سایتی این کد استفاده شده است ولی تا این حد می تونم به شما اطمینان خاطر بدم که این سایت از سایت های معروف و پر بازدید هستش و این رو هم میدونم که به این سایت حمله زیاد میشه

sun php
دوشنبه 26 مهر 1389, 21:45 عصر
با تشکر
میشه حداقل امنیت این کد رو بگید تا چه حد هست ؟
اصلا میشه روی این کد حساب باز کرد یا خیر ؟


با session_set_save_handler میشه سشن ها رو توی db ذخیره کرد تا کسی دزدی نکنه
من این روش رو نمی پسندم فکر کنم اگه یه طوری بشه به session اطمینان کرد بهتر از این روش باشه
البته این کدی رو هم که دوستمون گذاشتن ظاهرا بد نیست من توی php تازه وارد هستم چیزی به اون صورت نمی فهمم ولی با این حال فکر می کنم این کد دوستمون بد نباشه اگه دوستان یکم این موضوع رو باز کنن ممنون میشم :قلب:

اگر هم میشه درباره این mcrypt هم یکم توضیح بدید چی هستش ؟:متفکر:

binyaft
دوشنبه 26 مهر 1389, 21:45 عصر
http://bodobia.vatanblog.com/php-3
داخل لینک بالا کد شما رو پیدا کردم

sun php
دوشنبه 26 مهر 1389, 21:56 عصر
اقای binyaft (http://www.barnamenevis.org/forum/member.php?u=106845) لطف می کنید به سوال های من هم جواب بدید ممنون میشم

binyaft
دوشنبه 26 مهر 1389, 22:19 عصر
اگر استفاده از کدی که Emir New معرفی کردند رو میگید ، این کد امنیتش به نظر من از سشن ها بیشتر هست
البته میتونید بجای کد بالا یه الگوریتم کد گذاری برای خودتون بنویسید
در کل روش بهتری هست نسبت به سشن به نظر من

eshpilen
دوشنبه 26 مهر 1389, 22:19 عصر
من یه خورده گشتم ولی پیداش نکردم دیگه حوصله گشتن رو نداشتم
شما که می گی یه تیکه رو توی گوگل سرچ کن شاید پیداش کردی چرا خودتون این کار رو انجام نمیدید؟خودت که میبینی همیشه هم کار خیلی راحت و سریعی نیست.
منم که وظیفه و انگیزه ای در این ارتباط ندارم.
گفتم شاید خودت بخوای برای امکان گرفتن اطلاعات و نظر بیشتر از دیگران، فرضهای مسئله رو ابتدا کامل و مستند کنی.

خدایی تمرکز و فکر کردن و خوندن کد هم وقت و انرژی میبره.
بخاطر تنبلی نیست، بخاطر اینه که آدم روی یادگیری و پروژه های دیگه ای مشغول هست و فعلا پرداختن به چیزهای دیگه براش اولویتی نداره و ذهنش هم پر و درگیر یادگیری هست. اینقدر میخونم و بخاطر میسپارم که نگو. این دات نت رو تموم کنم دیگه خیالم یخورده راحت میشه و وقت و انرژی آزادم بیشتر. خودم چنتا پروژه توی فکرم هست که بعنوان تمرین که البته استفادهء عملی هم دارن انجام بدم. چنتا با PHP و یکی با Qt. شایدم بعدا با دات نت هم کاری کردم.

بعدشم طبق تجربهء من آدم وقتی با اطلاعات اولیهء ناقص و/یا نامعتبر شروع به تحلیل چیزی بکنه، هزینه های کارش خیلی بالاتر میره و ممکنه کلا مدتی سرکار بره و تازه بعدش بفهمه که قضیه یه چیز دیگه بوده یا مطلب اصلا ارزش و اعتبار خوبی نداشته.

binyaft
دوشنبه 26 مهر 1389, 22:28 عصر
[QUOTE]
ولی اگر روشش این باشه از اصول امنیت روش درست و بهینه ای نیست و میشه گفت ناشیانه هست. سورس و پسورد اصلی هم که لو بره دیگه هیچی.

[QUOTE/]

هر کسی میتونه برای خودش یک کد رمز گذاری بسازه که هیچ کس هم نفهمه
راستی چرا ناشیانه هست؟

eshpilen
دوشنبه 26 مهر 1389, 23:02 عصر
هر کسی میتونه برای خودش یک کد رمز گذاری بسازه که هیچ کس هم نفهمه
راستی چرا ناشیانه هست؟چون روشهای بقدر کافی امن و استاندارد و مورد تایید متخصصان امنیت وجود دارن.
کجا چرا چه نیازی هست که از روش دیگه ای استفاده کنیم؟
اگر از خودمون الگوریتمی اختراع کنیم، به احتمال زیادی خیلی ضعیفتر از الگوریتم های استاندارد خواهد بود. مسائل مبحث امنیت، اونم بعلاوهء رمزنگاری، از چیزی که اکثر افراد فکر میکنن پیچیده تر و حساس تر و غیرمنتظره تر هست و حساب و کتاب زیادتری داره! شاید چنین سیستمی تا وقتی سورس لو نرفته مقداری امنیت داشته باشه، اما بعد از اون به احتمال زیاد امنیتش بسیار کم میشه (اگر به کلی بی اثر نشه).
ضمنا اغلب اینطور سیستمها رو بصورت عمومی هم نمیشه استفاده کرد چون به این صورت سورس و الگوریتم در دسترس عمومی قرار میگیره.

eshpilen
دوشنبه 26 مهر 1389, 23:17 عصر
بنده الگوریتم رو بیشتر بررسی کردم.
بنظر من الگوریتمش فوق العاده پشمکی هست!
میتونست خیلی بهتر پیاده سازی بکنه.
مثلا حداقل یه پسورد محرمانه هم بهش اضافه میکرد.

Emir New
سه شنبه 27 مهر 1389, 09:37 صبح
بنظر من الگوریتمش فوق العاده پشمکی هست!
من این سورس رو به دوستانم که خودشون استاد php هم هستن نشون دادم اونا همچین دیدی نداشتن
شاید دید شما پشمکی هست که این رو دارید می گید ؟:قهقهه:
حالا دوستان من هیچی بارشون نیست اقای binyaft (http://www.barnamenevis.org/forum/member.php?u=106845) چی ؟ ایا نظر ایشون رو هم قبول ندارید؟

xoogle.ir
سه شنبه 27 مهر 1389, 10:35 صبح
کجا چرا چه نیازی هست که از روش دیگه ای استفاده کنیم؟

بعضی وقت ها احتیاج میشه که از یک روش دیگه استفاده بکنیم مثلا یه پروژه ای به من پیشنهاد شد که به برنامه نویس دیگه به طرز بسیار افتضاحی نوشته بودش و من قرار بود که برنامه رو از نو بازنویسی کنم و از دیتابیس برنامه نویس قبلی هم استفاده کنم.
یکی از مشکلاتی که این بانک داشت این بود که اکثر کلید های اصلیش به صورت auto increment تعریف شده بود و صاحب پروژه هم نمیخواست که این طور باشه مثلا مشتری که توی سایت ایشون سفارش میداد میدید که سفارشش چندمین سفارشی هست که ثبت میشه.

من مجبور بودم بدون اینکه تغییر در دیتابیس بدم این مشکل رو برطرف کنم به همین خاطر یک الگوریتم رمزنگاری برای اعداد نوشتم که اعداد به صورت رمز شده به کاربر نمایش داده بشن.


شاید .............................. :قهقهه:


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

eshpilen
سه شنبه 27 مهر 1389, 11:20 صبح
من این سورس رو به دوستانم که خودشون استاد php هم هستن نشون دادم اونا همچین دیدی نداشتن

خب به من چه :لبخند:
اینم که شما ادعا کنی استادن یا خودشون، چیزی رو ثابت نمیکنه.
اگر میخواید ثابت بشه میتونیم روش بحث و تحلیل کنیم. وگرنه به حرف و ادعا که نیست.
ضمنا این تنها در تخصص PHP نیست، بلکه بیشتر با امنیت و رمزنگاری در ارتباط هست که زیرمجموعهء دانش PHP و برنامه نویسی وب عادی نیست (هرچند یکسری مسائل عمومی امنیت رو برنامه نویسهای PHP باید یاد بگیرن و اغلب یاد میگیرن). خودش یک دنیای بزرگه. یک تخصص جداگانه هست و نمیشه گفت طرف چون استاد PHP هست حتما در این زمینه هم دانش پایهء لازم و احاطهء کافی داره.


شاید دید شما پشمکی هست که این رو دارید می گید ؟:قهقهه:شاید.
ولی حداقل من یه کتاب تخصصی کامل و قوی دربارهء مسائل رمزنگاری خوندم. آیا دیگران هم این کار رو کردن؟
بهرحال در بحث و تحلیل عملی ثابت خواهد شد. البته گاهی هم ثابت نمیشه (بعضی وقتها هم بخاطر لجبازی طرفین البته!!).


حالا دوستان من هیچی بارشون نیست اقای binyaft (http://www.barnamenevis.org/forum/member.php?u=106845) چی ؟ ایا نظر ایشون رو هم قبول ندارید؟اشخاص مهم نیستن. حرفه ای ترین ها هم ممکنه اشتباهات پیش پا افتاده بکنن. ضمنا علم برنامه نویسی و امنیت اینقدر گسترده هست که بیشتر افراد فقط به بخشی از اون احاطه دارن و هرچقدر هم کارهای جالب و بزرگ کرده باشن، ممکنه در یه زمینهء دیگه که تخصص و مطالعهء کافی ندارن هیچی بارشون نباشه.
من به کسانی که بدون مطالعه کافی و پایهء تئوریک در یک حیطه، و بر اساس نظر و ابتکار شخصی و کارهای قبلیشون در زمینه های دیگه، خودشون رو دارای صلاحیت میدونن استاد نمیگم.
ضمنا صرف نداره بریم ببینیم هر شخصی چیکار کرده و چقدر بارشه. بهتره روی موضوع و بحث اصلی بصورت مستند و مستدل تمرکز کنیم.

eshpilen
سه شنبه 27 مهر 1389, 11:25 صبح
بعضی وقت ها احتیاج میشه که از یک روش دیگه استفاده بکنیم مثلا یه پروژه ای به من پیشنهاد شد که به برنامه نویس دیگه به طرز بسیار افتضاحی نوشته بودش و من قرار بود که برنامه رو از نو بازنویسی کنم و از دیتابیس برنامه نویس قبلی هم استفاده کنم.
یکی از مشکلاتی که این بانک داشت این بود که اکثر کلید های اصلیش به صورت auto increment تعریف شده بود و صاحب پروژه هم نمیخواست که این طور باشه مثلا مشتری که توی سایت ایشون سفارش میداد میدید که سفارشش چندمین سفارشی هست که ثبت میشه.

من مجبور بودم بدون اینکه تغییر در دیتابیس بدم این مشکل رو برطرف کنم به همین خاطر یک الگوریتم رمزنگاری برای اعداد نوشتم که اعداد به صورت رمز شده به کاربر نمایش داده بشن.

این کاربرد درحد کاربردهای جدی و حرفه ای امنیت و رمزنگاری نیست و به بحث ما ربط خاصی نداره بنظرم.
نیاز شما فقط این بوده که یکسری اعداد رو طوری مخدوش کنید که کاربر عادی، و نه یه هکر و متخصص که میخواد به سیستم شما حمله کنه، با دیدن اون اعداد چیزی دستگیرش نشه. برای چنین کاربردی نیاز به امنیت بالایی نداریم، هرچند همینها رو هم میشه اصولی تر نوشت.
به اونی هم که شما نوشتی فکر نمیکم بشه گفت الگوریتم رمزنگاری! حداقل در مقابل الگوریتم های استاندارد که در مقاصد رمزنگاری واقعی بکار میرن نمیشه گفت. اینها از نظر اصول و روش و امنیت و کارایی با هم خیلی اختلاف دارن.

Emir New
سه شنبه 27 مهر 1389, 11:26 صبح
اگر میخواید ثابت بشه میتونیم روش بحث و تحلیل کنیم. وگرنه به حرف و ادعا که نیست.من حرفی ندارم شما بحث رو از دیدگاه خودتون شروع کن و نقاط ضعف و قوت این کد را بیان کنید خلاصه بقیه دوستان هستن نظرات اون ها هم هستن خلاصه حتما اونا هم مطالبی در این باره خوندن دیگه این شکلی هم که نیست فقط شما این کتاب ها رو خونده باشید اگر این طور بشه فکر کنم این تاپیک ، تاپیک پر باری باشه .
اگر ممکن هست و وقتش رو دارید و به پروژه هاتون لطمه ای وارد نمی شود لطفا بحث را شما آغاز کنید
بسم الله

eshpilen
سه شنبه 27 مهر 1389, 12:10 عصر
اون کدهای درج شده بدون هیچ توضیح و اطلاعات جنبی لازم هستن؛ هرچند من فکر میکنم طرز استفادش رو فهمیدم.
اول باید یه دمو از کاربردش درست کنیم. فکر میکنم کار ساده ای باشه. یعنی مثلا چنتا (فکر کنم ۳) تا فایل PHP درست میکنیم که یک سیستم CAPTCHA با استفاده از این روش رو به ساده ترین شکل ممکن نشون میدن. بعد میریم روی ضعفش بحث میکنیم.
خب هرکس که روش کارش رو فهمیده و بقول شما استاد هست، باید بتونه بقدر کافی راحت و سریع، یه دموی آمادهء تست ارائه کنه که نشون بده این روش چطور کار میکنه.
البته منم میتونم درست کنم ولی ترجیح میدم و بنظرم بهتره این کار رو شما یا کس دیگری بکنه.
در اینجا شما همونقدر مدعی هستید که من بودم. شما میگید استادها کد رو بررسی کردن و اشکالی ازش نگرفتن، و لابد فهمیدن و میتونن یه دمو درست کنن. ضمنا اگر خودتون طرز کارش و استفاده از اون رو تشخیص دادید میتونید این کار رو خودتون هم انجام بدید. بیشتر کدها آماده هست؛ تکمیل یه دمو باید کار راحت و سریعی باشه.

binyaft
سه شنبه 27 مهر 1389, 12:53 عصر
بنظر من الگوریتمش فوق العاده پشمکی هست!
شاید این الگوریتم پشمکی باشه ولی میشه سخت تر از اینها هم نوشت که به عقل جن نمیرسه ،
لو رفن الگوریتم کد گذاری هم به نظر من فقط در سیستم هایی مثل وردپرس هست که اکثرا دارن استفاده میکنن
ما با کسی بحث اضافی ای نداریم ، دوستمون یه کد ارائه کردن و بنده هم نظر خودمو بیان کردم ، هنوز هم میگم
با روش رمز گزاری میتونیم از ورود روبات ها جلوگیری کنیم ،برخی مواقع بهتر از سشن ها!!!


چون روشهای بقدر کافی امن و استاندارد و مورد تایید متخصصان امنیت وجود دارن.

این هم یکی از این روش هاست ( هر کدی که برای جلوگیری از ورود ربات ها باشه میشه یه روش برای اینکار ) ، پس نمیشه گفت این عمل برای جلوگیری از ورود ربات ها پشمکی است

کجا چرا چه نیازی هست که از روش دیگه ای استفاده کنیم؟
هر کس وابسته به اون نیاز هایی که در برنامه نویسی داره از هر روشی که به نظرش مطمئن تر بیاد استفاده میکنه


اگر از خودمون الگوریتمی اختراع کنیم، به احتمال زیادی خیلی ضعیفتر از الگوریتم های استاندارد خواهد بود

من یه کد درست میکنم یه کلمه رو باهاش کد گذاری میکنم ، شما با چی میخوای بشکنیش؟


حرفه ای ترین ها هم ممکنه اشتباهات پیش پا افتاده بکنن
خوب این یه امر طبیعی هست



من به کسانی که بدون مطالعه کافی و پایهء تئوریک در یک حیطه، و بر اساس نظر و ابتکار شخصی و کارهای قبلیشون در زمینه های دیگه، خودشون رو دارای صلاحیت میدونن استاد نمیگم.
بالاخره هر کسی طبق کارها و تجربیاتی که داشته حرف میزنه
کسی اینجا خودش رو استاد پی اچ پی خوند؟؟
برای بقیه مهم نیست که شما یا من به اونها چی میگیم ، مهم اون چیزی هست که خودشون هستند


حداقل در مقابل الگوریتم های استاندارد که در مقاصد رمزنگاری واقعی بکار میرن نمیشه گفت. اینها از نظر اصول و روش و امنیت و کارایی با هم خیلی اختلاف دارن.

اقا اینجا بحث شد که ما در مورد سشن ها حرف بزنیم ، از معایبش بگیم ، راه حل پیشنهاد بدیم ، نمیخواهیم گوگل بسازیم که روش ما 100% استاندارد باشه !
ما میخوایم یه چیزی به جای سشن ها باشه که از روی سرور 2در نشه ، همین


اون کدهای درج شده بدون هیچ توضیح و اطلاعات جنبی لازم هستن؛ هرچند من فکر میکنم طرز استفادش رو فهمیدم.

اگر مطمئن نشدید من توضیح بدم براتون ؟

موفق باشید

eshpilen
سه شنبه 27 مهر 1389, 13:57 عصر
هنوز هم میگم
با روش رمز گزاری میتونیم از ورود روبات ها جلوگیری کنیم ،برخی مواقع بهتر از سشن ها!!!
ایراد استفاده از سشن بنظر شما در کجاست؟


اقا اینجا بحث شد که ما در مورد سشن ها حرف بزنیم ، از معایبش بگیم ، راه حل پیشنهاد بدیم ، نمیخواهیم گوگل بسازیم که روش ما 100% استاندارد باشه !
ما میخوایم یه چیزی به جای سشن ها باشه که از روی سرور 2در نشه ، همین اون روشی که طرف درست کرده بنظر من چنتا سوتی توش درکرده. ظاهرا تناقض/اشتباه توش دیده میشه و شواهد حاکی از سردرگمی و عدم تسلط هست (یه جورایی وصله و پینه شده خلاصه و الگوریتم رمزنگاری رو هم لابد از جای دیگری کپی کرده)؛ خیلی هم ضعیف هست که فکر میکنم میتونست با یه کمی تغییر خیلی قویترش کنه.
بعدشم بحث ما اصلا این چیزهای جزیی و ناشیانه نیست، چون ارزشی ندارن، هدف اینه که یه چیزی بیشتر یاد بگیریم از این بحث ها و پایه و اساس ما کامل و قوی و عمیق باشه.
آدم هرچی سرسری بگیره از نظر تئوری و عملی ضعیف میشه و موقعی که نیاز هست یه کار با کیفیت و قوی بده نمیتونه. یا وقتی میخوای یه نرم افزار پیچیده و بزرگ رو درست کنی بخاطر همینکه هربار یجا رو سمبل کردی و از یادگیری یه چیزی بصورت عمیق و کامل صرفنظر کردی، عملا با مشکلات اساسی متعددی روبرو میشی. وگرنه من خودمم خیلی جاها بصورت حداقلی و حتی ناقص و غیراصولی کار کردم چون نمیخواستم وقت و انرژی زیادی روی کدها بذارم، اما میدونم ضعف و نقص کجاست و چطور میشه برطرفش کرد و اگر بخوام میتونم خیلی درست و حسابی تر طراحیش کنم.


اگر مطمئن نشدید من توضیح بدم براتون ؟بهترین توضیح یک دمو هست.
فکر نمیکنم وقت و انرژی چندانی ببره.
همون رو که میخواید صرف گفتار و نوشتن توضیحات کنید صرف تولید یه دموی ساده از کاربرد این روش بکنید.

binyaft
سه شنبه 27 مهر 1389, 14:08 عصر
اون الگوریتمی که طرف درست کرده بنظر من چنتا سوتی توش درکرده. تناقض توش دیده میشه و خیلی هم ضعیف هست که میتونست با یه کمی تغییر خیلی قویترش کنه.
جناب ، اون فقط یک مثال بوده و کسی نگفته که حتما بیاین از این استفاده کنید


بعدشم بحث ما اصلا این چیزهای جزیی و ناشیانه نیست، چون ارزشی ندارن، هدف اینه که یه چیزی بیشتر یاد بگیریم از این بحث ها و پایه و اساس ما کامل و قوی و عمیق باشه.
شاید این بحث که ما و یا دوستان دنبال یه کد دیگه ای هستیم ، ناشیانه باشه ، اما من که این وسط یه چیزی یاد گرفتم و اصلا از نظرم این بحث ناشیانه نیست




بهترین توضیح یک دمو هست.
فکر نمیکنم وقت و انرژی چندانی ببره.
همون رو که میخواید صرف گفتار و نوشتن توضیحات کنید صرف تولید یه دموی ساده از کاربرد این روش بکنید.

نیازی به دمو نیست ، این روش همنطور که در بالا توضیح دادم کار میکنه

eshpilen
سه شنبه 27 مهر 1389, 14:40 عصر
جناب ، اون فقط یک مثال بوده و کسی نگفته که حتما بیاین از این استفاده کنید

منبع که نیاوردن واسش.
بهرحال توی این تاپیک بعنوان یه راهکار ارائه شد و نظر دیگران رو هم خواستن.
از یه طرف میگن استادان PHP اشکالی درش ندیدن!
خب ما هم نظر خودمون رو دادیم و اگر خواستید بیشتر روش بررسی انجام میدیم.
وگرنه کار دیگه نداریم ما اینجا و اصلا این مسئله برای چی مطرح شد؟
اگر بخوایم هرکدی رو که هرکسی نوشته همینطوری سطحی بپذیریم و استفاده کنیم که درست نیست و کدهای و روشهای ابتکاری ای که مطرح میشن بدون اینکه روش بررسی عمومی و تحلیل صورت بگیره، بی معنا هست مطرح کردنشون.


شاید این بحث که ما و یا دوستان دنبال یه کد دیگه ای هستیم ، ناشیانه باشه ، اما من که این وسط یه چیزی یاد گرفتم و اصلا از نظرم این بحث ناشیانه نیستخب دیگه منم میگم روی نظر و تحلیل خودمون بیشتر پیش بریم تا درست و غلطش روشن بشه و چیزهای بیشتری یاد بگیریم. چون این حدی که شما میگید توش متوقف بشیم حد سطحی و نیمه کاره ای هست. حالا شما دیگه نمیخواید روش بحث کنید خود دانید. بهرحال من چون نظر خلافم رو گفتم و خودشون خواستن حاضر شدم روش بحث و بررسی بیشتری بکنیم.
البته این اختیاری هست. شما میتونید بگید این روش درسته اما حاضر نشید روش بحث بیشتری بکنید و دست به همفکری و اثبات بزنید. ولی بهرحال این از نظر اصول و محتوا همونطور که گفتم مرحلهء ناقص و بی اعتباری هست.


نیازی به دمو نیست ، این روش همنطور که در بالا توضیح دادم کار میکنهدمو همون نشون دادن کار کردنش بصورت عملی هست. چیز خاصی نیست.
بعضی چیزها رو روی کد و با مثال خیلی راحتتر و بدون ابهام تر میشه نشون داد.
کار کردنش هم که کار میکنه. من نگفتم کار نمیکنه. ولی مسئلهء ما در اینجا کار کردن به تنهایی نیست، بلکه میزان امنیتش هست و اینکه کدوم روش و الگوریتم بهتر هست.
ژیان راه میره و کار میکنه و مرسدس بنز هم راه میره و کار میکنه! ولی این دوتا با هم خیلی تفاوت دارن.

binyaft
سه شنبه 27 مهر 1389, 15:09 عصر
ولی بهرحال این از نظر اصول و محتوا همونطور که گفتم مرحلهء ناقص و بی اعتباری هست.
خوب اگر من کد بالا رو یک تغییر کوچولو بدم شما میتونی بفهمی چه کلمه ای کد شده ،
برای چی ناقصه ؟


دمو همون نشون دادن کار کردنش بصورت عملی هست. چیز خاصی نیست.
بالاخره معنای دمو رو فهمیدم ، هر چی در اینترنت معنیشو جستجو کردم پیدا نکردم ( google translate هم نبود )، اما اینجا هست


بعضی چیزها رو روی کد و با مثال خیلی راحتتر و بدون ابهام تر میشه نشون داد.
چه ابهامی در کد بالا هست ، بفرمایید بنده توضیح بدم

Emir New
سه شنبه 27 مهر 1389, 16:15 عصر
دمو همون نشون دادن کار کردنش بصورت عملی هست. چیز خاصی نیست. این هم به قول شما یه دمو:لبخندساده:


ون روشی که طرف درست کرده بنظر من چنتا سوتی توش درکرده. ظاهرا تناقض/اشتباه توش دیده میشه و شواهد حاکی از سردرگمی و عدم تسلط هستخوب میشه از این سوتی ها با ذکر منبع یاد کنید سورس که داخل سایت فکر هم نکنم یه برنامه نویس حرفه یا یک انالیزور نیاز داشته باشه که دمو رو ببینه حتما ایراد سورس رو روی هوا میزنه و اون جایی که مورد دارد رو میذاره و روش بحث می کنه خدا را شکر این سایت هم این امکان رو دارد که کد php رو بتونیم راحت بذاریم :متفکر:


یادگیری یه چیزی بصورت عمیق و کاملما هم خواستار همین بحث هستیم اصلا فکر کنم کلا هدف این سایت این باشه


خب ما هم نظر خودمون رو دادیم و اگر خواستید بیشتر روش بررسی انجام میدیم.
من هم خواستار این هستم خلاصه به نظر من یکی پیدا شده و یک بحث جالبی رو باز کرده این بحث به نتیجه برسه فکر کنم عالی بشه و این که اگر یکم دوستمون اقای eshpilen (http://www.barnamenevis.org/forum/member.php?u=148005) یکم از حالت تهاجمی در بیاد و از در منطق و بحث کردن رو سورس کد با دلیل و مدرک بپردازند فکر نتیجه بهتر باشه

eshpilen
سه شنبه 27 مهر 1389, 16:25 عصر
خوب اگر من کد بالا رو یک تغییر کوچولو بدم شما میتونی بفهمی چه کلمه ای کد شده ،
برای چی ناقصه ؟

اون نقل قولی که در جوابش این حرف رو زدی منظورم چیز دیگه ای بود. منظورم رها کردن این بحث صرفا با یکسری بررسی و نظرهای انفرادی بودن بدون هیچ آزمایش عملی ای.
میگم آدم اینطور بحث رو نباید رها بکنه. البته هر کس اختیار داره، ولی کار بی معنی ای هست. اگر چیزی میپرسیم و مطرح میکنیم، باید به جای مطمئنی برسونیمش، نه اینکه تا کسی مخالفت کرد و خواستیم یخورده بحث کنیم و زحمت بکشیم بگیم ما بحثی نداریم!!


بالاخره معنای دمو رو فهمیدم ، هر چی در اینترنت معنیشو جستجو کردم پیدا نکردم ( google translate هم نبود )، اما اینجا هست

دمو مخفف Demonstration هست. به معنای نمایش.
منظورم این بود که یه چیزی درحد نشون دادن کار کردن عملی این روش درست کنید. یکسری کد حداقلی. چنتا اسکریپت که کارکردش رو عملا تست کنیم و با مثال بتونیم بررسیش کنیم.


چه ابهامی در کد بالا هست ، بفرمایید بنده توضیح بدم
من نمیدونم شما بدون بحث و بررسی و همفکری با دیگران و تست عملی، چطور اینقدر به خودتون مطمئن هستید. هرگز آدم قبل از تست و بررسی عملی و همه جانبه نمیتونه اینقدر مطمئن باشه. خیلی از موارد تنها در عمل و آزمایش مشخص میشن و ممکنه همینطوری به ذهن نرسن. ابهام من از اون جهت هست که احساس میکنم خیلی مسائل ممکنه در عمل بوجود بیان که پیشبینی نشده بودن. بعدهم یکسری نظرات دارم که باید بصورت عملی و روی کد و دمو نشون بدم، چون اینطوری اگر مطرح کنم شما با این لحن و جهتگیری ای که دارید همینطوری یه چیزایی میگید و بنظر خودتون و دو نفر دیگه هم شاید توجیه درستی باشه، اما در عمل اینطور نباشه. بنابراین منم نمیام تمام مواردی رو که مد نظر دارم همینطوری از اول بصورت شفاهی بیان کنم. برای نبودن ابهام و مشخص بودن صحت پاسخها، بودن نمونهء عملی و مثال اگر لازم نباشه ولی خیلی مفیده.

binyaft
سه شنبه 27 مهر 1389, 16:41 عصر
منبع که نیاوردن واسش.

منبعش رو میخوای چکار ، اصلا منبعش خود ، من بالاخره اون یه مثال برای الگوگیری بوده


من نمیدونم شما بدون بحث و بررسی و همفکری با دیگران و تست عملی، چطور اینقدر به خودتون مطمئن هستید

از من نظر خواستند ، من نظر خودمو اعلام کردم ، شما هم نظرتون رو گفتید و منو به جهتگیری متهم کردید


خیلی از موارد تنها در عمل و آزمایش مشخص میشن و ممکنه همینطوری به ذهن نرسن
من منکر این نکته نیستم ، اما از نظر ظاهری و ان طوری که من خودم به نتیجه رسیدم فعلا مشکلی نداره ، اگه داره حد اقل یکیشو بفرمایید و ما رو هم راحت کنید


لحن و جهتگیری ای که دارید همینطوری یه چیزایی میگید و بنظر خودتون و دو نفر دیگه هم شاید توجیه درستی باشه

شما میگی :


دمو همون نشون دادن کار کردنش بصورت عملی هست. چیز خاصی نیست.

من فقط همینجا به شما گفتم که معنی دمو رو یاد نداشتم ، خوب شد که گفتید
من میدونم معنی دمو چیه و لازم به گفتن شما نیست ، همین رو میگید جهتگیری؟؟ :قهقهه:


یه چیزایی میگید و بنظر خودتون

اولا که هر کس باید نظر خودش رو مطرح کنه ، و همینجوری هم نیست



نه اینکه تا کسی مخالفت کرد و خواستیم یخورده بحث کنیم و زحمت بکشیم بگیم ما بحثی نداریم!!
من نگفتم بحثی ندارم!!!!
شما یه نظری داری ، من و برخی از دوستان یه نظری ، خوب شما میگی این روش نقص زیاد داره و من میگم این روش برای کد امنیتی از سشن کم نمیاره ، خوب ثابت کن که این نقص داره

موفق باشید

Emir New
سه شنبه 27 مهر 1389, 16:59 عصر
خوب با این همه تفاسیر ما باید تا کی منتظر تحلیل فنی دوستمون اقای eshpilen (http://www.barnamenevis.org/forum/member.php?u=148005) بمونیم تا مشکل این سورس کد در بیاد اگه لطف کنید یه زمانی رو ایشون اعلام کنن چون من بی صبرانه منتظر هستم تا مشکلات این سورس رو بدونم و همین طور راه حل های یپیشنهادی ایشون و دیگر دوستان

binyaft
سه شنبه 27 مهر 1389, 17:05 عصر
من هم منتظر تحلیل فنی ایشون هستم ، :لبخندساده:

eshpilen
سه شنبه 27 مهر 1389, 17:18 عصر
اوه اوه چه خبره. دوستان عزیز این شما هستید که حالت تهاجمی دارید. وگرنه که من از اولش گفتم تست و تحلیل عملی بکنیم و با هم بحث کنیم. ولی کلی شما داستان میبافید و حاشیه میرید.
ضمنا از بحث و مخالفت نترسید. آدم نباید اینقدر از مخالفت و بحث با دیگران هرچقدر هم خشن و بی تعارف باشه اذیت بشه. اونم یه بحث مجازی با هویت های ناشناس.

اولا که این به اصطلاح دمویی که شما گذاشتید ناقص هست. چون درست کار نمیکنه. کانکشن به دیتابیس و تشکیلات لاگین و کارهای مربوط به شناسایی و ورود کاربر خاصی نیازی نبود، ما فقط یه کد امنیتی میخوایم تولید کنیم که کاربر وارد کنه و سابمیت کنه و سیستم تشخیص بده کد درست بوده یا نه. الان این کد شما حتی سابمیت هم نمیشه و خطای جاوااسکریپت میگیره و تازه نمیدونم دیتابیس و تشکیلاتش رو هم باید ایجاد بکنیم یا نه. خلاصه شما بیخودی یه کد حجیم و پیچیده گذاشتی که کار هم نمیکنه. اگر بدون اشکال کار کرد ما در خدمتتیم. وگرنه بفرمایید بنده چیکار کنم؟ بشینم بخونم و تحلیل کنم و مشکلاتش رو برطرف کنم؟ گفتم حداقل یه فایل sql برای دیتابیسی که لازم داره میذاشتید. شما چون کد رو احتمالا خودتون نوشتید یا بهرصورت تجربه دارید فکر کنم خیلی سریعتر و راحتتر بتونید راهش بندازید. بگذریم از اینکه بنظرم آدم که کد مثال و دمو میذاره باید کد سالم باشه و بدون اشکال کار کنه و نیاز به تعمیر و تکمیل توسط دیگران نداشته باشه!

خب اما سوتی های کد یکیش حتی از همین اول آشکار هست که بنده در جریان تحلیل الگوریتم قبلا پیشبینی کرده بودم. اگر سورس صفحهء لاگین رو در مرورگر خودتون باز کنید، یک input از نوع hidden در فرم ورود هست بنام rndval. و مقدار این فیلد یک هش MD5 هست که از کاراکتر چهارم مقدارش به تعداد 4 کاراکتر اگر بردارید، همون کد امنیتی ما هست. یعنی مثلا وقتی تصویر کد امنیتی نشون داده شده bf8a هست، در سورس همون صفحه شبیه چنین عبارتی وجود داره:
<input name="rndval" value="240bf8a1883c78e2714381f4fa9e2c2f" type="hidden">یعنی کد امنیتی شما خیلی ساده در اختیار هر روباتی هست!! فقط هکر باید یخورده دقت داشته باشه تا متوجه این موضوع بشه. از روی الگوریتم هم که کاملا مشخص هست.

حالا این سوتی بود یا نه که خودتون هم بدون اینکه متوجه بشید در برنامتون گذاشتید؟
نمیدونم واقعا فهمیدید این الگوریتم چطور کار میکنه؟ پس چرا متوجه این مورد نشدید؟
من به همین خاطر گفتم طرف انگار سردرگم بوده و یه اشتباهاتی کرده.

تازه این یکی از موارد بود، اما یکی از همه تابلوتر.
بقیهء موارد رو هم در جریان و احتمالا وقتی برنامه عملا راه افتاد (لطفا زحمتش رو بکشید اگر میتونید)، مطرح میکنیم. البته بقیهء موارد بیشتر فنی و تئوریک خواهد بود. اینی که الان مطرح کردم بنظرم تنها موردی بود که کسی نمیتونه کتمان کنه. پس در بقیهء بحث کار سخت تری در پیش خواهیم داشت :ناراحت:

binyaft
سه شنبه 27 مهر 1389, 17:39 عصر
دوستان عزیز این شما هستید که حالت تهاجمی دارید.
ما که حالت تهاجمی نداریم :متفکر:


خب اما سوتی های کد یکیش حتی از همین اول آشکار هست که بنده در جریان تحلیل الگوریتم قبلا پیشبینی کرده بودم

شما که زحمت کشیدید کد رو بر رسی کردید باید کلی بر رسی میکردید
مثلا یه جنابی میاد یه الگوریتم رمز نگاری میسازه که هیچ مشکلی در نمایش محتواش نداره ( مثل اون مثال بالا که سوتیشو گرفتید )
حالا اگر اون سوتی رو نداشت ما میتونیم کار دیگه ای انجام بدیم( میتونیم مثل سشن ها ، 2درشون کنیم؟؟؟ ) ؟؟؟؟
شما باید روش رو بررسی میکردید نه کد مثال رو ، کد مثال میتونه هر طوری نوشته بشه که اصلا کد امنیتی معلوم نباشه


نمیدونم واقعا فهمیدید این الگوریتم چطور کار میکنه؟ پس چرا متوجه این مورد نشدید؟

روش کار رو من فهمیدم که چطور هست ( همان طور که بقیه دوستان فهمیدند ) ، اما فقط روش ، دنبال سوتی های کد بالا نبودم ، دنبال اشکالات روش بودم که خودم به تنهایی به جایی نرسیدم

موفق باشید

Emir New
سه شنبه 27 مهر 1389, 18:05 عصر
اولا که این به اصطلاح دمویی که شما گذاشتید ناقص هست. چون درست کار نمیکنه. کانکشن به دیتابیس و تشکیلات لاگین و کارهای مربوط به شناسایی و ورود کاربر خاصی نیازی نبود، ما فقط یه کد امنیتی میخوایم تولید کنیمشما چقدر بهانه می گیرید عوض این که بهانه های جور وا جور رو بیارید اینجا تایپ کنید می تونستید کد های مربوط به connect رو حذف کنید و راحت به کار خودتون ادامه بدید :عصبانی:این که نیاز به استاد بودن و چیز دیگه که نداره یه صفحه لاگین ساده هست

eshpilen
سه شنبه 27 مهر 1389, 18:12 عصر
شما که زحمت کشیدید کد رو بر رسی کردید باید کلی بر رسی میکردید
کلی بررسی کردم. البته همین روش رو.


مثلا یه جنابی میاد یه الگوریتم رمز نگاری میسازه که هیچ مشکلی در نمایش محتواش نداره ( مثل اون مثال بالا که سوتیشو گرفتید )
حالا اگر اون سوتی رو نداشت ما میتونیم کار دیگه ای انجام بدیم( میتونیم مثل سشن ها ، 2درشون کنیم؟؟؟ ) ؟؟؟؟
بستگی داره. باید بررسی بشه. هیچ چیزی ناممکن نیست، اما چیزی که هنوز در واقعیت جلوی چشممون وجود نداره و تست نشده رو پیشاپیش ما نمیتونیم بگیم میتونه وجود داشته باشه و بی نقص هست. ضمنا امنیت و بهینه بودن الگوریتم و روش از نظر پارامترهای مختلف، نسبی هست. یعنی ما باید نشون بدیم چرا روش سشن ایراد داره و آیا نمیشه برطرف کرد و روش دیگری چرا بهتر هست. این خودش بحثی هست. چون من فکر میکنم اگر به روش درست پیاده کنیم، ممکنه سشن هیچ خطری هم نداشته باشه یا در کل مزایاش خیلی بیشتر باشه.
بدون وجود الگوریتم دقیق و بررسی و تست عملی در هیچ موردی نمیشه نظر کلی و قطعی داد.
حالا ما فعلا این یکی رو داشتیم و بجز این سوتی ها هنوز مطمئن نشدیم عملا کار میکنه (بدون نیاز به سوتی!) و چه ضعفهای دیگری درش هست. اگر خواستید بازم ادامه میدیم و بعضی موارد دیگه رو که بنظرم میرسه میگم. فعلا دوست عزیز زحمت کشیدن نمیدونم چرا برای ما برنامهء دیتابیس و تشکیلات گذاشتن که اصلا معلوم نیست کار بکنه یا نه. بابا یه دموی ساده فقط برای نشون دادن تولید و تایید کد امنیتی میخواستیم!

ضمنا شما میگی سشن رو دو در کنیم یعنی منظورت اینه که محتویات سشن رو کس دیگه ای اگر بتونه بخونه کد امنیتی ما رو هم راحت بدست میاره، یا منظورت چیز دیگه ای هست؟
چون اگر مسئله فقط خونده شدن سشن توسط افراد غیرمجاز باشه که فکر میکنم راهکار کافی داره (تازه اگر در نسخه های اخیر PHP کلا اشکالاتش رو برطرف نکرده باشن).


شما باید روش رو بررسی میکردید نه کد مثال رو ، کد مثال میتونه هر طوری نوشته بشه که اصلا کد امنیتی معلوم نباشه
بله بررسی کردم.
روشش بغیر از این مورد هم بنظر من بازم سوتی هایی داره. نه اینکه بگم اینها قابل اصلاح نیستن، ولی نشون میدن کسی که طراحیش کرده مسلط نبوده و گیج میزده. حالا هرکس هم که الگوریتم اون رو همینطوری کپی کنه معلومه که همون ضعفها رو به برنامهء خودش انتقال میده.
تازه الان تا کد دمو کامل کار نکنه بازم ابهامات و مواردی میتونن وجود داشته باشن که الان مشخص نیستن. بخاطر همین گفتم در عمل یه دمو درست کنید. بخاطر اینهم گفتم خودتون بنویسید یکی از دلیل هاش (نه تمام دلایلش) همین بود که مشخص میشه آیا خودتون الگوریتم رو دقیق و کامل خوندید و درک کردید یا نه. کسی که اینقدر دقت نداره ضعفهای به این گندگی رو تشخیص بده، چطور بدون تست و بررسی و بحث با دیگران میتونه با اطمینان بگه الگوریتم درستی هست؟ بقیه هم میرن همونطور کدها رو کپی میکنن با این فرض که امنیت داره.
البته همه اشتباه میکنن.
خود منم الان حتی مطمئن نیستم این کد در عمل کار میکنه و چه ضعفهای دیگری میتونه داشته باشه؛ اما بنظرم حداقل یکی دوتا دیگه مواردی که نشون میدن طراحش حداقل گیج بوده و میتونسته با کمی تغییر الگوریتم رو خیلی قویتر و امن تر بکنه به احتمال زیاد وجود دارن.
بعضی کدها به اصطلاح میگن بو دار هست (میدونید که این یه اصطلاح برنامه نویسهاست - Code Smell).
یعنی نشانه هایی از اشکال اصولی درش دیده میشه، اما هنوز دقیقا اون اشکالات و راهکارشون مشخص نیستن. این کد و روش هم بنظر من خیلی بودار هست.

eshpilen
سه شنبه 27 مهر 1389, 18:13 عصر
شما چقدر بهانه می گیرید عوض این که بهانه های جور وا جور رو بیارید اینجا تایپ کنید می تونستید کد های مربوط به connect رو حذف کنید و راحت به کار خودتون ادامه بدید :عصبانی:این که نیاز به استاد بودن و چیز دیگه که نداره یه صفحه لاگین ساده هست
خب اگر اینقدر ساده هست خودتون زحمتش رو بکشید.
البته منم الان نگاه میکنم اگر اینقدر ساده بود ترتیبش رو میدم!

Emir New
سه شنبه 27 مهر 1389, 18:26 عصر
این هم از فایل دیگه چه بهانه ای می خواهید بگیرید


یعنی ما باید نشون بدیم چرا روش سشن ایراد داره و آیا نمیشه برطرف کرد و روش دیگری چرا بهتر هست. این خودش بحثی هست. چون من فکر میکنم اگر به روش درست پیاده کنیم، ممکنه سشن هیچ خطری هم نداشته باشه یا در کل مزایاش خیلی بیشتر باشه.
اگر میشه نظرتون رو در این باره بیشتر بیان کنید تا ما هم دانسته هامون در این زمینه زیاد بشه

eshpilen
سه شنبه 27 مهر 1389, 18:41 عصر
دستت درد نکنه خسته نشی برادر اینقدر کار میکنی :لبخند:
شما محض احتیاط یه تست هم میزنی چیزی رو؟

عزیز برادر اون فایلهات پر از جاوااسکریپت و فایل js ارجاعی ناموجود بود و خطای جاوااسکریپت میگرفت و سابمیت نمیشد. خوشبختانه بنده فایلها رو خط به خط خوندم و تمام جاوااسکریپت و دیتابیس و هرچی مانع سابمیت شدن فرم بود رو برداشتم تا درست شد و این کار سریع و راحت انجام شد (فکر میکردم شاید سخت تر باشه).
اما الان تازه میرسیم به اینکه دموی ما کاملا ناقص هست. مسئله فقط نشون دادن کد امنیتی نیست که، میخوایم بعدش که کاربر کد رو وارد و فرم رو سابمیت کرد، پیام بده که کد وارد شده توسط کاربر صحیح بوده یا نه. الان کد شما جز نمایش دادن کد امنیتی هیچ کار دیگه ای نمیکنه و فرم همینطوری سابمیت میشه و هیچ تشخیصی صورت نمیگیره و پیامی داده نمیشه.
من اصلا دارم به این نتیجه میرسم که این روش جواب نمیده. حداقل بدون استفاده از اونجور سوتی هایی که دیدید (ظاهرا سوتی نبوده و کلک مخفی بوده!) جواب نمیده ظاهرا!! البته بازم بیشتر روش فکر میکنم. شما تونستی راهش بندازی ما رو هم خبر کن!

فایلهای ویرایش شده رو ضمیمه کردم.

Emir New
سه شنبه 27 مهر 1389, 18:56 عصر
شما محض احتیاط یه تست هم میزنی چیزی رو؟
ببخشید حق با شما هست چون روی سیستم من جواب میداد اصلا دیگه فکر هیچی رو نکرده بودم این هم کدهای اسکریپتش براتون گذاشتم امر دیگه باشه اگه بازم چیزی کم بود بگید براتون بذارم

binyaft
سه شنبه 27 مهر 1389, 19:08 عصر
کسی که اینقدر دقت نداره ضعفهای به این گندگی رو تشخیص بده، چطور بدون تست و بررسی و بحث با دیگران میتونه با اطمینان بگه الگوریتم درستی هست؟
اقا شما مثل اینکه منظور منو نمیگیری!!!
من میگم کلا روش خوبیه ، جایی دیدی که من نوشته باشم از این کد استفاده کنید ، این کد هیچ مشکلی ندارد
بحث ما روی اون کد نیست ، بحث روی این هست که اگر ما یک الگوریتم کد گذاری بسازیم که به راحتی نشه دکد کنیم و با یک فیلد hidden به سرور بفرستیم اونوقت هم مشکلی هست و یا برتری تا اینجا نسبت به سشن ها داره؟؟؟
موفق باشید

Emir New
سه شنبه 27 مهر 1389, 19:15 عصر
بابا شماها چرا یه بحث رو الکی کش میدید ول کنید برسیم به تحلیل فنی این موضوع و بررسی این که این کد نسبت به سشن ها برتری داره یا خیر ؟
اصلا من این وسط بگم غلط کردم شما راضی میشید که این قدر با هم دعوا نکنید ؟

Emir New
سه شنبه 27 مهر 1389, 19:31 عصر
کد امنیتی شما سمت کلاینت و توسط جاوااسکریپت انجام میشه، و این مسئله از نظر اصولی کاملا غلط و ناامن هست
خوب حالا شد تا این جای کار مشخص شد که کد ما امنیت لازم رو نداره حالا این جا چند تا مسئله برای من به وجود اومده اون هم این هست که :

خوب ایا الگوریتمی بهتر از این سراغ دارید که سوتی " input name="rndval" رو نداشته باشه ؟ و امنیت بهتری داشته باشه ؟
و این که بعد از بررسی های دیگه ای که روی این کد داشتید نسبت به امنیت یا سوراخ های موجود در کد صحبت کنید چون شما بارها گفتید این کد مورد داره ؟
و بعد از این که بررسی این کد تموم شد و نظرهای دیگران رو شنیدیم در این باره بعد بریم سراغ بررسی سشن ها و ببینیم که اون ها چه معایب و محاسنی رو در بر دارند نسبت به این کد
موفق باشید

eshpilen
سه شنبه 27 مهر 1389, 19:33 عصر
بابا شماها چرا یه بحث رو الکی کش میدید ول کنید برسیم به تحلیل فنی این موضوع و بررسی این که این کد نسبت به سشن ها برتری داره یا خیر ؟
اصلا من این وسط بگم غلط کردم شما راضی میشید که این قدر با هم دعوا نکنید ؟
مشکل این روش اینه که اگر الگوریتمش دست هکر باشه یا بتونه به نحوی سورس صفحه رو بخونه، دیگه هیچ امنیتی نداره.
حالا شما ممکنه بگی الگوریتم دست هکر نمیفته. ولی بهرحال نمیشه ازش در کارهای عمومی استفاده کرد.
مسئلهء دیگه اینه که بنظر من طراح این روش (میدونید کی نوشته؟) میتونست با دخالت دادن یک پسورد محرمانه در جریان رمزگذاری، این نقطهء ضعف رو تاحد زیادی برطرف بکنه، اما این کار رو نکرده. چراش رو نمیدونم! اگر یک پسورد محرمانه وجود میداشت، هکر فقط درصورتی که علاوه بر الگوریتم، اون پسورد رو هم میدونست میتونست کد امنیتی رو دیکد بکنه. یعنی نیاز به دسترسی مستقیم به سورس اون سایت خاص میداشت. چون هر سایتی میتونه پسورد محرمانهء خودش رو تعیین بکنه.

بعد مسئلهء سشن هست که چه مشکلی داره و آیا قابل برطرف کردن هست یا نه.
درنظر بگیرید که ما هش کد امنیتی رو همراه با salt در سشن ذخیره کنیم. سوال اینه که در این حالت آیا کرکر با خوندن این هش و salt میتونه به راحتی و سرعت کافی به کد امنیتی دست پیدا بکنه؟
سوال دیگر اینه که آیا راه راحت و کم هزینه ای برای جلوگیری از دسترسی افراد دیگر به محتوای سشن های PHP وجود نداره؟ تاجایی که من یادمه میشه مکان ذخیره سازی سشن های PHP رو هر فردی میتونه برای اکانت خودش تعیین کنه و مثلا جایی در Home directory خودش بذاره. آیا در اینصورت کرکر بازهم میتونه به سشن ها دسترسی داشته باشه؟
بعد تازه راه حل دیتابیس هم هست، ولی دردسر خیلی بیشتری داره.

eshpilen
سه شنبه 27 مهر 1389, 19:51 عصر
خوب حالا شد تا این جای کار مشخص شد که کد ما امنیت لازم رو نداره حالا این جا چند تا مسئله برای من به وجود اومده اون هم این هست که :

خوب ایا الگوریتمی بهتر از این سراغ دارید که سوتی " input name="rndval" رو نداشته باشه ؟ و امنیت بهتری داشته باشه ؟

ظاهرا input name="rndval" واقعا یه سوتی قابل برطرف کردن بود! چون من اون کد echo '<input name="rndval" value="'.$string.'" type="hidden">'; رو برداشتم و برنامه کار میکنه. اصلا بهش نیازی نیست ظاهرا!! تعجب نیست که چرا اصلا توی کد گذاشته شده بود؟
از طرف دیگه فکر میکنم به این روش سمت سرور هم مشکلی در Verify کردن نداریم؛ فقط شما توی دمو سمت سرورش رو پیاده نکردی.


و این که بعد از بررسی های دیگه ای که روی این کد داشتید نسبت به امنیت یا سوراخ های موجود در کد صحبت کنید چون شما بارها گفتید این کد مورد داره ؟
و بعد از این که بررسی این کد تموم شد و نظرهای دیگران رو شنیدیم در این باره بعد بریم سراغ بررسی سشن ها و ببینیم که اون ها چه معایب و محاسنی رو در بر دارند نسبت به این کد
موفق باشید
در بالاتر توضیح دادم و سوالاتی رو مطرح کردم.
بقیش به خصوصیات سشن برمیگرده. ببینید الان ما در این روش هم داریم هش کد امنیتی رو در سورس صفحه ارسال میکنیم (در فیلد پنهان sec_code2)، بنابراین نمیشه گفت این روش از سشن امن تره. بعدش اگر با روشهایی که گفتم بشه مشکل دسترسی عمومی به سشن رو حل کرد، خب مسلمه که اونوقت سشن امن تر میشه، چون هیچ اطلاعاتی درمورد کد امنیتی در دسترس روبات قرار نمیگیره جز خود تصویر کد امنیتی.
تنها چیزی که فکر منو به خودش مشغول کرده اینه که آیا دیگران میتونن محتویات سشن ما رو تغییر بدن یا خیر (چون به این صورت میتونن هش کدی رو که خودشون تولید کردن درش بجای هش ما جایگزین کنن). ولی بعید میدونم اینطور باشه؛ چون چنین چیزی یعنی یک افتضاح در طراحی PHP و منجر به این مسئله میشه که بسیاری از سایتهای موجود براحتی قابل هک هستن (بنابراین این فرض به احتمال زیاد نباید صحیح باشه). البته تستش هم زیاد سخت نیست. زمان PHP4 یه اسکریپت نوشته بودم که محتویات سشن ملت رو نمایش میداد! ولی یادم نمیاد در دستکاری سشن دیگران موفق بوده باشم؛ فکر کنم امکان پذیر نیست.
تازه اینا همه مال زمان PHP4 هست. و همونطور که گفتم همون موقع هم راهکار برای جلوگیری از این دسترسی وجود داشت (حداقل راه دیتابیس کاملا عملی و همه جایی بود (چون راه تغییر دایرکتوری حتی اگر دسترسی رو واقعا محدود بکنه ممکنه روی سرورهای ویندوز جواب نده)).

Emir New
سه شنبه 27 مهر 1389, 20:41 عصر
احسنت حالا شد یه مطلب اموزنده و بدون هیچ مسائل جانبی :تشویق:
و اما

بعدش اگر با روشهایی که گفتم بشه مشکل دسترسی عمومی به سشن رو حل کرد، خب مسلمه که اونوقت سشن امن تر میشهخوب این مشکل رو میشه از کجا پیگیری کرد و راه حل مناسب این رو پیدا کرد ؟

و یه مورد دیگه این که شما گفتید اگه input name="rndval" برداشته بشه هیچ موردی در برنامه به وجود نمیاد ظاهرا هم توی سورس هیچ مشکل خاص دیگه هم پیدا نکردید فکر نمی کنید با یکم تغییر در الگوریتم برنامه این هم کد خوبی برای تولید تصویر باشه ؟؟؟؟

و یه سوال دیگه ای که برای پیش اومده این هست تا چه حد میشه روی سشن ها مانور داد ؟
اصلا قدرت مانور دارند یا خیر ؟

eshpilen
سه شنبه 27 مهر 1389, 21:22 عصر
خوب این مشکل رو میشه از کجا پیگیری کرد و راه حل مناسب این رو پیدا کرد ؟والا من خیلی وقته PHP کار نکردم و جزییاتش یادم رفته و از تغییراتش خبر ندارم. شاید اصلا الان سشن مشکلی نداشته باشه واقعا! شما جایی سند جدیدی در این ارتباط خوندید؟
بهرحال اون موقع (زمان نسخهء سری 4) راه حل ذخیره سشن ها در دیتابیس بود که با گوگل کردن باید بتونید پیدا کنید (تابع محوری تابع session_set_save_handler هست در این مورد). به اینصورت سشن های شما نه تنها برای کدهای امنیتی، بلکه برای کارها و اطلاعات دیگر هم خیلی امن میشن. البته اگر از اینطور کدها پیدا کردید دقت کنید که اکثرشون کدی برای پاک کردن سشن های قدیمی از دیتابیس ندارن و بنابراین بخصوص که ترافیک سایت شما بالا باشه بعد از مدتی ممکنه حجم دیتابیس زیاد بشه، و برای حل این مسئله میتونید یک سیستم پاکسازی هم پیدا یا خودتون طراحی و پیاده کنید.


و یه مورد دیگه این که شما گفتید اگه input name="rndval" برداشته بشه هیچ موردی در برنامه به وجود نمیاد ظاهرا هم توی سورس هیچ مشکل خاص دیگه هم پیدا نکردید فکر نمی کنید با یکم تغییر در الگوریتم برنامه این هم کد خوبی برای تولید تصویر باشه ؟؟؟؟
بنظر من این برنامه باید یک پسورد محرمانه هم پیاده سازی کنه. نه اینکه فقط یه پسورد رندوم بین 0 و 999 تولید کنه و اون رو در آدرس کد امنیتی قرار بده. یه پراپرتیز از تصویر کد امنیتی بگیرید کلیدی که باهاش رمز شده کاملا مشخص هست و بنابراین هرکس الگوریتم رو داشته باشه میتونه براحتی کد امنیتی رو دیکد بکنه.

دوما من دیگه به این نتیجه رسیدم که هرجا از توابع هش مثل MD5 استفاده میکنیم، حتما باید از salt هم استفاده کنیم. این کد این کار رو نکرده اما میشه بهش اضافه کرد. با اینکه خودم خیلی جاها قبلا این مسئله رو جدی نمیگرفتم و رعایت نمیکردم، اما اون موقع جوون تر بودیم و کم اطلاع تر و تنبلی هم میکردم!!

سوما الان شما دارید هش کد امنیتی رو به سهولت در دسترس همهء کاربران قرار میدید در این برنامه. من یه حساب سرانگشتی کردم که میتونید خودتون قضاوت کنید ببینید درسته یا نه: کد امنیتی 4 کاراکتر داره، هر کاراکتر با احتساب انتخاب از میان 10 رقم و 26 حرف مجموعا میتونه 36 حالت داشته باشه (حروف رو بصورت غیرحساس به بزرگی و کوچکی درنظر گرفتم که بیشتر جاها باب هست و باعث راحتی کاربران میشه). حالا مجموع ترکیب های ممکن برای این 4 کاراکتر چنتا هست؟ 36 به توان 4 که میشه 1679616. خب هکر که هش کد امنیتی رو داره، بنظرم میتونه هش تمام این حدود یک میلیون و نیم ترکیب رو در زمان کوتاهی بصورت خودکار محاسبه کنه و با هش موجود در سورس صفحه تطبیق بده و هرکدوم صحیح بود کد امنیتی کرک شده!! اگر محاسبات و برآورد من از توان محاسباتی مورد نیاز درست باشه، پس این روش اساسا غیرقابل استفاده هست و باید فکری برای ذخیرهء هش در سمت سرور کرد که در دسترس عمومی هم نباشه. یعنی آخرش میرسیم به همون سشن (یا روش سمت سرور دیگری که خودمون طراحی و پیاده سازی میکنیم) و امن کردنش درصورت لزوم. تازه سشن در حالت عادی هم از این روش خیلی بهتر هست چون تا کرکر یک اکانت روی سرور شما نداشته باشه نمیتونه محتویات سشن و هش کد امنیتی رو بخونه، درحالیکه در این برنامه هش همیشه در دسترس همگان هست.

تنها ویژگی جالبی قابل توجهی که این برنامه داشت این بود که میشد در سمت کلاینت هم کد امنیتی رو چک کرد، که البته بنظرم تا اینجا متوجه شدیم که این خودش ناشی از چیزی هست که میتونه باعث ضعف بزرگی برای این سیستم بشه (بیخود نیست که جایی چک کردن کد امنیتی در سمت کلاینت رو نمیبینیم).


و یه سوال دیگه ای که برای پیش اومده این هست تا چه حد میشه روی سشن ها مانور داد ؟
اصلا قدرت مانور دارند یا خیر ؟ منظورتون از مانور چیه؟

eshpilen
سه شنبه 27 مهر 1389, 21:56 عصر
تازه اینا که گفتم فقط موارد درشت بود. جزییات بیشتری هم معمولا هست.
احتمالا بعضی از این موارد رو میشه کم و بیش برطرف کرد و بعضی رو نمیشه یا کامل نمیشه.
مثلا ما میتونیم طول کد امنیتی رو افزایش بدیم. اما واقعا چقدر و به چه بهایی از طرف کاربران؟
خوندن و تایپ یک کد امنیتی طولانی و مخدوش شده بنظر شما سخت نیست و باعث زیاد شدن اشتباهات کاربران نمیشه؟
تازه باید محاسبه کرد که واقعا چه طولی امنیت کافی داره! شاید طول مورد نیاز برای امنیت کافی، برای رضایت کاربران بیش از حد طولانی باشه. بخصوص که ما باید کدها رو مخدوش کنیم. حتما کدهای امنیتی سایتهای دیگر رو دیدید که خوندن بعضیاشون حتی اینقدر سخته که آدم خیلی وقتها اشتباه میکنه.

خلاصه این برنامه به صورتی که نوشته شده خودتون دیدید که چقدر ناشیانه و ضعیف هست.
اینکه گفتم کدش بو دار هست بخاطر همین مسائل.
پارامترهاش دقیق و کافی نیستن.
سوتی گنده هم که توش بود!
چیزهای مهم و مفیدی رو که میتونست و باید در این روش استفاده میکرد (اگر فرض کنیم حتما میخوایم از این روش استفاده کنیم و فایدهء قابل توجهی برامون داره) استفاده نکرده.
اگر پسورد محرمانه تعیین میکنیم طول این پسورد هم مهم هست. چون اگر طولش کم باشه مثل حکایت کرک شدن هش میشه! یعنی کرکر میاد و تمام ترکیبات پسوردهای مثلا 4 کاراکتری رو تست میکنه و هش رشته های دیکد شده با هرکدوم از این ترکیبات رو با هش کد امنیتی مقایسه میکنه. در اینصورت حتی اگر کد امنیتی شما 300 حرفی هم باشه، وقتی پسورد رمزنگاری شما 4 کاراکتر باشه، کرک کردنش هم به راحتی تست کردن تمام ترکیبات 4 کاراکتر میشه. اینکه میگم امنیت مسئلهء حساسی هست به خاطر اینهاست. کوچکترین ضعفی در الگوریتم یا پارامترهای یک بخش، میتونه تمام سیستم رو بر باد فنا بده!!
در این برنامه کرکر چون میتونه این کارها رو بصورت آفلاین و با یک سیستم قوی یا حتی کلاستر و بدون محدودیتهایی مثل تاخیر رفت و برگشت اطلاعات در شبکه و تاخیرها و مسدود شدن خودکار توسط سیستمهای امنیتی انجام بده، کارش خیلی خیلی راحتتر و شدنی تر از این هست که مثلا بخواد پسورد اکانت من رو در این فروم با روش Brute force کرک بکنه.
اینا همه مسائل ظریف امنیت هست. کرک آفلاین با آنلاین فرق داره. اینکه پارامترها چی باشن و سیستم بتونه کدوم محدودیت ها رو تحمیل بکنه مهم هست.
تنها مشکل دسترسی دیگران به محتویات سشن بود که اونم قابل حل هست و ضمنا هرچی باشه بازم سشن از این روش که هش رو بصورت مجانی به تمام کاربران کرهء زمین اهدا میکنه خیلی امن تر محسوب میشه!

funpatogh
چهارشنبه 28 مهر 1389, 00:57 صبح
بنده هم با نظر eshpilen (http://barnamenevis.org/forum/member.php?u=148005) موافقم
ممکنه ما یک برنامه که نوشتیم رو به 10 نفر فروخته باشیم و فقط یکی از این برنامه ها رو یک برنامه نویس ببینه تا بتونه 10 تا سایت رو هک کنه
این الگوریتم زمانی به درد میخورد که هیچ کس کدش رو نبینه

eshpilen
چهارشنبه 28 مهر 1389, 08:24 صبح
راستی همین الان یه فکری برای رفع مشکل وجود هش کد امنیتی در سورس صفحه بنظرم رسید.
خب ما چرا اصلا این هش رو هم بصورت رمز شده در صفحه نذاریم؟
فقط امکان Verify سمت کلاینت برای کد امنیتی رو از دست میدیم، اما این اهمیت چندانی نداره و سیستمهای دیگر هم این امکان رو ندارن.

eshpilen
چهارشنبه 28 مهر 1389, 08:36 صبح
این الگوریتم زمانی به درد میخورد که هیچ کس کدش رو نبینه
البته بنظر میرسه اگر یه پسورد محرمانه هم براش بذاریم تاحدی این مشکل حل میشه. چون هر سایتی یک پسورد محرمانهء متفاوت داره که کرکر نیاز داره بدونه تا بتونه کد امنیتی رو کرک کنه و این کار هم نیاز به دسترسی به نسخهء برنامهء همون سایت خاص داره. ضمنا میتونیم طوری طراحیش کنیم که اسکریپت مربوطه وقتی برای اولین بار روی سایتی اجرا میشه، خودش بصورت خودکار یک پسورد تصادفی تولید کنه و مثلا در فایلی ذخیره کنه (که بعدا در هر بار اجرا چک میکنه که این فایل وجود داره یا نه) که این پسورد برای رمزگذاری کد امنیتی اون سایت خاص استفاده خواهد شد (البته جلوگیری از دسترسی وب به این فایل فراموش نشه). به اینصورت تولید پسورد هم بصورت خودکار درمیاد و از گردن کاربر برداشته میشه که در غیراینصورت ممکنه فراموش بکنه یا پسورد ضعیفی بذاره.
بهرحال بنظر بنده این سیستم هنوز باید تحلیل بشه. دست آخر هم شاید برسیم به اینکه اینهمه پیچیدگی و ریسک برای چی و خب یک سر بریم از روش سشن استفاده کنیم. سشن رو هم میتونیم دیتابیسی کنیم تا امن بشه و برای کاربردهای دیگر هم مسلما مناسب تر میشه. کاربرد سشن که فقط در کد امنیتی نیست و یک جزء خیلی پرکاربرد در بیشتر برنامه هاست. آدم یه ایمیل رو هم در سشن ذخیره میکنه باید Privacy کاربران رو درنظر بگیره.

خلاصه امنیت و رمزنگاری پیچیده و ظریف هستن. مثل همین کد که دیدید از ابتداش تا حالا چقدر اشکال بزرگ و کوچک ازش در اومد که ممکنه کسی متوجه هم نشه و چقدر ایده مطرح شد که میتونن این روش رو خیلی بهتر بکنن. درواقع کد و روش مطرح شده کاملا ناقص و ضعیف بود، اما ظاهرا اشکالات و نقص های بزرگی رو میشه حل کرد و بر مبنای هستهء اولیه و روش کلی اون یک روش و الگوریتم خیلی بهتری رو ایجاد کرد.
میتونم بگم این برنامه برای منهم آموزنده بود و حالا چیزهای جدیدی مفیدی یاد گرفتم. خوبی بحث و تحلیل همینه. البته آدم باید اطلاعات پایهء لازم توی اون مبحث رو داشته باشه و تمام الگوریتم و جزییاتش رو دقیق و کامل بخونه و بفهمه.

Emir New
چهارشنبه 28 مهر 1389, 10:45 صبح
منظورتون از مانور چیه؟ منظورم این بود که تا چه حد میشه با سشن ها کار کرد ؟و....


البته بنظر میرسه اگر یه پسورد محرمانه هم براش بذاریم تاحدی این مشکل حل میشه.خوب اگه این مشکل که شما در اوردی این راه حلش باشه و با توجه به این که شما هنوز مورد دیگه از این کد ذکر نکردید باز هم میشه گفت که این کد هم می تونه کد خوبی برای تولید تصاویر امنیتی باشه ؟

eshpilen
پنج شنبه 29 مهر 1389, 08:35 صبح
منظورم این بود که تا چه حد میشه با سشن ها کار کرد ؟و....
سشن یک سیستم برای ذخیره سازی موقتی اطلاعات برای هر کاربر خاص هست. درحد تعریف و هدف خودش بنظرم انعطاف کافی داره. جایی که جواب نمیده باید خودمون یه سیستم دیگه طراحی و استفاده کنیم، نه اینکه بگیم حتما باید از سشن استفاده میشد و سشن مشکل داره.
البته مورد امنیت سشن بنظر من یک ضعف در طراحی PHP بوده، ولی قابل برطرف کردن هست.
همونطور که Register Globals هم یک اشتباه طراحی در PHP بود.

ما خودمون هم میتونستیم یک سیستم سشن پیاده سازی کنیم و کم و بیش اصول و کاربرد و ظرفیت و مزایا و معایبش شبیه سیستم سشن PHP میشد. ولی حالا که PHP خودش این کار رو کرده و بیشتر بخشهای کار رو خودش خودکار انجام میده و نیازی نیست ما یک سیستم نسبتا پیچیده و حجیم رو خودمون طراحی و پیاده سازی بکنیم، دیگه ضرورتی نداره.


خوب اگه این مشکل که شما در اوردی این راه حلش باشه و با توجه به این که شما هنوز مورد دیگه از این کد ذکر نکردید باز هم میشه گفت که این کد هم می تونه کد خوبی برای تولید تصاویر امنیتی باشه ؟اگر اون تغییراتی رو که لازمه توش انجام بدیم، فعلا همینطوری بدون تمرکز و بررسی عملی بیشتر ضعفی بنظرم نمیرسه که ازش بگیرم. ولی اگر بخوایم جدی بگیریم و عملا استفاده کنیم بازم باید بررسی بشه؛ حتی همین کد فعلی هم باز به حدی که لازمه مطالعه و تست و تحلیل نشده، ولی چون تا اینجا مشخص شد اشکالهای مهمی داره و نیاز هست تغییرات مهمی درش انجام بشه، دیگه ضرورت و توجیهی نداره بیش از این روی بررسیش به همین صورت وقت و انرژی صرف کنیم.

بنظر من در کل هم میبینم ضرورت خاصی نداره از یک روش ابتکاری که بهرصورت ممکنه جایی عیبی داشته باشه که از دست ما در رفته باشه استفاده کنیم. چون بهرحال ما با سشن کلی کار داریم، امنیت و Privacy خودمون و کاربران سایت هم اهمیت داره، بنابراین باید سشن رو امن کنیم (اگر نیست)، و وقتی این کار رو کردیم خب خیلی راحت هش کد امنیتی رو هم در سشن ذخیره میکنیم که از طرف دیگه باعث میشه الگوریتم ما هم ساده تر و کوتاهتر بشه.
بنابراین فکر نمیکنم دیگه نیازی باشه بریم مثلا نسخهء اصلاح شدهء این الگوریتم رو درست کنیم و تحلیل و تستش کنیم، چون توجیهی برای استفادهء عملی ازش وجود نداره. تنها مزیتی که داره اینه که به تنهایی اگر استفاده بشه نیازی به سشن نداره، اما واقعا این کاربرد خاص چقدر واقعی هست؟ فکر میکنم در تمام نصب های PHP، سیستم سشن وجود داره، از طرف دیگه کد امنیتی هم هرجا استفاده میشه حتما ما کار با سشن یا دیتابیس و اطلاعات دیگه هم داریم و خب پس چرا بخوایم داستان کد امنیتی یه چیزی جدای از این جریانات باشه؟

البته روش و الگوریتمش از نظر تحقیقی و آکادمیک جالب بود و نکات متنوع و تخصصی ای داره و میشه توش خلاقیت هایی داشت؛ اگر توجیهی برای مزیت عملیش پیدا کنیم بنظرم یه پروژهء جذاب کوچولو هست که شخصا بدم نمیاد روش کار کنم (از پروژه های کوچک ولی علمی و در عین حال درگیر با زمینه های متعدد متنوع و جالب خوشم - لذت بخش هستن و از نظر یادگیری پایه ای بازدهی بالایی دارن).