12 KiB
12 KiB
مشخصات درسنامه: بهروزرسانیهای امنیتی دورهای و ارتقای ایمن وابستگیها (SemVer & Updates)
- شناسه در سیلابس:
L13.5 - فصل: فصل ۱۳: نگهداری محصول (Ch 13)
- نوع محتوا: 📘 درسنامه متنی
- زمان تقریبی مطالعه: ۱۶ دقیقه
- پیشنیازهای مستقیم:
L13.4(ثبت لاگها و ردگیری هوشمند خطاهای پروداکشن)
۱. اهداف یادگیری (Learning Objectives - Bloom's Taxonomy)
دانشجو پس از مطالعهٔ این درسنامه باید بتواند:
- درک کند (Understand): پدیده «پوسیدگی نرمافزار» (Software Rot) را تحلیل کرده و بداند چرا کدی که امروز کاملاً سالم است، شش ماه دیگر به دلیل کشف آسیبپذیریهای امنیتی جدید (CVEs) نیازمند مراقبت و ارتقاست.
- تحلیل/ارزیابی کند (Evaluate): ساختار سیستم نسخهبندی معنایی (Semantic Versioning - SemVer) شامل تفاوتهای حیاتی Major، Minor و Patch را بشناسد و تفاوت نمادهای
^و~درpackage.jsonرا ارزیابی کند. - بهکار ببندد (Apply): یک رویه ۴ مرحلهای ایمن برای بهروزرسانی وابستگیها (بررسی با
npm outdated\rightarrowایجاد شاخه گیت اختصاصی\rightarrowآپدیت باnpm update\rightarrowراستیآزمایی باnpm run build) اجرا نماید. - ایجاد کند (Create): ربات هشدارهای امنیتی گیتهاب (GitHub Dependabot) را برای دریافت خودکار درخواستهای ادغام (PR) اصلاحی آسیبپذیریهای بحرانی فعال کند.
۲. محدوده و مرزهای محتوا (Scope & Boundaries)
آنچه باید پوشش داده شود (In-Scope):
- استعاره سرویس دورهای خودرو و تعویض روغن:
- خودرویی که در پارکینگ پارک شده هم روغن فاسد میکند؛ نرمافزاری که دست نخورده هم به مرور زمان مشمول کشف رخنههای امنیتی جهانی میشود.
- رمزگشایی از نگارش معنایی (Semantic Versioning - SemVer):
- ساختار سهگانه
MAJOR.MINOR.PATCH(مثلاً نسخه15.2.1):- پچ (Patch): رفع باگها و آسیبپذیریهای امنیتی؛ بدون هیچ تغییر در کارکرد قبلی (کاملاً امن برای آپدیت).
- ماینور (Minor): اضافه شدن قابلیتهای جدید با حفظ سازگاری با کدهای قبلی (Backward Compatible).
- میجر (Major): تغییرات بنیادین و شکننده (Breaking Changes) که ممکن است کدهای فعلی را بشکند و نیازمند بررسی دقیق مستندات است.
- تفاوت عملگر کلاهک (
^) و مد (~) در قفل کردن نسخهها درpackage.json.
- ساختار سهگانه
- رویه استاندارد ۴ مرحلهای ارتقای بستهها بدون خرابی پروژه:
- گام ۱: رصد وضعیت پکیجها با دستور
npm outdated. - گام ۲: ساخت برنچ مجزا در گیت (
git checkout -b chore/update-deps) برای جلوگیری از خرابی شاخه اصلی. - گام ۳: اجرای
npm updateبرای دریافت آخرین پچها و ماینورهای سازگار. - گام ۴: اجرای
npm run buildو تستهای خودکار برای تایید سلامت کامل و ادغام در شاخهmain.
- گام ۱: رصد وضعیت پکیجها با دستور
- ابزار تعاملی ارتقای نسخههای ماژور (
npm-check-updates):- نحوه استفاده از
npx npm-check-updates -iبرای انتخاب آگاهانه پکیجهایی که میخواهیم به نسخه جدیدتر ببریم.
- نحوه استفاده از
- فعالسازی هوشمند Dependabot در مخزن گیتهاب:
- دریافت ایمیلهای هشدار خودکار در صورت کشف باگهای امنیتی بحرانی در کتابخانهها و امکان مرج با یک کلیک.
- کالاوتهای آموزشی و هشدار کوئرا:
- کالاوت بنفش (
<details class="violet">): مفهوم Breaking Changes در آپدیتهای ماژور (نظیر جهش از Next.js 14 به 15) و چرایی لزوم خواندن راهنمای رسمی ارتقا (Migration Guide). - کالاوت سبز (
<details class="green">): آرامش خاطر با بهروزرسانیهای ماهانه ۱۵ دقیقهای که مانع از انباشت بدهی فنی (Technical Debt) میشود. - کالاوت قرمز (
<details class="red">): هرگز آپدیتهای ماژور را بدون داشتن کامیت ذخیره و در شب پیش از ارائه به کارفرما انجام ندهید!
- کالاوت بنفش (
آنچه نباید وارد آن شویم (Out-of-Scope):
- بازنویسی کامل معماری کدها در اثر تغییر پارادایمهای بنیادین فریمورکها.
- انتشار دستی بستههای شخصی در رجیستری جهانی npm.
۳. مفاهیم کلیدی و کلمات تخصصی (Key Concepts & Terms)
| اصطلاح انگلیسی | معادل فارسی مصوب | توضیح یکخطی ساده |
|---|---|---|
| Software Rot | پوسیدگی نرمافزار | فرسودگی تدریجی نرمافزار به دلیل منسوخ شدن کتابخانهها و کشف آسیبپذیریهای امنیتی جدید |
| Semantic Versioning (SemVer) | نسخهبندی معنایی | سیستم استاندارد جهانی شمارهگذاری نسخهها به صورت MAJOR.MINOR.PATCH برای بیان ماهیت تغییرات |
| Breaking Change | تغییر شکننده ناسازگار | تغییری در نسخه جدید یک کتابخانه که نیازمند بازنویسی بخشهایی از کدهای استفادهکننده است |
| Dependabot | بات امنیتی دیپندابات | ربات خودکار گیتهاب برای اسکن وابستگیها و ایجاد پول ریکوئستهای خودکار ارتقای امنیتی |
| Technical Debt | بدهی فنی | هزینه و زحمت پنهان ناشی از تعویق انداختن نگهداری، بازنویسی و بهروزرسانی کدهای سیستم |
| CVE (Common Vulnerabilities) | پایگاه جهانی آسیبپذیریها | شناسه عمومی و استاندارد بینالمللی برای گزارش رخنههای امنیتی کشفشده در نرمافزارها |
۴. جایگاههای تصاویر و نمودارها (Visual & Diagram Placeholders)
راهنمای ایجنت نویسنده: تمام تصاویر باید در پوشهٔ
images/ذخیره شده و در جدول تکخانهای وسطچین درج شوند:
- تصویر کاور درس:
images/cover.png- موضوع: جعبه دندههای نئونی دیجیتال که به آرامی در حال تعویض و روغنکاری هستند و قطعات قدیمی با قطعات نو و درخشان جایگزین میشوند.
- کالبدشکافی اعداد نسخهبندی معنایی (SemVer):
images/semver-breakdown-anatomy.png- موضوع: اینفوگرافیک توضیحی: نمایش عدد ۱۵.۲.۱ با فلشهای رنگی روی Major (شکننده)، Minor (فیچر جدید)، و Patch (رفع باگ امنیتی).
- خروجی دستور
npm outdatedدر ترمینال:images/npm-outdated-terminal-screen.png- موضوع: اسکرینشات از جدول رنگی ترمینال با ستونهای Package، Current، Wanted و Latest.
- درخواست ادغام خودکار امنیتی Dependabot در گیتهاب:
images/github-dependabot-pr-preview.png- موضوع: اسکرینشات از یک Pull Request خودکار در گیتهاب با تگ سبز «Security Update: bump library version to fix CVE».
۵. بخشبندی و ساختار محتوایی پیشنهادی درسنامه (README.md)
- تیتر اصلی:
# بهروزرسانیهای امنیتی دورهای و ارتقای ایمن وابستگیها (SemVer & Updates) - مقدمه: چرا کدی که امروز بینقص کار میکند، اگر به حال خود رها شود سال آینده به لانه زنبور رخنههای امنیتی تبدیل خواهد شد؟
- جدول کاور درس
- پدیده پوسیدگی نرمافزار (Software Rot):
- جهان اطراف کد شما در حال حرکت است؛ مرورگرها آپدیت میشوند و هکرها رخنههای جدید کشف میکنند.
- زبان بینالمللی نسخهها: SemVer را مثل یک حرفهای بخوانید:
- تفاوت Patch (بدون دردسر)، Minor (امکانات نو)، و Major (احتیاط، زمین لغزنده است!).
- نمادهای
^و~درpackage.jsonچه دستوری به npm میدهند؟
- پروتکل ۴ گانه بهروزرسانی بدون خرابکاری در پورتفولیو:
- گام ۱: بازرسی وضعیت با
npm outdated. - گام ۲: باز کردن یک برنچ امن در گیت.
- گام ۳: اجرای
npm update. - گام ۴: راستیآزمایی با تست بیلد محلی
npm run build.
- گام ۱: بازرسی وضعیت با
- استفاده از ابزار شیک
npm-check-updatesبرای ارتقای هدفمند:- انتخاب گرافیکی بستهها در ترمینال و مشاهده پیشنمایش نسخههای جدید.
- فعالسازی نگهبان خودکار گیتهاب (Dependabot):
- سپردن رصد ۲۴ ساعته آسیبپذیریهای روز دنیا به رباتهای گیتهاب.
- دستورات چندسکویی برای بررسی و آپدیت وابستگیها:
- منوی کشویی سهگانه برای ویندوز، مک و لینوکس:
- Windows (PowerShell):
npm outdated npm update npm run build - macOS (Terminal):
npm outdated npm update npm run build - Linux (Bash):
npm outdated npm update npm run build
- Windows (PowerShell):
- منوی کشویی سهگانه برای ویندوز، مک و لینوکس:
- باکس نکته Quera (
<details class="violet">): اهمیت مطالعه فایل CHANGELOG یا Releases در گیتهاب کتابخانه قبل از آپدیتهای بزرگ ماژور. - باکس هشدار Quera (
<details class="red">): هرگز همه پکیجها را به یکباره و بدون تست با دستورات فورس آپدیت نکنید؛ یک ناسازگاری کوچک میتواند ساعتها وقت شما را برای ریکاوری تلف کند. - باکس رضایتبخش Quera (
<details class="green">): پورتفولیویی که همیشه تمیز، مدرن و مجهز به آخرین پچهای امنیتی روز دنیاست. - جمعبندی درسنامه: تسلط بر نگهداری زیرساختی؛ ورود به مبحث رشد و دیده شدن: سئو تکنیکال و تحلیل رفتار کاربر در درس بعدی.
۶. معیارهای پذیرش (Acceptance Criteria for Reviewer)
- پدیده فرسودگی نرمافزار و ضرورت بهروزرسانیهای مستمر تشریح شود.
- ساختار نسخهبندی معنایی (SemVer) و علائم
^و~به روشنی آموزش داده شود. - پروتکل ۴ مرحلهای ایمن ارتقای وابستگیها به همراه دستورات چندسکویی ارائه گردد.
- شیوه فعالسازی و کاربرد Dependabot در مخزن گیتهاب تشریح شود.