PDA

View Full Version : حرفه ای: مشورت در ايمن كردن سايت



ArtMiz
سه شنبه 30 فروردین 1390, 16:55 عصر
درود
من بنا به درخواست يكي از آشنايان سايتي رو براشون طراحي كردم، ميخوام تم زمينه امنيتيش يه مقدار دقت كنم، بر خلاف كاراي قبليم، ممنون ميشم كمكم كنيد.
اينها كارايي هستن كه من كردم يا سوال دارم در موردشون.
اول اينكه آدرس URL رو rewrite كردم.
دوم ورودي هامو چك مي كنم.
سوم پيغام خطا نشون نميدم.
چهارم واسه پسورد MD5 ميكنم.

ولي نمي دونم Action فرم را بايد به صورت خاصي بدم، چون بعضي جاها ديدم انكد ميكنن آدرس رو.
Session هم نمي دونم چجوري بايد ايمن كرد، مثلا اسم يا محتويات بايد با چيزي تلفيق كنم يا انكد كنم يا اصلا هر چي.
واسه نگه دار رمز عبور براي دفعه هاي بعد از كوكي چه جوري استفاده كنم.

كاراي ديگه اي هم اگه ميكنن ممنون ميشم راهنماييم كنيد :لبخند:

binyaft
سه شنبه 30 فروردین 1390, 17:43 عصر
امنیت تنها این چیزا نیست ، همش هم به شما بستگی نداره!


هش کردن md5 الان دیگه به نظرم استفاده نکنی بهتر هست ، چند تا md5 و sha1 رو استفاده کن و یا خودت بشین یه تابع هش بنویس!

برای سشن ها هم که بهتره در دیتابیس ذخیره بشه ، که اگر اطلاعات مهمی درون اونها نیست که نباید باشه ، همون مسیر پیشفرض خوبه و نیار به رمزگذاری و.... نداره !


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


موفق باشی

eshpilen
سه شنبه 30 فروردین 1390, 18:38 عصر
درود
من بنا به درخواست يكي از آشنايان سايتي رو براشون طراحي كردم، ميخوام تم زمينه امنيتيش يه مقدار دقت كنم، بر خلاف كاراي قبليم، ممنون ميشم كمكم كنيد.
اينها كارايي هستن كه من كردم يا سوال دارم در موردشون.
اول اينكه آدرس URL رو rewrite كردم.
دوم ورودي هامو چك مي كنم.
سوم پيغام خطا نشون نميدم.
چهارم واسه پسورد MD5 ميكنم.

ولي نمي دونم Action فرم را بايد به صورت خاصي بدم، چون بعضي جاها ديدم انكد ميكنن آدرس رو.
Session هم نمي دونم چجوري بايد ايمن كرد، مثلا اسم يا محتويات بايد با چيزي تلفيق كنم يا انكد كنم يا اصلا هر چي.
واسه نگه دار رمز عبور براي دفعه هاي بعد از كوكي چه جوري استفاده كنم.

كاراي ديگه اي هم اگه ميكنن ممنون ميشم راهنماييم كنيد :لبخند:
چی بگم از کجاش بگم. اینقدر وسیع و ظریف هست این موضوع که اصلا نمیشه گفت.
شما اول باید به برنامه نویس قوی در زمینهء الگوریتم و مفاهیم پایه باشی بعد اینا رو کسی بهت یه اشاره بکنه اکثرا خودت میفهمی. ولی اگر پایه قوی نباشه معمولا چیزی نمیفهمه.
مثلا من بارها گفتم اصلا پسورد رو نیازی نیست در کوکی سمت کاربر ذخیره کنید. بجاش یک Login key بصورت یه رشتهء رندوم طولانی به ازای هر کاربر میسازید و در دیتابیس برای هر کاربر ذخیره میکنید. همین رشته هست که سمت کلاینت در کوکی ذخیره میشه. البته امنیت هش بخصوص که با Salt باشه هم بد نیست. ولی در سمت سرور حتما باید با Salt باشه که نتیجتا سمت کلاینت هم همون هش با Salt خواهد بود.
حالا اگر این حرفا رو فهمیدی یخورده حالیته :لبخند:
اینا کارایی هم که کردی درحد 20% حداقل چیزی هست که لازمه. تازه در یه پروژه ای که توش سخت نگیریم و شخصی باشه. حالا بعد راه میفتی انشاا...
تازه این چیزا رو که میگی به حرف راحته. باید دید چطوری پیاده کردی. آیا واقعا کامل و دقیق هست یا نه. پیاده سازی رو هرکس یجور انجام میده و نقص و ضعف زیاده. باید هرچیزی رو دقیقا بفهمی چرا نیاز هست و باید چطور پیاده سازی بشه.
مثلا الان برای چی URL رو rewrite كردی؟علت دقیقش چی هست؟ جلوی چه حملاتی رو میگیره و چطوری؟ میتونی براش مثال بزنی؟

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

eshpilen
سه شنبه 30 فروردین 1390, 18:39 عصر
هش کردن md5 الان دیگه به نظرم استفاده نکنی بهتر هست ، چند تا md5 و sha1 رو استفاده کن و یا خودت بشین یه تابع هش بنویس!

چطوری مثلا قربونت؟
یعنی میگی شما یه تابع مینویسی و از MD5 بهتر میشه؟
میشه یه مثال بزنی یا کلیت روشش رو بگی؟

ArtMiz
سه شنبه 30 فروردین 1390, 18:42 عصر
امنیت تنها این چیزا نیست ، همش هم به شما بستگی نداره!
ميشه بيشتر توضيح بديد، يه سري از كارايي كه بايد انجام بدم تا يه سايت تقريبا مطمئن داشته باشم چيه؟


هش کردن md5 الان دیگه به نظرم استفاده نکنی بهتر هست ، چند تا md5 و sha1 رو استفاده کن
متوجه نشدم!


برای نگه داری رمز عبور تو سیستم کاربر هم باید اونو بصورت هش در بیاری
ميشه بگين به چه صورتي؟

اينكه ميگم به چه صورتي منظورم اينه كه يه ليست از كارايي كه بايد انجام داد رو بهم معرفي كنيد، من دنباله كار رو مي گيرم. فقط مي خوام بدونم چه كارايي بايد انجام بدم. چون تو اين حيطه زياد آگاهي ندارم.
بازم ممنونم از وقتي كه ميذاريد.

از دوستان مطلبي در اين مورد دارن لطف كنن به من كمك كنن :D

i-php-i
سه شنبه 30 فروردین 1390, 18:50 عصر
امنیت تنها این چیزا نیست ، همش هم به شما بستگی نداره!


هش کردن md5 الان دیگه به نظرم استفاده نکنی بهتر هست ، چند تا md5 و sha1 رو استفاده کن و یا خودت بشین یه تابع هش بنویس!

برای سشن ها هم که بهتره در دیتابیس ذخیره بشه ، که اگر اطلاعات مهمی درون اونها نیست که نباید باشه ، همون مسیر پیشفرض خوبه و نیار به رمزگذاری و.... نداره !


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


موفق باشی

دوست عزیز یه مشکل با ذخیره کردن سسشن ها توی پایگاه داده دارم و توی این پست (http://barnamenevis.org/showthread.php?283316) مشکلم رو مطرح کردم.

می شه یه نگاهی به اون پست هم بندازید؟

ArtMiz
سه شنبه 30 فروردین 1390, 18:53 عصر
چی بگم از کجاش بگم. اینقدر وسیع و ظریف هست این موضوع که اصلا نمیشه گفت.
شما اول باید به برنامه نویس قوی در زمینهء الگوریتم و مفاهیم پایه باشی بعد اینا رو کسی بهت یه اشاره بکنه اکثرا خودت میفهمی. ولی اگر پایه قوی نباشه معمولا چیزی نمیفهمه.
مثلا من بارها گفتم اصلا پسورد رو نیازی نیست در کوکی سمت کاربر ذخیره کنید. بجاش یک Login key بصورت یه رشتهء رندوم طولانی به ازای هر کاربر میسازید و در دیتابیس برای هر کاربر ذخیره میکنید. همین رشته هست که سمت کلاینت در کوکی ذخیره میشه. البته امنیت هش بخصوص که با Salt باشه هم بد نیست. ولی در سمت سرور حتما باید با Salt باشه که نتیجتا سمت کلاینت هم همون هش با Salt خواهد بود.
حالا اگر این حرفا رو فهمیدی یخورده حالیته :لبخند:
اینا کارایی هم که کردی درحد 20% حداقل چیزی هست که لازمه. تازه در یه پروژه ای که توش سخت نگیریم و شخصی باشه. حالا بعد راه میفتی انشاا...
تازه این چیزا رو که میگی به حرف راحته. باید دید چطوری پیاده کردی. آیا واقعا کامل و دقیق هست یا نه. پیاده سازی رو هرکس یجور انجام میده و نقص و ضعف زیاده. باید هرچیزی رو دقیقا بفهمی چرا نیاز هست و باید چطور پیاده سازی بشه.
مثلا الان برای چی URL رو rewrite كردی؟علت دقیقش چی هست؟ جلوی چه حملاتی رو میگیره و چطوری؟ میتونی براش مثال بزنی؟

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

از اينا Salt تا حالا استفاده نكردم، ولي ميدونم يه چيزايي ازش. در مورد rewrite،‌خوب جيگر اگه مي دونستم اينا رو كه تاپيك نميذاشتم. شما هم اگه نمي خواي جواب نده، چرا حالا مي خواي درك برنامه نويسي منو زير سوال ببري؟! بازم ميگم اگه اطلاعاتي از اين موارد داشتم نمي اومدم سوال كنم كه!

eshpilen
سه شنبه 30 فروردین 1390, 19:31 عصر
از اينا Salt تا حالا استفاده نكردم، ولي ميدونم يه چيزايي ازش.چه چیزایی؟

در مورد rewrite،‌خوب جيگر اگه مي دونستم اينا رو كه تاپيك نميذاشتم.شما داری میگی من این کارا رو کردم. اما اگر واقعا مکانیزم و جزییاتش رو نمیدونی، پس نمیتونی بگی من این موارد رو پیاده سازی کردم. دقیقا مشکل همینجاست که خیلی افراد فکر میکنن فقط با استفاده از یه چیزی مشکل حل میشه. اما استفاده به تنهایی مثل انداختن تیری در تاریکی هست. مقولهء امنیت رو باید با تمام جزییات درک و با بینش کامل پیاده سازی کرد.


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


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

eshpilen
سه شنبه 30 فروردین 1390, 19:52 عصر
یه بار یکی در جواب انتقادهای بنده، اون ضرب المثل خوردن چوب از معلم رو آورد.
البته بنده خودم رو در این حدود نمیدونم و ادعایی ندارم. ولی اون فرد در اونجا از خودش شعور نشون داد چون بالاخره سواد من ازش بیشتر بود یا حداقل در اون مورد خاص احاطهء بیشتری داشتم.
واقعا اگر استاد هم استاد واقعی باشه باید چوبش رو هم تحمل کرد و مطمئنا فوایدش خیلی بیشتر از ناراحتیش خواهد بود.
هرچیزی بهایی داره. اینو یاد بگیریم.
انتظار نداشته باشیم کسی بهمون نگه بالای چشمت ابروست.
در آموزش و علم تعارف و رعایت به اون شکل خوشایند و انتظار تمام افراد نمیتونه وجود داشته باشه؛ وگرنه باید خیلی واقعیت ها رو نگیم و حرفها رو کش بدیم پشت پرده بگیم و مطمئن نباشیم طرف منظور رو گرفته یا نه، و یا اصلا بی خیال بشیم.
ولی من بعکس به هرچیزی گیر میدم و دوست دارم دیگران هم همین کار رو بکنن. چون تا برخورد و صراحت نباشه خیلی چیزها پنهان میمونن یا مورد ابهام و عدم اطمینان همیشگی خواهند بود.
من باید بدونم کجای کارم یا نه؟
برای این کار راهی جز صراحت و روبرو شدن و برخورد فکری با دیگران هست؟ این جنگ و خصومت شخصی نیست، بلکه مثل مبارزهء دو حریف در یک باشگاه ورزشی هست. این مبارزه برای قوی تر شدن و کشف نقاط ضعف خود لازم هست، گرچه دردناک باشه و شکست هم توش هست مسلما.

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

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

binyaft
سه شنبه 30 فروردین 1390, 20:58 عصر
چطوری مثلا قربونت؟
یعنی میگی شما یه تابع مینویسی و از MD5 بهتر میشه؟
میشه یه مثال بزنی یا کلیت روشش رو بگی؟
بنده گفتم این یه راه هست ، از بین اون همه راه و تابعی که هست!
کی گفته از md5 بهتر میشه!؟ از base64 هم شاید بهتر نشه ! اما حداقل کلیدش دست خودته و دیکشنری دیکد کردنش همه جا نیست!


متوجه نشدم!
یه سری سایتهایی هست الان که شما رشته md5 رو میدی بهش بعد اون عبارت اصلی رو برمیگردونه!
البته مکانیزم کاریشون مثل دیکشنری هست و همه هش های md5 رو نمیتونن دیکد کنن ، چون دیکد شده همه رو ندارن!
فکر کنم یکی از این سایتها 6 بیلیون md5 رو دیکد میکرد!


ميشه بگين به چه صورتي؟
شما باید رمز یا هر چیزی که میتونی بفهمی کسی که الان سایت رو بالا آورده فلان کاربر هست رو رمزگذاری کنی و بعد رو سیستم کاربر به صورت کوکی ست کنی ...

ArtMiz
سه شنبه 30 فروردین 1390, 20:59 عصر
بنده چون همیشه اصولی و قاطع بودم اینطور صریح هستم و خشک صحبت میکنم.
همين كافيه براي من، چون خودمم سعي ميكنم رك باشم، ولي من اينو به عنوان تمسخر تلقي كردم، اشتباه از من بود، معذرت خواهي مي كنم.

با همه ي اين تفاسير، ميشه به راهنمايي كني. بايد بدونم بين اين همه موضوع چيا رو بخونم تا بتونم بفهمم. اگه نمي خواستم باد بگيرم كه از دوستان درخواست نمي كردم كه كمكم كنن. يه راهنمايي در مورد موضوعات، اگه مرجع بدي كه خيلي بيشتر ممنون ميشم.

اينكه ميگم يه جورايي ايمن باشه واسه اينه كه من تا حالا كارايي كه انجام دادم محض كار كردنش بود، نحوه ي پياده سازيش براشون اهميت نداشت، ولي الان نياز دارم واسه پيشرفت مدل نوشتن خيلي چيزا رو ياد بگيرم، اين امنيت هم يكي از اوناست.

ميشه راهنمايم كنيد به جاي گفتن اينكه بايد برم چيزايي رو بخونم، بگيد چيا رو، خودم ميرم دنبالش. الان هم حداقل ها رو لازم دارم تا اين كاري كه واسه رودربايستي انجام ميدم رو بد تحويل ندم، چون خودم خيلي ناراحتم از اين موضوع.

بازم ممنونم

eshpilen
سه شنبه 30 فروردین 1390, 22:22 عصر
کلا در زمینهء نرم افزار و رایانه بصورت حرفه ای منبع فارسی بقدر کافی جامع و دقیق و صحیحی وجود نداره بنظر بنده. و این دلایل واضح متعددی داره که احتمالا هیچوقت هم این وضعیت تغییری نکنه.
انگلیسی، انگلیسی و انگلیسی فقط!
بطور مثال این یک منبع هست که بنظرم بقدر کافی جامع باشه: https://www.owasp.org/index.php/Attacks
البته بغیر از بخش Attacks بخشهای Controls (https://www.owasp.org/index.php/Category:Control) و Vulnerabilities (https://www.owasp.org/index.php/Category:Vulnerability) رو هم بعنوان حداقل مطالعه کنید.
این منبع حداقل برای من و شما کفایت میکنه. البته این سرنخ ها رو با خوندن مطالب متفرقه و منابع دیگر هم ادامه بدید. مثلا مقاله های ویکیپدیا رو هم بخونید.
این منبع رو تازگی دوست دیگری در همین فروم معرفی کردن.

بنده هم سعی کردم در تاپیک انواع حمله های نفوذ و سوءاستفاده از صفحات وب (http://barnamenevis.org/showthread.php?281805-%D8%A7%D9%86%D9%88%D8%A7%D8%B9-%D8%AD%D9%85%D9%84%D9%87-%D9%87%D8%A7%DB%8C-%D9%86%D9%81%D9%88%D8%B0-%D9%88-%D8%B3%D9%88%D8%A1%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D 8%AF%D9%87-%D8%A7%D8%B2-%D8%B5%D9%81%D8%AD%D8%A7%D8%AA-%D9%88%D8%A8) در پست اول موارد مهمتر و متداول تر رو لیست کنم که میتونید اول اونا رو بخونید. البته بنده ادعا ندارم لیستم لزوما بی نقص هست و موارد صحیحی رو انتخاب کردم. هیچوقت نمیشه مطمئن بود. اما بهتره بهرحال اولویت بندی داشته باشید و ببینید کدوم موارد در برنامه های بیشتری و در پروژه های جاری شما وارد هستن.
البته بنده از یکی از دوستان وارد هم بارها کمک گرفتم. ولی فکر نمیکنم معرفی کردن ایشون ایدهء خوبی باشه چون ممکنه از دستم ناراحت بشه و همه بریزن سرش. بالاخره خودتون که فعال باشید و کمی سواد کسب کنید احتمالا چنین فردی رو شناسایی میکنید که کمکتون کنه. ولی حتی از چنین افرادی همینطور کورکورانه هرچیزی رو بدون این درک بکنید و بینش بدست بیارید تموم شده تلقی نکنید. چون احتمال اشتباه یا نقص و فراموشی رو هرکسی داره، و ضمنا اگر خوب درک نکنید نمیتونید در تمام موارد هم درست تشخیص بدید و پیاده سازی کنید. بهرحال شما خودتون میتونید منابع رو مطالعه کنید و بعد مشکلی در ارتباط با درک اونا داشتید اینور و اونور سوال کنید. به یک فروم هم محدود نشید. بنده مطالب و سوالاتم رو همزمان در چند فروم مطرح میکنم و این روش در عمل خیلی موثر بوده و ثابت شده که یک فروم به تنهایی کافی نیست (البته اگر این فیلترینگ بذاره فرومهای کافی داشته باشیم!!).

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

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


++بدونم بين اين همه موضوع چيا رو بخونم تا بتونم بفهمم.خب برنامه نویسی همینه دیگه. در نهایت باید تقریبا همه رو خوند و فهمید.
ولی میشه اولویت بندی کرد؛ و ضمنا اغلب با توجه به نوع پروژهء شما موارد قطعی و احتمالی موجود در اون پروژه رو کم و بیش شناسایی کرد.

eshpilen
سه شنبه 30 فروردین 1390, 22:33 عصر
بنده گفتم این یه راه هست ، از بین اون همه راه و تابعی که هست!
کی گفته از md5 بهتر میشه!؟ از base64 هم شاید بهتر نشه ! اما حداقل کلیدش دست خودته و دیکشنری دیکد کردنش همه جا نیست!
خب بستگی داره کاربرد چی باشه.
مثلا یه جایی هست که فقط یکسری رشتهء رندوم طولانی رو هش میکنیم، به هیچ وجه قابل کرک نیستن.
چون حمله های دیکشنری با عبارات کوتاه و/یا شناخته شده سروکار دارن.
ضمنا تابع هش بغیر از md5 زیاد هست و در PHP در دسترس هستن بنظرم. امنیتشون خیلی بالاست.
از طرف دیگه وقتی از Salt مناسب استفاده کنید ببینید کی مردشه کرکشون کنه!


یه سری سایتهایی هست الان که شما رشته md5 رو میدی بهش بعد اون عبارت اصلی رو برمیگردونه!
البته مکانیزم کاریشون مثل دیکشنری هست و همه هش های md5 رو نمیتونن دیکد کنن ، چون دیکد شده همه رو ندارن!
فکر کنم یکی از این سایتها 6 بیلیون md5 رو دیکد میکرد!
بله دیدم. و چند مورد رو تست کردم.
یه رشتهء کاملا رندوم رو نمیتونن کرک کنن. حتی اگر زیاد طولانی هم نباشه.
Salt خوب هم که عملا کار رو غیرممکن میکنه.


شما باید رمز یا هر چیزی که میتونی بفهمی کسی که الان سایت رو بالا آورده فلان کاربر هست رو رمزگذاری کنی و بعد رو سیستم کاربر به صورت کوکی ست کنی ... انگوشت میزنیم!
میشه بیشتر توضیح بدی؟

eshpilen
سه شنبه 30 فروردین 1390, 23:49 عصر
البته کلا حملهء دیکشنری بستگی به الگوریتم هش نداره و تمام هش ها دربرابرش ضعیف هستن. این بخاطر ضعف الگوریتم هش نیست، بلکه بخاطر ورودیهای کوتاه و قابل حدس و کلمات متداول هست. اما این مشکل در تقریبا تمام موارد با استفاده از یک Salt مناسب حل میشه.
بجای اینکه الگوریتم هش خودتون رو بنویسید از هش تولید شده با Salt استفاده کنید. اینطوری اصولی تر و امن تره.

ArtMiz
چهارشنبه 31 فروردین 1390, 00:25 صبح
ممنونم، فعلا برم اينا رو بخونم و روش كار كنم...

eshpilen
چهارشنبه 31 فروردین 1390, 11:08 صبح
البته اینم یه راهکار هست: http://forum.iranphp.org/Thread-%D8%A7%D9%85%D9%86%E2%80%8C%D8%AA%D8%B1-%DA%A9%D8%B1%D8%AF%D9%86-%D8%A8%D8%A7-PHPIDS
اگر وقت نداری و عجله داری پروژت رو امن کنی بنظرم راهی سریعتر و امن تر از این نیست.

رضا قربانی
چهارشنبه 31 فروردین 1390, 16:30 عصر
مثلا الان برای چی URL رو rewrite كردی؟علت دقیقش چی هست؟ جلوی چه حملاتی رو میگیره و چطوری؟ میتونی براش مثال بزنی؟

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

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






یک سری نرم افزار هایی هستن که تابع های رمز گذاری که در بالا مطرح کردید کد بندی و دیکد می کنن و کار کردن هم باهاشون خیلی راحته :

Base64EncoderDecoder_v10
=========
MD5Encrypter
===========
MD4-Pwd

eshpilen
چهارشنبه 31 فروردین 1390, 19:15 عصر
یک سری نرم افزار هایی هستن که تابع های رمز گذاری که در بالا مطرح کردید کد بندی و دیکد می کنن و کار کردن هم باهاشون خیلی راحته :

Base64EncoderDecoder_v10
=========
MD5Encrypter
===========
MD4-Pwd
Base64 که اصلا الگوریتم رمزنگاری نیست.
بعد این MD5Encrypter چیکارا میکنه دقیقا؟
MD4 هم که مال عهد بوقه و مدتهاست دیگه استفاده نمیشه.

eshpilen
چهارشنبه 31 فروردین 1390, 22:40 عصر
همون که اطلاعات صفحه موجود رو در اختیاز هکر نمی ذاره خودش کلی هست
بنظر من کلی نیست. کمه.
تازه به شرطی که واقعا درست و دقیق و کامل پیاده سازی بشه.
و آیا این روش جلوی XSS رو میگیره؟
آیا جلوی CSRF رو میگیره؟
آیا جلوی SQL Injection رو میگیره؟
...

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

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

رضا قربانی
پنج شنبه 01 اردیبهشت 1390, 10:31 صبح
بعد این MD5Encrypter چیکارا میکنه دقیقا؟

این کار رو انجام می ده که واستون آپلود کردم
http://up.iranblog.com/images/nz2jo50gyb4plfzwcco.swf
و این نرم افزارش رو که خودم ازش استفاده می کنم هم واستون آپلود کردم

http://up.iranblog.com/images/r9pl1av90m2s97grbwf.zip

eshpilen
پنج شنبه 01 اردیبهشت 1390, 12:09 عصر
این کار رو انجام می ده که واستون آپلود کردم
http://up.iranblog.com/images/nz2jo50gyb4plfzwcco.swf
و این نرم افزارش رو که خودم ازش استفاده می کنم هم واستون آپلود کردم

http://up.iranblog.com/images/r9pl1av90m2s97grbwf.zip

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

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

eshpilen
پنج شنبه 01 اردیبهشت 1390, 12:13 عصر
و این نرم افزارش رو که خودم ازش استفاده می کنم هم واستون آپلود کردم

http://up.iranblog.com/images/r9pl1av90m2s97grbwf.zip
شرمنده همون فلش هم که اجرا کردم ریسک امنیتی بود.
دیگه انتظار نداشته باش فایل exe شما رو اجرا کنم.
حالا چیکار میکنه مگه؟ مگه هش MD5 تولید نمیکنه؟

UnnamE
پنج شنبه 01 اردیبهشت 1390, 12:15 عصر
md5 رو كه آنلاين هم ميشه Encode/Decode كرد، ديگه اين برنامه واسه چي بود؟
با خط فرمان خود php هم ميشه :D

eshpilen
پنج شنبه 01 اردیبهشت 1390, 12:36 عصر
md5 رو كه آنلاين هم ميشه Encode/Decode كرد، ديگه اين برنامه واسه چي بود؟
با خط فرمان خود php هم ميشه :D
آره مشکوک میزنه :لبخند:
چرا آدرس سایت اصلیش رو نداد؟ برنامش اصلا آیکون هم نداشت انگار.

این سایتهایی هم که هش ها رو دیکد میکنن، اگر شما هش رو با استفاده از Salt درست و حسابی تولید کرده باشید نمیتونن دیکد کنن. به Salt هم که حضراتی دسترسی ندارن مگر حضرات ادمین سرور یا نفوذگرهای موفق، بدون دونستن Salt دیکد کردن غیرممکنه، و حتی با دونستن Salt هم در خیلی موارد غیرممکنه. اما بهرحال دونستن Salt میتونه در بعضی چیزها کمک هایی بکنه (بخصوص اگر پسورد خیلی ضعیف باشه یا قابل حدس باشه). بهرحال اگر ادمین باشه که طبیعتا دسترسی داره به تمام سیستم و بنابراین راهکار قاطع و کلی ای وجود نداره که جلوی نفوذش به سیستم گرفته بشه. ادمین سرور میتونه اطلاعات Request ها رو حتی قبل از اینکه به برنامهء شما برسن و توسط برنامهء شما پردازش بشن دریافت کنه و پسوردهای ارسالی رو از توش دربیاره. همه چیز زیر دستشه. برنامه هم که مسلما برای هرکاری پیدا میشه. بنابراین اصلا نیاز چندانی نیست به خودش زحمت بده و سورس شما رو بخونه و الگوریتم و Server secret شما رو دربیاره.
کلیتش همون MD5 با Salt اگر درست پیاده و استفاده بشه بقدر کافی امن هست. نهایتش میتونید برای یخورده امنیت بیشتر یه رشتهء متفاوت برای هر نسخهء نرم افزار رو هم در این فرایند وارد کنید. اینکه بیاید یه الگوریتم از خودتون درست کنید هیچ فرقی نمیکنه جز اینکه امنیتی رو که MD5 به مجموعه اضافه میکرد ازش گرفتید و کارتون ضعیف تر از MD5 + Salt + Server secret میشه.
البته بطور کلی بهتره از الگوریتم هش دیگری بغیر از MD5 استفاده کنید چون MD5 ضعف امنیتی داره و شکسته شده بحساب میاد (اما هنوزم برای این کاربردها بقدر کافی امن هست - ولی باید اینم درنظر گرفت که ممکنه در آیندهء نزدیک بیشتر سوراخ بشه!!). بجاش از الگوریتم های بسیار امن تری که فکر میکنم در PHP الان دیگه براحتی در دسترس هستن استفاده کنید.

UnnamE
پنج شنبه 01 اردیبهشت 1390, 12:43 عصر
آره Salt ديگه باس كار كنن
ُمثلا

hashtype$salt$hash
كه در عمل ميشه

sha1$a1976$a36cc8cbf81742a8fb52e221aaeab48ed7f58ab 4

خود Vb هم اينجور ميماله
ژ
md5(md5($plaintext_password) . $salt);

البته اگه بخوايم وسواس شيم به افرادي كه به سرور دسترسي داشته باشيم، در آخر باس سرور رو بزاريم تو خونمون و بصورت شيفتي همراه با اعضاي خوانواده شبكه رو sniff كنيم، كه يه وقت گربه شاخش نزنه =))

رضا قربانی
پنج شنبه 01 اردیبهشت 1390, 13:00 عصر
حالا چیکار میکنه مگه؟ مگه هش MD5 تولید نمیکنه؟توی آموزش فلش هم در آخر ، این برنامه رو باز می کنه و کدش رو می نویسه و هش شده رو تحویل می گیره


خب قربونت این چه ربطی به خود MD5 داشت؟همه مثل شما حرفه ای نیستن

من این رو گذاشتم برای کسایی که هنوز نمی دونن جریان چیه ، بهشون کمک می کنه



چرا آدرس سایت اصلیش رو نداد؟ برنامش اصلا آیکون هم نداشت انگار.داداش به جون من هیچی نیست - توی سیستمم داشتم ، واستون آپلود کردم تا شما و بقیه بچه ها استفاده کنن، همین
چرا گردن میافتید:بامزه::لبخند: