ابزار کاربر

ابزار سایت


درس:۴۰۷۴۶

توسعه امن نرم‌افزار

Secure Software Development

شماره درس: ۴۰۷۴۶ تعداد واحد: ۳
مقطع: کارشناسی ارشد نوع درس: نظری
پیش‌نیاز: – هم‌نیاز: –

اهداف درس

با توجه به اينكه بسياري از مشكلات امنيتي نرم‌افزارهاي توليد به عدم توجه به مساله امنيت در فرآيند توليد نرم‌افزار برمي‌گردد، در مباحث اين درس به طور ويژه، به مسائل امنيتي و توصيه‌هاي امنيتي، كه در مراحل توليد يك ‌نرم‌افزار (در تحليل نياز، تدوين معماري، طراحي، پياده‌سازي و آزمون آن) در جهت حصول يك نسخه امن نرم‌افزاري مطرح است، پرداخته مي‌شود و دانشجویان با انواع آسیب‌پذیری‌ها و مشکلات امنیتی حاصل از برنامه‌نویسی نادرست آشنا گردیده، نکات، روش‌ها، و تکنیک‌های مختلف در تولید یک برنامه امن به آنها معرفی می‌گردد.

ریز مواد

  1. اهميت امنيت نرم‌افزار
    • تهديدات نرم‌افزاری
    • منابع ناامنی نرم‌افزار
    • مديريت توسعه امن نرم‌افزار
  2. تحليل نيازمندي‌های امنيتی نرم‌افزار
    • موارد سوء‌كاربرد و سوء‌استفاده (Misuse and Abuse Cases)
    • مدل‌های فرآيندی امنیت-محور
    • استخراج نيازمندی‌های امنيتی
    • اولويت‌دهی به نيازمندی‌هاي امنيتی
  3. معماری و طراحي امن نرم‌افزار
    • تحليل ريسك معمارانه
    • اصول و راهنماهاي امنيتي و الگوهاي حمله در تدوين معماري و طراحي نرم‌افزار
  4. ملاحظات امنيتي در پياده‌سازي و آزمون نرم‌افزار
    • تحليل امنيتی كد
    • آزمون امنيتی نرم‌افزار
  5. مديريت توليد نرم‌افزار امن
    • امنيت، پيچيدگی و كارایی
    • امنيت و مديريت پروژه
  6. مقدمه‌اي بر برنامه‌سازي امن
    • اهمیت کد نویسی امن
    • چرایی خطاهای امنیتی در کد نویسی
    • انواع آسیب‌پذیری‌ها
  7. اصول برنامه‌سازی امن
    • کنترل ورودی
    • حداقل دسترسی
    • دفاع چند لایه
    • طراحی باز (عدم برقراری امنیت از طریق پنهان‌کاری)
  8. آسیب‌پذیری‌های متداول
    • انواع تزریق (Injections)
    • اسکریپ‌نویسی بین سایتی (XSS) و جعل در خواست بین سایتی (CSRF)
    • احراز هویت و مدیریت نشست معیوب
    • مجازشماری و کنترل دسترسی معیوب
    • پیکربندی ناامن
    • استفاده نادرست از رمزنگاری (تولید اعداد تصادفی ضعیف، مدیریت کلید ضعیف، استفاده نادرست از سیستم‌های مبتنی بر گذرواژه)
    • انواع سرریز بافر
    • نشت اطلاعات (عدم حفاظت از اطلاعات حساس،مدیریت نامناسب پیام‌های خطا)
    • استفاده ناکافی از مکانیزم‌های غیرخودکارسازی (نظیر CAPTCHA)
  9. چارچوب‌های تحلیل امنیتی نرم‌افزار
    • آزمونهای نفوذ جعبه سفید، جعبه سیاه، و جعبه خاکستری
    • تکنیک Fuzzing
    • معرفی چارچوب‌های آزمون (مانند OWASP)

ارزیابی

  • تمرین‌های نظری و کاربردی: ۵ نمره
  • آزمون‌ میان‌ترم: ۷ نمره
  • آزمون پایان‌ترم: ۸ نمره

مراجع

  • Julia H. Allen, Software Security Engineering: A Guide for Project Managers, 1st Edition, Addison-Wesley Professional, 2008.
  • Gary McGraw, Software Security: Building Security In, Addison-Wesley Professional, 2006.
  • J. Viega, M. Messier. Secure Programming Cookbook, O'Reilly, 2003.
  • M. Howard, D. LeBlanc. Writing Secure Code, Microsoft, second edition, 2002.
  • J. Viega, G. McGraw. Building Secure Software, Addison Wesley, 2002.
درس/۴۰۷۴۶.txt · آخرین ویرایش: 2022/12/24 11:29 توسط مرتضی امینی