پاسخ به سوال «برای یادگیری حرفه ای امنیت باید چکار کنم از کجا شروع کنم منبع و سرفصل جامع میخوام!»

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

اول باید بگم که هرچیزی پیش نیازهایی داره. پیش نیاز یادگیری امنیت یا هک بصورت حرفه ای هم یکیش اینه که قبلش شما یک برنامه نویس قوی باشید. یعنی در پایه های برنامه نویسی تکمیل و قوی باشید. منظورم این نیست که مثلا برنامه های تجاری آنچنانی درست کرده باشید. منظور همون پایه های برنامه نویسیه در سطح گسترده و عمق زیاد. همون الگوریتم ها، ساختمان داده ها، آشنایی با پروتکل ها، استانداردها، سوکت، رگولار اکسپرشن، اطلاعات خوب در زمینهء دنیای نرم افزارهای آزاد/بازمتن، اینکه بدونید Escape کردن یعنی چی و چرا نیازه، از علت استفاده و ساختار داخلی انکدینگ ها سردربیاره (مثلا باید ساختار داخلی UTF-8 رو درک کرده باشه) … .
خیلی ها هستن سالها توسط خودشون و/یا دیگران در دستهء برنامه نویسان قرار میگیرن، ولی هنوز به رگولار اکسپرشن ها مسلط نیستن. خب این طرف در همون پایهء برنامه نویسی هم ضعیفه. هنوز به سطحی نرسیده که بخواد بره دنبال پله های بعدیش مثل امنیت در سطح حرفه ای.
آهان یه چیز دیگه هم بگم! برنامه نویسی و امنیت حرفه ای هردو نیازمند این هستن که شما در سیستم عامل هم دانش و مهارت کامل داشته باشید. باید ویندوز بلد باشی، DOS/شل/خط فرمان (همش کم و بیش به یک معنیه) بلد باشی، و همینطور در لینوکس. باید ساختار و استانداردهای سیستم عامل رو بدونی. باید بهش مسلط باشی.
راستی یادگیری اصول و الگوریتم ها/طرز استفاده رمزنگاری مدرن هم برای کامل بودن در امنیت کاملا لازمه. این خودش یه شاخهء تخصصی درست و حسابیه که مطالعه و تحقیق و یادگیری و احاطه در اون کار کمی نیست، چون گسترده و پیچیده است.

بعد یه چیزی بگم. آقا جان! زبان هم جزء این پیش نیازهاست. زبان در همون پلهء قبلی یعنی برنامه نویسی هم جزء پیش نیازه. اصلا دست به کامپیوتر که میزنی باید زبان انگلیسی بلد باشی. نترسید حالا، منظورم این نیست که بتونی مکالمه زبان انگلیسی بکنی یا کتاب رمان بخونی؛ باید بتونی متون فنی رشتهء خودت رو بخونی، روی دوتا دکمه یا لینک چیزی نوشته توی سایت ها و برنامه ها بتونی بخونی، پیامهای خطا رو بخونی، متن Help برنامه ها رو بخونی، ویکیپدیا رو بخونی. باید راحت و کامل بتونی بخونی و بفهمی. متن ادبی و عامیانه و نوشتن و مکالمه داستانش تاحد زیادی جداست. شما باید همون چیزهایی که توی رشتهء خودت لازمه رو بلد باشی.
بنده همون اول که کامپیوتر خریدم تا روشن کردم یخورده ور رفتم دیدم چقدر وسیعه و هیچی ازش نمیدونم، خاموشش کردم رفتم کتاب خریدم در کنارش هم همون لغت های انگلیسی از اول کار از منوی استارت ویندوز رو درآوردم معنی کردم توی یه دفتر نوشتم و حفظ کردم و هر چند روز یک بار دوره میکردم و از خودم تست میگرفتم (مجموعا چند دفتر پر از لغت ها و معانی اونا پر کردم). حداقل یک سال حداقل نصف کل وقت و انرژی خودم رو روی زبان صرف کردم و نهایتا معنی حداقل 3 هزار لغت رو حفظ کردم. این استارت سنگین اول بود، ولی بعدش هم این فرایند یادگیری زبان و حفظ کردن لغت و بعدها گسترش مطالعات و مهارت و توان آدم در گرامر و نوشتن هم ادامه پیدا میکنه. شما هم باید این کار رو بکنید اگر تاحالا نکردید. هرچیزی ترتیب و اصول و نیازی داره.

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

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

لیست حمله های متداول و مهم: در این تاپیک

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

*

شما می‌توانید از این دستورات HTML استفاده کنید: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>