آموزش امنیت وب زمان مطالعه: 12 دقیقهآخرین به‌روزرسانی: 2026-10-05

آموزش امنیت وب از صفر تا پیشرفته

آموزش امنیت وب برای هر کسی که با ساخت یا نگهداری یک سامانه تحت وب سروکار دارد ضروری است، چون بیشتر نفوذهای واقعی از یک ورودی کنترل‌نشده یا کنترل دسترسی ناقص آغاز می‌شود. امنیت وب یعنی شناخت روش‌هایی که مهاجم از طریق HTTP، نشست کاربر و منطق برنامه به داده یا عملیات حساس می‌رسد و سپس بستن همان مسیرها در کد و پیکربندی.

این راهنما ابتدا تفاوت امنیت وب و امنیت شبکه را روشن می‌کند و سپس ده دسته نسخه ۲۰۲۵ فهرست OWASP را با نمونه حمله و راه دفاع نشان می‌دهد. در ادامه تزریق SQL، XSS و CSRF، ضعف‌های IDOR و SSRF در APIها، کار عملی با Burp Suite، یک چک‌لیست چهارده‌موردی تست نفوذ وب و سخت‌سازی نهایی مرور می‌شود. همه نمونه‌ها را می‌توانید روی سناریوهای وب «آزمایشگاه اکسپلویتفا» تمرین کنید.

امنیت وب چیست و چه تفاوتی با امنیت شبکه دارد؟

امنیت وب مجموعه تدابیر و آزمون‌هایی است که یک برنامه تحت وب را از سوءاستفاده ورودی کاربر، نقص منطق کسب‌وکار و ضعف کنترل دسترسی محافظت می‌کند. تمرکز آن روی لایه هفتم مدل OSI است: HTTP، نشست‌ها، کوکی‌ها، APIها و کد سمت سرور و کلاینت. یک آسیب‌پذیری وب می‌تواند بدون هیچ نفوذی به شبکه، مستقیماً به داده مشتریان برسد.

امنیت شبکه به مسیرها، پورت‌ها، سرویس‌ها و جداسازی بخش‌های زیرساخت می‌پردازد؛ مثلاً آیا سرویس پایگاه داده از اینترنت قابل دسترسی است یا ترافیک میان دو بخش شبکه کنترل می‌شود. در عمل این دو مکمل یکدیگرند: بسیاری از نفوذهای واقعی با یک آسیب‌پذیری وب شروع می‌شود و با حرکت جانبی در شبکه ادامه پیدا می‌کند.

OWASP Top 10 با مثال واقعی هر آسیب‌پذیری

فهرست OWASP Top 10 پرکاربردترین زبان مشترک برای اولویت‌بندی ریسک‌های وب است. نسخه ۲۰۲۵ این فهرست بر پایه داده آزمون‌های واقعی منتشر شد و دو دسته جدید به آن اضافه شد: شکست‌های زنجیره تأمین نرم‌افزار و مدیریت نادرست شرایط استثنایی. در همین نسخه، آسیب‌پذیری SSRF در دسته کنترل دسترسی شکسته ادغام شد، چون در عمل یک دور زدن مجوزدهی است.

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

دسته OWASP Top 10:2025نمونه حمله واقعیراه دفاع اصلی
A01 کنترل دسترسی شکسته (شامل SSRF)تغییر شناسه در /api/orders/1042 به 1043 و خواندن سفارش کاربر دیگر؛ درخواست به http://169.254.169.254 برای خواندن متادیتای ابریمجوزدهی سمت سرور برای هر درخواست، بررسی مالکیت رکورد، مسدودسازی آدرس‌های داخلی در لایه خروجی و الزام IMDSv2
A02 پیکربندی نادرست امنیتی (شامل XXE)باقی‌ماندن حالت دیباگ در تولید، رمز پیش‌فرض پنل مدیریت، باکت ذخیره‌سازی عمومیسخت‌سازی خودکار و یکسان محیط‌ها، حذف سرویس و فایل نمونه، اسکن انحراف پیکربندی
A03 شکست‌های زنجیره تأمین نرم‌افزارآلودگی یک بسته npm در زمان نصب و سرقت توکن خط لوله انتشارتولید SBOM، قفل نسخه‌ها، رجیستری واسط، امضای مصنوعات و دسترسی محدود و کوتاه‌عمر CI
A04 شکست‌های رمزنگاریاستفاده از MD5 برای رمز عبور یا انتقال کوکی نشست روی HTTP بدون TLSArgon2id یا bcrypt برای رمز، TLS نسخه ۱٫۲ به بالا و رمزنگاری داده حساس در حالت سکون
A05 تزریق (SQLi، XSS، Command)پارامتر id=1 OR 1=1 در پرس‌وجوی SQL یا تزریق تگ script در فیلد نظرکوئری پارامتری، رمزگذاری خروجی بر پایه زمینه، سیاست امنیت محتوا و پرهیز از فراخوانی پوسته سیستم
A06 طراحی ناامننبود محدودیت نرخ روی بازیابی رمز عبور یا رزرو گروهی بدون پیش‌پرداختمدل‌سازی تهدید، نوشتن الزامات امنیتی در داستان کاربر، محدودیت نرخ و بررسی منطق کسب‌وکار
A07 شکست احراز هویتپر کردن اعتبارنامه با رمزهای لو رفته یا حمله افزایشی روی رمزهای فصلیاحراز هویت چندعاملی، بررسی رمز در برابر فهرست لو رفته، تولید مجدد شناسه نشست پس از ورود
A08 شکست یکپارچگی نرم‌افزار یا دادهبه‌روزرسانی خودکار بدون بررسی امضا یا deserialization ناامن در Javaامضای بسته‌ها و به‌روزرسانی، پرهیز از deserialization ورودی نامعتمد و بررسی یکپارچگی منابع خارجی
A09 شکست ثبت و هشدار امنیتینبود هشدار روی تلاش‌های ورود ناموفق و نگهداری لاگ فقط روی همان سرورثبت رویدادهای کلیدی، هشدار زمان واقعی و ذخیره‌سازی فقط‌افزودنی و جدا برای لاگ
A10 مدیریت نادرست شرایط استثناییبازگشت متن خطای پایگاه داده به کاربر یا fail-open در بررسی مجوز هنگام استثنارفتار fail-closed، بازگردانی تراکنش، پیام خطای عمومی و تعیین سقف منابع

تزریق SQL: از تشخیص تا بهره‌جویی

تزریق SQL زمانی رخ می‌دهد که ورودی کاربر به‌جای پارامتر، بخشی از متن پرس‌وجو شود؛ نتیجه می‌تواند خواندن کل پایگاه داده، دور زدن ورود یا در مواردی اجرای دستور روی سرور باشد. ساده‌ترین آزمون، ارسال کاراکتر تک‌کوتیشن و بررسی خطای پایگاه داده یا تغییر رفتار پاسخ است؛ سپس با شرط OR 1=1 و UNION SELECT می‌توان تعداد ستون‌ها و نقاط نمایش داده را مشخص کرد.

برای بهره‌جویی خودکار، sqlmap گزینه‌های متنوعی دارد: sqlmap -u 'https://target/item.php?id=1' --batch --dbs فهرست پایگاه‌های داده را برمی‌گرداند و --dump --technique=U داده را با تکنیک UNION استخراج می‌کند. در تزریق‌های کور، تکنیک‌های بولین و زمانی با توابع تأخیر مانند SLEEP(5) نتیجه می‌دهند. دفاع قابل اتکا، پرس‌وجوی پارامتری و محدودسازی دسترسی کاربر پایگاه داده است؛ فیلترکردن رشته ورودی راه‌حل پایداری نیست.

XSS و CSRF: تفاوت‌ها و دفاع

XSS اجرای کد جاوااسکریپت در مرورگر قربانی است و CSRF وادار کردن مرورگر قربانی به ارسال یک درخواست معتبر بدون اطلاع او. در XSS مهاجم به داده‌های داخل مرورگر و کوکی‌ها دسترسی می‌گیرد، اما در CSRF پاسخ درخواست را نمی‌بیند و فقط اثر یک عمل مانند تغییر ایمیل یا انتقال وجه را ایجاد می‌کند.

دفاع در برابر XSS ترکیبی است: رمزگذاری خروجی بر پایه زمینه (HTML، ویژگی، جاوااسکریپت)، سیاست امنیت محتوا با nonce برای اسکریپت‌ها و تنظیم کوکی نشست با HttpOnly و Secure تا جاوااسکریپت به آن دسترسی نداشته باشد. برای CSRF، توکن یک‌بارمصرف، کوکی SameSite=Lax یا Strict و بررسی هدر Origin راهگشاست؛ توجه کنید که SameSite=None بدون Secure، کوکی را در معرض ارسال قرار می‌دهد.

IDOR و SSRF در APIها

IDOR یا ارجاع مستقیم ناامن به شیء، وقتی رخ می‌دهد که API به شناسه ارسالی کاربر اعتماد می‌کند و مالکیت منبع را بررسی نمی‌کند؛ مثلاً GET /api/invoices/5501 با تغییر یک عدد، صورت‌حساب مشتری دیگر را برمی‌گرداند. این ضعف در APIهای موبایل و پنل‌های مدیریتی بسیار شایع است و چون نشانه فنی خاصی ندارد، در تست دستی راحت‌تر از اسکنرها پیدا می‌شود.

SSRF زمانی است که سرور می‌تواند به آدرس دلخواه کاربر درخواست بفرستد؛ مهاجم با آن به سرویس‌های داخلی، Redis یا سرویس متادیتای ابری دسترسی می‌گیرد و در ادامه ممکن است اعتبارنامه موقت بگیرد. دفاع شامل فهرست سفید دامنه، مسدودسازی آدرس‌های خصوصی و link-local در لایه خروجی، غیرفعال‌کردن ریدایرکت خودکار و الزام به IMDSv2 در AWS است.

کار عملی با Burp Suite

Burp Suite ستون فقرات تست دستی وب است: Proxy ترافیک مرورگر را رهگیری می‌کند، Repeater برای فرستادن مکرر یک درخواست با تغییرات کوچک به کار می‌رود و Intruder برای حمله‌های واژه‌نامه‌ای مثل فازینگ پارامتر یا آزمون رمز استفاده می‌شود. در نسخه Community سرعت Intruder محدود است، اما برای سناریوهای کوچک و اثبات مفهوم کافی است.

برای کار اصولی، ابتدا دامنه هدف را در Scope تعیین کنید تا ترافیک بی‌ربط ثبت نشود، سپس با یک حساب کاربری عادی وارد شوید و درخواست‌های احراز هویت، تغییر پروفایل و دسترسی به منابع را در Repeater بازبینی کنید. ترافیک دستگاه موبایل یا شبیه‌ساز را نیز می‌توان با تنظیم پروکسی همان دستگاه از Burp عبور داد.

  • افزونه‌های کاربردی: Logger++ برای جست‌وجوی سریع در تاریخچه، Autorize برای آزمون خودکار مجوزدهی و Param Miner برای کشف پارامترهای پنهان.
  • از Match and Replace برای افزودن خودکار هدر یا توکن در همه درخواست‌ها استفاده کنید تا آزمون دستی سریع‌تر شود.
  • نقشه سایت را پس از هر مرحله پیمایش دستی مرور کنید؛ مسیرهای فراموش‌شده معمولاً همان‌جا پیدا می‌شوند.
  • درخواست‌های اثبات مفهوم را ذخیره کنید؛ همین درخواست‌ها در گزارش و بازآزمایی استفاده می‌شوند.

چک‌لیست تست نفوذ وب

#بررسیچه چیزی را تأیید می‌کند
۱آزمون IDOR روی همه شناسه‌های عددی و UUIDمجوزدهی در سطح رکورد، نه فقط سطح مسیر
۲آزمون دسترسی افقی و عمودی با دو حساب کاربرینبود شکاف نقش میان کاربر عادی و مدیر
۳بررسی پارامترهای پنهان و ماسک‌شده مانند role=userامکان دستکاری فیلدهای حساس در سمت سرور
۴ارسال تک‌کوتیشن و توابع تأخیر به همه ورودی‌هاتزریق SQL از نوع خطا، بولین و زمانی
۵آزمون XSS بازتابی، ذخیره‌شده و DOMدرستی رمزگذاری خروجی و اثربخشی CSP
۶بررسی کوکی نشست: HttpOnly، Secure، SameSite و انقضامقاومت نشست در برابر سرقت و CSRF
۷آزمون محدودیت نرخ روی ورود، رمز یک‌بارمصرف و بازیابی رمزمقاومت در برابر حمله آبشاری و شمارش کاربر
۸بررسی پیام‌های خطا و هدرهای افشای نسخهمیزان اطلاعات لو رفته درباره پشته فناوری
۹آزمون بارگذاری فایل: نوع، پسوند، محتوا و مسیر ذخیرهاجرای فایل آپلودشده یا دسترسی خارج از پوشه مجاز
۱۰بررسی SSRF با آدرس‌های داخلی و سرویس متادیتامحدودیت خروجی شبکه سرور
۱۱آزمون بازکردن مسیر در پارامترهای فایلخواندن فایل‌های خارج از ریشه وب
۱۲بررسی هدرهای امنیتی: CSP، HSTS، X-Content-Type-Options، X-Frame-Optionsوضعیت سخت‌سازی لایه مرورگر
۱۳آزمون رفتار برنامه پس از محدودیت نرخ و ورودی غیرمنتظرهپایداری کنترل‌ها زیر بار و در شرایط خطا
۱۴بررسی ثبت لاگ و هشدار برای رویدادهای حساسقابلیت تشخیص و پاسخ در حادثه واقعی

سخت‌سازی و دفاع

سخت‌سازی وب از هدرها و پیکربندی آغاز می‌شود: HSTS با max-age یک‌ساله و includeSubDomains، هدر X-Content-Type-Options با مقدار nosniff، هدر X-Frame-Options با مقدار DENY یا frame-ancestors در CSP و سیاست Referrer محدودکننده. سیاست امنیت محتوا را ابتدا در حالت Report-Only اجرا کنید تا شکست‌ها را ببینید و سپس آن را اعمال کنید.

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

پرسش‌های پرتکرار

؟ برای یادگیری امنیت وب باید برنامه‌نویسی بلد باشم؟

برای آزمون‌های ابتدایی نه، اما برای درک عمیق آسیب‌پذیری‌ها و بررسی کد، آشنایی با یک زبان سمت سرور مانند PHP، Python یا Node.js و درک SQL لازم است. بدون آن، تحلیل منطق کسب‌وکار و نوشتن اثبات مفهوم دقیق دشوار می‌شود.

؟ کدام آسیب‌پذیری بیشترین پاداش باگ‌بانتی را دارد؟

در برنامه‌های بالغ، ضعف منطق کسب‌وکار و کنترل دسترسی که به داده کاربران می‌رسد معمولاً بالاترین پاداش را دارد و اجرای کد از راه دور و SSRF در زیرساخت حساس در رده‌های بعدی است. XSS ساده در برنامه‌های بزرگ معمولاً پاداش کمتری می‌گیرد، چون شایع و کم‌اثرتر است.

؟ OWASP Top 10 چقدر به‌روز است؟

آخرین نسخه، نسخه ۲۰۲۵ است که جای نسخه ۲۰۲۱ را گرفته و بر پایه داده آزمون‌های واقعی و نظرسنجی جامعه منتشر شده است. این فهرست یک حداقل آگاهی است؛ برای آزمون دقیق باید کنار آن از راهنمای WSTG و استاندارد ASVS هم استفاده کرد.

دوره‌های مرتبط با این راهنما

راهنماهای مرتبط

مقالات مرتبط در وبلاگ

این محتوا بخشی از راهنمای رسمی https://exploitfa.com است و برای آموزش قانونی و اخلاقی امنیت سایبری منتشر می‌شود.