
آموزش محافظت و امنیت در اپلیکیشن های ASP.NET Core
آموزش محافظت و امنیت در اپلیکیشن های ASP.NET Core یکی دیگر از آموزش های گروه آموزشی پرووید می باشد که در این قسمت آن را به شما معرفی می کنیم. این بسته آموزشی نیز یکی از دوره های آموزشی دیگر که در حوزه ی فارسی سازی آموزش های انگلیسی تنظیم شده است می باشد. عنوان این بسته آموزشی استفاده کردن از ابزار های تجزیه و تحلیل امنیتی برای محافظت از اپلیکشن های ASP.NET و ASP.NET Core است که با نام اصلی Using Security Analysis Tools to Protect ASP.NET and ASP.NET Core Applications از شرکت Pluralsight منتشر شده است.
مفهوم کلیدی در امنیت دات نت، امنیتِ مبتنی برrole را برای کمک به حل و فصل کردن نگرانیهای امنیتی در مورد کد ارائه میکند، که component ها را قادر میسازد تعیین کنند که کاربران مجاز به انجام چه کاری هستند. امنیت و Type safety کد های type safety فقط به مکان هایی از حافظه، که مجاز به دسترسی هستند، دسترسی دارند. برای مثال، کد type-safe نمیتواند مقادیر را از فیلدهای خصوصی آبجکت های دیگر بخواند و به Type ها از طریق از پیش تعریف شده دسترسی پیدا می کنند. اگرچه تأیید Type-safe برای اجرای managed code اجباری نیست، اما نقش مهمی در جداسازی و مونتاژ و اجرای امنیت دارد. وقتی کد Type-safe است language runtime میتواند assembly ها را کاملاً از یکدیگر جدا کند. این جداسازی کمک می کند تا اطمینان حاصل شود که assembly ها نمی توانند بر یکدیگر تأثیر منفی بگذارند و قابلیت اطمینان برنامه را افزایش می دهد. کامپوننت های Type-safe می توانند با خیال راحت در یک فرآیند اجرا شوند و در سطوح مختلف مورد اعتماد باشند. وقتی که کد Type-safe نیست، عوارض جانبی ناخواسته ممکن است رخ دهد. به عنوان مثال، runtime نمی تواند مانع از فراخوانی managed code در native code (managed نشده) شود. زمانی که کد از Type-safe باشد، مکانیسم اجرای امنیت runtime تضمین میکند که به کد native دسترسی ندارد مگر اینکه مجوزی برای این کار داشته باشد.امنیت برنامههای ASP.NET Core را چگونه بررسی کنیم؟
امنیت برنامههای تحت وب فقط به احراز هویت کاربران یا تنظیم دسترسیها محدود نمیشود. یک برنامه ASP.NET Core ممکن است از کتابخانههای خارجی، کدهای نوشتهشده توسط اعضای تیم و وابستگیهای متعددی استفاده کند که هرکدام میتوانند منشأ آسیبپذیری باشند. ابزارهای تحلیل امنیتی به توسعهدهندگان کمک میکنند برخی از این مشکلات را پیش از انتشار برنامه شناسایی کنند. استفاده از چنین ابزارهایی در کنار بازبینی کد و رعایت اصول برنامهنویسی امن، بخشی از فرایند توسعه نرمافزار قابل اعتماد است.
در پروژههای بزرگ، بررسی دستی تمام بخشهای کد و وابستگیها دشوار است. ابزارهای تحلیل امنیتی میتوانند بخشهایی از این فرایند را خودکار کنند و مواردی را که نیاز به بررسی بیشتر دارند، مشخص سازند. البته خروجی ابزارها همیشه به معنای وجود یک آسیبپذیری قطعی نیست و ممکن است به بررسی انسانی نیاز داشته باشد. توسعهدهندگان باید یافتهها را بر اساس شدت خطر، امکان سوءاستفاده و تأثیر احتمالی بر برنامه ارزیابی کنند تا منابع تیم به مشکلات مهمتر اختصاص یابد.
ابزارهای تحلیل امنیتی چه کمکی به توسعهدهندگان میکنند؟
ابزارهای تحلیل امنیتی میتوانند الگوهای مشکوک در کد را شناسایی کنند، وابستگیهای آسیبپذیر را گزارش دهند و اطلاعاتی برای بررسی دقیقتر مشکلات ارائه کنند. این قابلیتها به تیم توسعه اجازه میدهند بخشی از بررسیهای امنیتی را در جریان کار روزمره انجام دهند. برای مثال، اگر یک تغییر جدید در کد باعث استفاده از یک الگوی ناامن شود، تحلیل خودکار میتواند به شناسایی زودتر آن کمک کند. این موضوع احتمال انتقال برخی مشکلات به محیطهای عملیاتی را کاهش میدهد.
ارزش این ابزارها زمانی بیشتر میشود که نتایج آنها بهصورت منظم بررسی و پیگیری شوند. صرف نصب ابزار یا اجرای یک اسکن به معنای امن بودن برنامه نیست؛ یافتهها باید تحلیل شوند و مشکلات واقعی در اولویت اصلاح قرار بگیرند. همچنین لازم است تیم توسعه تفاوت میان هشدارهای مهم و موارد کمخطر را بشناسد. در پروژههای ASP.NET و ASP.NET Core، ترکیب تحلیل خودکار با تستهای مناسب و بازبینی کد میتواند دید جامعتری از وضعیت امنیتی برنامه فراهم کند.
شناسایی کتابخانههای آسیبپذیر در پروژههای دات نت
بسیاری از برنامههای دات نت به پکیجهای NuGet و کتابخانههای شخص ثالث وابسته هستند. این وابستگیها قابلیتهای آمادهای در اختیار توسعهدهندگان قرار میدهند، اما ممکن است در نسخههای مشخصی از آنها آسیبپذیری امنیتی کشف شود. بررسی وابستگیها به شناسایی چنین مواردی کمک میکند و نشان میدهد کدام پکیجها به بهروزرسانی یا ارزیابی بیشتر نیاز دارند. اهمیت این بررسی زمانی بیشتر میشود که یک کتابخانه در بخشهای حساس برنامه، مانند پردازش ورودیها یا مدیریت دادهها، استفاده شده باشد.

برای ارزیابی یک آسیبپذیری، تنها نام کتابخانه کافی نیست. نسخه نصبشده، محدوده نسخههای آسیبپذیر، نحوه استفاده برنامه از قابلیت مربوطه و وجود نسخه اصلاحشده از عوامل مهم در تصمیمگیری هستند. ممکن است یک آسیبپذیری در وابستگی وجود داشته باشد، اما شرایط استفاده از آن در برنامه خاصی فراهم نباشد؛ بااینحال، این موضوع نباید بدون بررسی فنی به نادیده گرفتن هشدار منجر شود. آشنایی با روش ارزیابی وابستگیها به توسعهدهندگان کمک میکند تصمیمهای امنیتی دقیقتری بگیرند.
این آموزش برای چه کسانی مناسب است؟
این دوره برای توسعهدهندگانی مناسب است که با ASP.NET یا ASP.NET Core کار میکنند و میخواهند بررسی امنیتی کد و وابستگیهای پروژه را جدیتر دنبال کنند. اگر مسئولیت نگهداری یک Web Application را بر عهده دارید، آشنایی با روشهای تحلیل امنیتی میتواند به شما کمک کند مشکلات احتمالی را زودتر شناسایی کنید. این موضوع برای توسعهدهندگان باتجربه و اعضای تیمهایی که در فرایند بازبینی کد، انتشار نسخههای جدید یا نگهداری برنامههای موجود مشارکت دارند، کاربردی است.
با توجه به سطح پیشرفته دوره، محتوای آن برای افرادی مناسبتر است که با توسعه برنامههای تحت وب در اکوسیستم .NET آشنایی دارند و قصد دارند دانش خود را در زمینه امنیت نرمافزار گسترش دهند. آشنایی با ساختار پروژههای ASP.NET، مفهوم وابستگیها و شیوه کار با کتابخانههای خارجی میتواند در درک بهتر موضوعات کمککننده باشد. تمرکز بر تحلیل کد و شناسایی کتابخانههای آسیبپذیر، دید توسعهدهنده را از صرفاً پیادهسازی قابلیتها به بررسی ریسکهای امنیتی نیز گسترش میدهد.
سرفصل مطالب آموزش ویدئویی محافظت و امنیت در اپلیکیشن های ASP.NET Core
فصل اول: مقدمه دوره آموزشی- مقدمه دوره آموزشی
- امنیت اپلیکیشن در Context
- مقدمه و بررسی مطالب فصل
- کدام آسیب پذیری ها قابل شناسایی هستند؟
- بررسی Option ها برای Static Code Analysis
- آموزش عملی: راه اندازی Security Code Scanning
- آموزش عملی: سرکوب کردن False Positive ها
- آموزش عملی: بررسی کردن Deep Scan و SQL Injection
- آموزش عملی: بررسی کردن پروژه NET Framework و فایل های Web.Config
- جمع بندی
- مقدمه و مرور کلی فصل
- بررسی Library ها و Framework ها در Context
- بررسی OWASP و NIST و NVD
- طبقه بندی آسیب پذیری ها
- گزینههایی برای اسکن آسیبپذیری بسته
- اسکن کردن NuGet Packag ها با NuGetDefense
- گزینه های پیکربندی با NuGetDefense
- اسکن کردن پکیج های جاوا اسکریپت با استفاده از npm audit
- جمع بندی
- فصل چهارم: افزودن SCA و Vulnerable Library Detection برای Build Pipeline ها
- مقدمه
- تعریف Continuous Integration
- آموزش عملی و ایجاد Azure DevOps Build Pipeline
- آموزش عملی: بررسی Azure DevOps Build Pipeline
- آموزش عملی: بررسی Continuous Integration در Azure DevOps و Build Result ها
- آموزش عملی: اضافه کردن npm audit به Azure DevOps Pipeline
- آموزش عملی: بررسی Azure DevOps Pipeline مربوط به NET Core و YAML
- آموزش عملی: راه اندازی یک GitHub Action در (ASP.NET Framework)
- آموزش عملی: اضافه کردن مراحل npm به یک GitHub Actions
- آموزش عملی: بررسی NET Core GitHub Actions
- مفاهیم اساسی برای Build Pipeline ها
- جمع بندی کلی


