آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
مشکل عدم دسترسی خریداران پیشین به برخی آموزش ها برطرف شد
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

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

میثاق  5 سال پیش  5 سال پیش
+2 0

سلام

یه فرم ورکی استاد شروع کرده و ماهم فعالتمون داخل اون شروع کردیم اما واقعا مدتی این سوال ذهنم مشغول کرده 

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

یا اصلا باید چطوری دنبالش بگردم 

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

 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
ashiyanehamid  5 سال پیش
+6 0

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

Acunetix Web Vulnerability Scanner

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

تقریبا میشه گفت 70 درصد از باگ‌های سایتا نشأت گرفته از باگ sql injection هست که خطرناک هم هست.بطور عادی شما باید کاربر رو همیشه یه هکر موذی فرض کنید. البته با احترام به کاربرای عزیز دیگه(استاد این مورد باگ ها رو بررسی کردن تو فیلم ها و راه جلوگیریشونو گفتن که البته به نظر بنده در زمینه باگ sqlinjection میتونین خیلی بیشتر تحقیق کنید، ورودی‌های کاربرو با یه متد دستی فیلتر کنین که البته این فیلتر کردن باید بسیار با دقت و وسواس پیاده بشه). ولی خب دو تا راه خیلی آسون برای جلوگیریش در درجه اول چک کردن مقادیر وارد شده از طرف کاربر هست چه مقادیری که get میشن و چه مقادیری که post میشن تو فرم‌ها. چون افزونه‌های زیادی هستند که امکان دستکاری در مقادیر post شده رو به کاربر میدن اگرچه این نحوه ارسال به ظاهر امنیت بالاتری نسبت به get داره ولی برا یه هکر تقریبا هیچ تفاوتی نداره و هر دو روش قابل مشاهده و دستکاری هست. در درجه بعدی بنظرم هش کردن پسوردها با الگوریتم های مختلف بهترین راه برای جلوگیری از هک شدن توسط این باگ هست. من خودم در اون مدتی که بر روی این باگ کار میکردم به دستابیس سایت‌های بسیاری نفوذ کردم ولی بخاطر هش بودن پسوردها، عملا نمیتونستم کاری بکنم. یعنی یه نسخه کامل از دیتابیس سایت رو داشتم درحالی که کلیه پسوردهاش هش شده بود. البته ناگفته نمونه که بعضی سایت ها عملیات decrypt پسوردهای md5 رو انجام میدن مثل:
http://md5decrypt.net/en/
که به راحتی پسوردهای md5 رو decrypt میکرد. که برای جلوگیری شما با یه الگوریتم دلخواه و به کمک salt ها ، میتونین عملیات encrypt رو به روش منحصربفرد خودتون انجام بدین و decrypt کردن رو تقریبا برای هکرا غیرممکن کنید. دقت کنید که گفتم تقریبا...

یعنی شما فرض کنید نام کاربری رو هکر اگر داشته باشه، ولی یه پسورد هش شده داشته باشه میخواد چیکار کنه؟ هیچ کاری...

در مرحله دیگه‌ای از هک، هکرا میان و عملیات دامپ کردن کاربرانتون رو انجام میدن. در خیلی از سایت ها یه صفحه ی اعضا پیدا میشه مثلا در همین سایت آنکوایکس:
https://answers.uncox.com/android/users
در قسمت اعضای سایت، شما به نام کاربری تمامی اعضا دسترسی دارین. هکر میاد و با یه نرم افزار به راحتی نام کاربری تمامی کاربرای سایتتون رو پیدا میکنه. حالا به کمک یه نرم افزار دیگه میاد و این لیست کاربرا رو میده به یه نرم افزار و یه لیست از پسوردهای محتمل رو میده به نرم افزار و اون نرم افزار میاد و تک تک اون پسوردا رو تست میکنه(به این لیست‌ها پسوردلیست میگن که انواع متفاوتی داره که ساده‌ترینش شامل پسوردهای عمومی مانند 123، 123456789، abc، qwerty و ... هستند). مثلا فرض کنیم یه کاربری دارین به اسم ali با پسورد 123456789. حالا هکر میاد و به نرم افزار چندین پسورد رو میده تا اون بیاد هی تست کنه کدومش اوکی میشه:
ali---123
ali---12345
ali---123456789
که هر کدومش درست باشه اون رو ذخیره میکنه. پس به این عملیات که کرک کردن پسورد کاربرا میگن، راحت میشه تو هر سایتی، پسورد تعدادی از کاربرا رو کرک کرد. در نتیجه نیاز به نیست حتما سایتتون باگ خاصی داشته باشه(حتی به شخصیه دیدم مثلا یه برنامه نویس عزیز اسمش hamidphp هست و طبیعتا در زمینه برنامه نویسی کار میکنه، پس تو سایتای دیگه برنامه نویسی هم عضوه به احتمال زیاد و باز با همین نام hamidphp. پس کافیه هکر نام کاربری ایشون رو از یه سایتی پیدا کنه. مثل سایت barnamenavis در نتیجه چون این آقای hamidphp یه برنامه نویس هست پس ممکنه در خیلی از سایتای برنامه نویسی عضو باشه و پسوردشم احتما 80 درصد به بالا تکراری باشه تو همه سایتا. حالا کافیه فقط رو یه سایتِ دیگه، پسورد این کاربر عزیز کرک بشه. هکر میاد و تو چندتا سایت دیگه در زمینه برنامه نویسی هم این نام کاربری رو به همراه پسوردش تست میکنه میبینه بعععله، سنگ مفت گنجشک مفت. یه جورایی میشه مهندسی اجتماعی)
خب چیکا کنیم؟! میتونین از کپچا استفاده کنین(که اون نرم افزاری که هکر استفاده میکنه تا با اون نام کاربری و پسورد صفحه‌ی login مارو مورد هجوم قرار میده، یعنی در صفحه login نام کاربری رو با پسوردهای زیادی توسط همون نرم افزارش تست میکنه)، نتونه کپچا رو حدس بزنه. چون نرم افزاره و زیاد نمیتونه تشخیص بده.که البته کپچا هم توسط نرم افزارهای خاصی قابل دور زدن هست. به راحتی... اما از کپچاهای گوگل استفاده کنین که حدس زدن تصاویر هست، اون سخت ترین کپچا برای هکراس که فک کنم به زحمتش نمی ارزه سایتتون رو کرک کنن :) چون اون نرم افزاری که نام کاربری ها و پسوردها رو بهش میدن، نمیتونه این کپچا رو بخونه و حدس بزنه. کپچاهای ساده رو آره، ولی سختاش رو نه. محدودیت زمانی بزارین که در هر 30 دقیقه فقط 5 بار مثلا کاربر بتونه login کنه که البته اینا هم قابل دور زدن هست تا حدودی. ولی خب هر چی شما بیشتر امنیت رو رعایت کنین، دست بیشتری از هکرا رو میبندین و از حمله به سایتتون منصرف میشن. یه راه کمکی برای این جور از مواقع(یعنی این که یه هکر بیاد و به اکانت کاربرای سایتتون دسترسی بگیره و از امکانات پروفایل اونا استفاده کنه) اینه که در هنگام ثبت نام از کاربرای عزیزتون بخواید پسوردهای پیچیده تری انتخاب کنن. البته دقت کنین این نوع از حمله سایتتون رو از کار نمی اندازه و مثلا یه روز صبح از خواب پانمیشین ببینین صفحه اول سایتتون deface شده. ولی خب خطرای خودشو داره. البته اگه پسورد کاربری در سایت دیگری کرک بشه و در سایت شما استفاده بشه دیگه نمیشه کاریش کرد. به کاربر در حین ثبت نام میتونید بگید پسورد تکراری استفاده نکنن در صورت امکان. والا در این مورد نمیشه کاریش کرد. چون اینجاش دست کاربرایی هست که ثبت نام میکنن. من خودم به شخصه یه فایل متنی دارم که پسوردام رو توش میزارم و خیلی هم پسوردای عجق وجقی دارم. به شمام توصیه میکنم.

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

باگ xss و sql injection برای جلوگیریشون فقط و فقط یک خط کد نیاز هست. باور کنید. به همین راحتی. یعنی این 2 تا باگ رو رفع کنید، قول میدم 80 درصد امن هستین. البته به لحاظ کدنویسی خودتون. در مورد هک شدن سرور و ... دیگه اون دست شما نیست. یه مثال میزنم. وقتی مثلا هکر میاد و سایت شما رو تست میکنه و میبینه سایت شما باگی نداره، میگه خب. اگه سایتت باگ نداره، میرم و یه سایت دیگه که روی سرور این سایت هست رو هک میکنم، بعد از طریق اون، سرور رو هک میکنم و در نهایت سایت شما. مثلا برید به آدرس زیر:

https://www.yougetsignal.com/tools/web-sites-on-web-server/

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

فقط همون طور که گفتم از نرم افزار

Acunetix Web Vulnerability Scanner

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

برای جلوگیری از این باگا، توی پنل مدیریت سایتتون در موقع آپلود کردن فایلا و تصاویر و ... توسط مدیر هر مجوزی ندین برای آپلود. فقط آپلود تصاویر رو بهش بدین با پسوندای خاص و حجم محدود. البته روش‌های زیادی هست که باید خودتون تست کنید و یادبگیرید و تجربی هست اینا. و این که نام فایل آپلودی رو عوض کنین به یه اسم رندم که مثلا هکر نیاد شل رو با نام c99.jpg.php آپلود کنه و بعد با همین نام اونو فراخوانی کنه. اسمشو به یه عبارت رندوم و متغیر شبیه هش ها، تغییر بدین و بعد پسوندش رو هم خودتون بزارید. مثلا اگه هکر اومده و فایل c99.jpg.php رو آپلود کرده، شما بیاین نامشو عوض کنید به aferf43tgwrsfvt.jpg. برای امنیت آپلودرها کار زیاد میشه کرد که اینجا نمیگنجه بگم. خودتون برید دنبالش.

روش بسیار بسیار خوب دیگه، استفاده از فایل‌های htaccess هست. این فایل‌ها کاربرد زیادی دارن من فقط یه نمونشو خدمتتون عرض کنم. فرض کنید با تمام کارهای امنیتی که انجام دادین، هکر اومد و پسورد کاربر ادمین رو پیدا کرد و باز با هر زحمتی اومد و شل رو آپلود کرد. و باز به هر زحمتی شل آپلود شده رو پیدا کرد(وقت کنید هی دارم میگم زحمت، زحمت، زحمت. کار هکر خیلی سخت تر از شماس. اون داره با چشمای بسته کار میکنه. ولی شما چشاتون بازه رو کدا. پس خوب کد بزنین) حالا اگه بخواد اجراش کنه چی؟ مثلا رفته تو قسمت محصولات و یه محصول اضافه کرده و بجای عکس، شل رو آپلود کرده. میره و بقیه محصولاتو نیگا میکنه ببینه تصاویر از چه آدرسی لود میشن. مثلا
www.site.com/images/
حالا هکر میره و شل رو اینجوری اجرا میکنه:
www.site.com/images/c99.php
اما به راحتی، شما دورن دایرکتوی images کافیه یه فایل htaccess قرار بدین و یه کدی داخلش بزارین(کد نویسیش تو نت هست سرچ کنید) و بگین در این دایرکتوری هیچ فایل php اجازه اجرا نداره و فقط فایل های ماهیت تصویری دارن و فرمت های مجاز قابل اجرا مثلا png و jpg هستند و تمام. پسر تیر هکر به سنگ میخوره. این یه نمونه از کاربرد های فایل های htaccess هست.

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

+1 0
ممنونم از زحمتی که کشیدی (5 سال پیش)
0 0
عالی بود واقعا .ممنونم (5 سال پیش)
پاسخ به سوال 
arashcode  5 سال پیش
+2 0

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

0 0
بجز خود وردپرس همه ۱۰ یا ۲۰ تا پلاگین نصب میکنن که ضعف های امنیتی بیشتری ممکنه داشته باشن و یه سری ها هم اپن سورس نیستن. (5 سال پیش)
0 0
این که هکر ندونه ما چجوری کد زدیم اونقدرها مهم نیست.اما این که ما دانش و تسلط بهتری نسبت به کدمون داشته باشیم خیلی مهم. چون منبع هر مشکلی رو سریع تر میتونیم پیدا و حل کنیم. ی سری اصول هست اگه رعایت نکنی یعنی راه نفوذ باز گذاشتی و اکثر هکرها با ابزارهای مختلف دنبال این ها میگردن. خوبی متن باز بودن این که این حفره های امنیتی زودتر پیدا میشن و بالطبع زودتر میتونی رفعشون کنی. (5 سال پیش)
+1 0
اتفاقا این هم مهمه که هکر روال ها رو ندونه چرا اینو میگم فرض کنید شما کد یه سایت پیش روتون هست وقتی بررسی می کنید می بینید برنامه نویس مثلا فلان باگ رو پچ کرده پس روش وقت نمیزارید اما اگر اینو ندونید ممکنه روزها روش وقت بزارید و تست کنید و خب هر چه قدر این زمان ها بالاتر بره احتمال اینکه فرد خسته بشه بیشتر میشه داخل شدن به ساختمانی که نقشش رو دارید خیلی راحتر از اون ساختمانی هست که نمی دونید داخلش ساختار چطوریه (5 سال پیش)
0 0
تمام نظرات دوستان محترمه اما صحبت من اینه خب اوکی ما تا اینجا اومدیم کد هامونم قوی من خودم به شخصه اصلا از کدهای اماده یا Cms یا غیره خوشم نیومده و دنبالش نرفتم ولی میگم بیایم دیدمون عوض کنید الان با کمک استاد فرمورک نصبتا خوبی داریم بیایین کمک کنیم تا عالی بشه تو هر زمینه (5 سال پیش)
0 0
اصلا نمیگم بگید چه کدی زدین چون خودم تو نشون دادن کدهام حساسم میگم بیاییم باهم مطالبی که ممکن به بهتر شد و رفع باگ هایی که احتمال داره وجود داشته باشه و ازش بی اطلاع باشیم واسه خودمون به اشتراک بزاریم (5 سال پیش)
0 0
من خودم میگم تو کد نویسی مسلما به گرد استاد هم نمیرسم فرم ورکی که الان uncox داره خیلی محکم تر از چیزی که من نوشتم و منم هنوز کد نویس نشدم که بدونم کدهام باگ هایی داره یا نه پس اگه یه همت کوچیک بشه شاید روزی رسید که فرم ورکی که استاد شروع ش کرده یه روزی بشه یکی از همین CMSها (5 سال پیش)
0 0
بازم میگم کد نیازی نیست بزارید فقط توی این تاپیک بگید فلان مطلب وجود داره که بزاریم بهتره بعد هرکسی از دید خودش کد بزنه مجموع تمام کد هایی که زدیم یه روز ازش یه چیز خوب دربیاد (5 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .