ابزار رایگان · بدون ثبت‌نام

بررسی از سرور ایران‌کلاد

بررسی هدرهای HTTP و امتیاز امنیتی سایت

سرور ایران‌کلاد در دیتاسنتر تهران یک درخواست HEAD به نشانی موردنظر می‌فرستد و کد وضعیت، نشانی نهایی پس از ریدایرکت‌ها، زمان پاسخ و همهٔ هدرهای پاسخ را نشان می‌دهد؛ همراه با امتیاز A تا F برای شش هدر امنیتی مثل HSTS و CSP.

نشانی با http:// یا https:// و نام دامنه؛ اگر پروتکل ننویسید، https:// در نظر گرفته می‌شود. نشانی IP و دامنه‌ای که به شبکهٔ داخلی اشاره کند بررسی نمی‌شود. چون نشانی ممکن است توکن یا پارامتر خصوصی داشته باشد، برای این ابزار لینک اشتراک ساخته نمی‌شود.

نمونه‌ها

در حال ارسال درخواست HEAD از سرور ایران‌کلاد؛ هر مرحله حداکثر هشت ثانیه و تا سه ریدایرکت…

نشانی را وارد کنید یا روی یکی از نمونه‌ها بزنید؛ کد وضعیت، امتیاز امنیتی و فهرست کامل هدرها همین‌جا نمایش داده می‌شود.

راهنمای کامل

راهنمای کامل هدرهای HTTP: خواندن، اصلاح و ایمن‌سازی پاسخ سرور

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

۹ بخش حدود ۸ دقیقه مطالعه

فهرست مطالب

هدر HTTP چیست و این ابزار دقیقاً چه چیزی را می‌سنجد؟

پاسخ هر وب‌سرور از دو بخش تشکیل می‌شود: بخش هدر که شامل کد وضعیت و چند جفت «نام: مقدار» است و بدنه که همان HTML، تصویر یا فایل است. هدرها برای کاربر دیده نمی‌شوند اما رفتار مرورگر، موتور جست‌وجو و هر کش میانی را کنترل می‌کنند. مثلاً Content-Type نوع محتوا را مشخص می‌کند، Location مقصد ریدایرکت را می‌گوید و Cache-Control تعیین می‌کند پاسخ تا چه مدت قابل نگهداری است.

این ابزار یک درخواست HEAD به آدرسی که وارد می‌کنید می‌فرستد؛ یعنی فقط هدرها را می‌خواهد و بدنهٔ صفحه را دانلود نمی‌کند. اگر پاسخ ریدایرکت باشد، حداکثر سه مرحله دنبال می‌شود و هدرهای آخرین پاسخ در جدول نمایش داده می‌شوند. بالای فهرست، آدرس نهایی، کد وضعیت و زمان درخواست آخر به میلی‌ثانیه را می‌بینید و اگر نشانی واردشده ریدایرکت شده باشد، همین هم صریح نوشته می‌شود. تا رسیدن پاسخ، زمان سپری‌شده نمایش داده می‌شود و با دکمهٔ «لغو» یا کلید Esc می‌توانید بررسی را متوقف کنید.

سقف زمان اتصال پنج ثانیه و سقف کل درخواست هشت ثانیه است. فقط آدرس‌هایی که با ⁦http://⁩ یا ⁦https://⁩ شروع می‌شوند و نام دامنه دارند پذیرفته می‌شوند؛ آی‌پی خام و دامنه‌هایی که به آدرس‌های شبکهٔ داخلی resolve می‌شوند رد می‌شوند تا ابزار عمومی نتواند برای دسترسی به شبکه‌های خصوصی سوءاستفاده شود.

روش استفاده از ابزار بررسی هدر، قدم به قدم

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

کار با ابزار ساده است، اما چند نکتهٔ کوچک باعث می‌شود نتیجهٔ دقیق‌تری بگیرید. ترتیب پیشنهادی ما این است:

  • آدرس کامل را با پروتکل وارد کنید، مثلاً ⁦https://example.com⁩؛ اگر فقط example.com بنویسید، ابزار پیش از ارسال ⁦https://⁩ را خودش اضافه می‌کند و این را زیر کادر می‌گوید
  • اگر می‌خواهید ریدایرکت را ببینید، نسخهٔ http یا بدون www را بدهید و ببینید «نشانی نهایی» در نتیجه با نشانی واردشده فرق دارد یا نه
  • رنگ کد وضعیت را نگاه کنید: سبز یعنی ۲xx، آبی ۳xx، کهربایی ۴xx و قرمز ۵xx
  • در فهرست هدرها دنبال Cache-Control‏، Content-Type‏، Server و هدرهای امنیتی بگردید و با «کپی همهٔ هدرها» کل پاسخ را برای همکار یا پشتیبانی بفرستید
  • امتیاز حرفی A تا F را ببینید و هدرهایی را که علامت ضربدر دارند به‌عنوان فهرست کارهای باقی‌مانده یادداشت کنید
  • بعد از هر تغییر در تنظیمات وب‌سرور دوباره بررسی کنید تا مطمئن شوید هدر جدید واقعاً ارسال می‌شود

برای صفحه‌هایی که پشت ورود هستند، این ابزار فقط پاسخ مهمان را می‌بیند؛ کوکی یا توکن شما ارسال نمی‌شود.

بازگشت به فهرست مطالب

امتیاز هدرهای امنیتی چطور محاسبه می‌شود؟

امتیاز از صد محاسبه می‌شود و فقط حضور شش هدر را می‌سنجد. HSTS فقط وقتی حساب می‌شود که max-age داشته باشد، CSP وقتی که مقدارش بیش از ده کاراکتر باشد و X-Content-Type-Options وقتی که مقدار nosniff داشته باشد. برای بقیه وجود هدر کافی است. مجموع ۹۰ یا بیشتر A، از ۷۵ به بالا B، از ۶۰ به بالا C، از ۴۰ به بالا D و کمتر از آن F است.

این امتیاز یک نگاه سریع است و جای ممیزی امنیتی را نمی‌گیرد. مثلاً ابزار بررسی نمی‌کند سیاست CSP شما واقعاً سخت‌گیرانه است یا با unsafe-inline عملاً بی‌اثر شده. با این حال برای پیدا کردن هدرهای جاافتاده، که رایج‌ترین مشکل سایت‌های تازه راه‌اندازی‌شده است، بسیار کاربردی است.

هدرامتیازچه کاری می‌کندمقدار نمونه
Strict-Transport-Security۲۵مرورگر را مجبور می‌کند همیشه با HTTPS وصل شودmax-age=31536000; includeSubDomains
Content-Security-Policy۲۵مشخص می‌کند اسکریپت و استایل از کجا مجاز است؛ سد اصلی XSSdefault-src 'self'
X-Frame-Options۱۵جلوی جاسازی صفحه در iframe و حملهٔ clickjacking را می‌گیردDENY یا SAMEORIGIN
X-Content-Type-Options۱۵مرورگر نوع فایل را حدس نمی‌زندnosniff
Referrer-Policy۱۰میزان اطلاعات آدرس مبدأ هنگام کلیک روی لینک خارجیstrict-origin-when-cross-origin
Permissions-Policy۱۰دسترسی به دوربین، میکروفون و موقعیت را محدود می‌کندgeolocation=(), camera=()

بازگشت به فهرست مطالب

هدرهای کش: Cache-Control‏، ETag و Vary را چطور بخوانیم؟

بعد از امنیت، بیشترین استفادهٔ این ابزار بررسی رفتار کش است. Cache-Control با مقدارهایی مثل max-age=3600 می‌گوید پاسخ تا یک ساعت تازه است؛ no-store یعنی هیچ جا ذخیره نشود و private یعنی فقط مرورگر کاربر حق نگهداری دارد و کش مشترک نباید آن را ذخیره کند. ETag و Last-Modified به مرورگر اجازه می‌دهند با درخواست شرطی بپرسد فایل تغییر کرده یا نه و در صورت عدم تغییر، پاسخ کوتاه ۳۰۴ بگیرد.

اگر سایت را پشت اج پراکسی ایران‌کلاد گذاشته‌اید، این هدرها مستقیماً روی کش اثر دارند. با فعال بودن Static-Cache، فایل‌های ایستا مثل css‏، js، تصویر و فونت تا حجم یک مگابایت در لبهٔ داخل ایران نگهداری می‌شوند و مدت اعتبار برابر زمان تنظیم‌شده (پیش‌فرض ۳٬۶۰۰ ثانیه) یا مقدار Cache-Control سرور مبدأ است. پاسخ‌هایی که Set-Cookie‏، private‏، no-store یا هدر Authorization دارند هرگز ذخیره نمی‌شوند.

یک اشتباه رایج این است که فریم‌ورک روی همهٔ پاسخ‌ها، حتی فایل‌های ایستا، کوکی جلسه می‌گذارد و در نتیجه هیچ‌چیز کش نمی‌شود. با همین ابزار آدرس یک فایل css یا تصویر را بدهید؛ اگر Set-Cookie در جدول دیدید، مشکل پیدا شده است. هدر Vary را هم نگاه کنید: Vary روی User-Agent یا Cookie کارایی کش را به‌شدت پایین می‌آورد.

بازگشت به فهرست مطالب

هدرهای HTTP و سئو: ریدایرکت، کد وضعیت و X-Robots-Tag

موتور جست‌وجو قبل از خواندن محتوا، هدر را می‌خواند. ریدایرکت دائمی باید ۳۰۱ یا ۳۰۸ باشد تا اعتبار لینک‌ها به آدرس جدید منتقل شود؛ ۳۰۲ و ۳۰۷ موقت حساب می‌شوند. زنجیرهٔ طولانی ریدایرکت، مثلاً http به https و بعد به www و بعد به آدرس با اسلش، هم زمان بارگذاری را زیاد می‌کند و هم بودجهٔ خزش را هدر می‌دهد. شمارندهٔ redirect در نتیجهٔ ابزار این مشکل را فوراً نشان می‌دهد.

هدر X-Robots-Tag معادل متاتگ robots است و برای فایل‌هایی مثل PDF که متاتگ ندارند کاربرد دارد؛ اگر به‌اشتباه noindex روی کل سایت تنظیم شده باشد، صفحه‌ها از نتایج حذف می‌شوند. هدر Link با rel=canonical هم می‌تواند نسخهٔ اصلی صفحه را معرفی کند. همچنین Content-Type باید charset=utf-8 داشته باشد تا متن فارسی درست نمایش داده شود.

صفحه‌ای که برای کاربر درست باز می‌شود ولی کد ۲۰۰ برنمی‌گرداند، یا صفحهٔ خطایی که به‌جای ۴۰۴ کد ۲۰۰ می‌دهد، از نظر گوگل گمراه‌کننده است. برای بررسی رکوردهای دامنه و گواهی امنیتی هم از ابزار بررسی DNS و تست SSL استفاده کنید.

بازگشت به فهرست مطالب

اشتباه‌های رایج در تنظیم هدرها

بیشتر مشکلاتی که در بررسی سایت‌ها می‌بینیم تکراری‌اند و با یک خط تنظیم حل می‌شوند. فهرست زیر از رایج‌ترین آن‌هاست:

  • فعال کردن HSTS با includeSubDomains در حالی که یک زیردامنه هنوز HTTPS ندارد؛ آن زیردامنه از دسترس خارج می‌شود
  • تکرار یک هدر هم در اپلیکیشن و هم در وب‌سرور؛ دو مقدار متفاوت برای CSP رفتار غیرقابل پیش‌بینی می‌سازد
  • استفاده از add_header در nginx داخل location بدون تکرار هدرهای سطح server؛ هدرهای بالادستی حذف می‌شوند
  • نمایش نسخهٔ دقیق نرم‌افزار در هدر Server یا X-Powered-By که کار مهاجم را آسان می‌کند
  • گذاشتن Cache-Control: no-store روی فایل‌های ایستا و از دست دادن کل مزیت کش
  • CSP بسیار سخت‌گیرانه بدون آزمایش قبلی که اسکریپت‌های پرداخت یا آمار را می‌شکند؛ ابتدا حالت Report-Only را امتحان کنید

بازگشت به فهرست مطالب

بررسی و تنظیم هدرها با دستورهای لینوکس

اگر به سرور دسترسی دارید یا می‌خواهید بررسی را در اسکریپت خودکار کنید، curl ابزار اصلی است. دستورهای زیر را می‌توانید روی هر سرور ابری یا لپ‌تاپ لینوکسی اجرا کنید. توجه کنید که curl -I مثل همین ابزار درخواست HEAD می‌فرستد و برخی سرورها به HEAD پاسخ متفاوتی از GET می‌دهند.

برای اضافه کردن هدر در nginx از add_header با کلیدواژهٔ always استفاده کنید تا روی پاسخ‌های خطا هم ارسال شود، و در Apache از Header always set کمک بگیرید. بعد از هر تغییر، پیکربندی را تست و سرویس را reload کنید؛ نیازی به restart کامل نیست.

کاردستور
دیدن هدرهای پاسخ با HEADcurl -I https://example.com
دنبال کردن ریدایرکت‌ها با GET و نمایش همهٔ هدرهاcurl -sSL -D - -o /dev/null https://example.com
فقط کد وضعیت و زمان کلcurl -s -o /dev/null -w "%{http_code} %{time_total}" https://example.com
افزودن HSTS در nginxadd_header Strict-Transport-Security "max-age=31536000" always;
افزودن nosniff در ApacheHeader always set X-Content-Type-Options "nosniff"
تست و اعمال پیکربندی nginxsudo nginx -t && sudo systemctl reload nginx

بازگشت به فهرست مطالب

حریم خصوصی و محل بررسی: درخواست از کجا ارسال می‌شود؟

برخلاف ابزارهایی مثل تولید پسورد که کاملاً در مرورگر اجرا می‌شوند، این ابزار ذاتاً سمت سرور کار می‌کند: آدرسی که وارد می‌کنید به سرور ایران‌کلاد ارسال می‌شود و درخواست HEAD از سرور ما در دیتاسنتر تهران به سایت مقصد فرستاده می‌شود. User-Agent این درخواست iranclaud-tools-headers است، بنابراین در لاگ سایت مقصد قابل شناسایی است. آدرس و نتیجه در پایگاه دادهٔ ما ذخیره نمی‌شود؛ فقط مثل هر وب‌سایتی، لاگ عمومی درخواست‌های وب ممکن است ثبت شود.

چون بررسی از داخل ایران انجام می‌شود، نتیجه همان چیزی است که کاربر ایرانی می‌بیند. سایتی که دسترسی از ایران را مسدود کرده، ممکن است ۴۰۳ برگرداند و سایت خارجی‌ای که از ایران در دسترس نیست، با خطای timeout مواجه می‌شود. برای دیدن پاسخ از کشورهای دیگر، باید همین دستورهای curl را روی یک سرور خارجی اجرا کنید.

گواهی SSL در این ابزار عمداً اعتبارسنجی نمی‌شود تا حتی سایت‌هایی با گواهی منقضی یا نادرست هم هدرشان دیده شود. پس سبز بودن نتیجه به معنی سالم بودن گواهی نیست.

بازگشت به فهرست مطالب

محدودیت‌های ابزار و قدم بعدی برای سایت خودتان

این ابزار فقط پاسخ نهایی را نشان می‌دهد و هدرهای مراحل میانی ریدایرکت در جدول نمی‌آیند. بعضی سرورها درخواست HEAD را با ۴۰۵ رد می‌کنند یا هدرهای متفاوتی می‌فرستند؛ در این حالت از دستور curl با GET در بخش قبل استفاده کنید. سایتی که بیش از هشت ثانیه پاسخ ندهد خطا برمی‌گرداند و اگر زنجیرهٔ ریدایرکت بیش از سه مرحله باشد، ابزار در مرحلهٔ سوم می‌ایستد و همان پاسخ ریدایرکت را با یک هشدار نشان می‌دهد.

اگر سایت را خودتان میزبانی می‌کنید، روی سرور ابری ایران‌کلاد کنترل کامل nginx یا Apache را دارید و هر هدری را که لازم است اضافه می‌کنید. هزینه ساعتی و تومانی است و پلن mini از ۱٬۱۰۰ تومان در ساعت شروع می‌شود؛ مقایسهٔ همهٔ پلن‌ها در صفحهٔ قیمت‌ها آمده است. برای محدود کردن پورت‌های مدیریتی هم فایروال ابری در دسترس است.

بازگشت به فهرست مطالب بازگشت به ابتدای راهنما

پرسش و پاسخ،  ۱۰ پرسش

سؤالات متداول

پاسخ پرسش خود را پیدا نکردید؟ با پشتیبانی در تماس باشید.

ابزار بررسی هدر HTTP از کجا به سایت من درخواست می‌فرستد؟
درخواست از سرور ایران‌کلاد در دیتاسنتر تهران ارسال می‌شود، نه از مرورگر شما. یعنی نتیجه همان چیزی است که یک کاربر داخل ایران می‌بیند. در لاگ سایت مقصد، این درخواست با User-Agent به نام iranclaud-tools-headers دیده می‌شود.
آیا آدرس‌هایی که بررسی می‌کنم ذخیره می‌شوند؟
خیر. ابزار آدرس و نتیجه را در پایگاه داده ذخیره نمی‌کند و حساب کاربری هم لازم ندارد. مانند هر وب‌سایتی، لاگ عمومی درخواست‌های وب ممکن است ثبت شود، اما تاریخچه یا گزارشی از بررسی‌های شما نگهداری نمی‌شود.
چرا به‌جای GET از درخواست HEAD استفاده می‌شود؟
HEAD فقط هدرها را می‌خواهد و بدنهٔ صفحه را دانلود نمی‌کند؛ پس سریع‌تر است و پهنای باند سایت مقصد را مصرف نمی‌کند. اگر سرور شما HEAD را با کد ۴۰۵ رد کرد یا هدر متفاوتی فرستاد، با دستور curl و درخواست GET بررسی کنید.
امتیاز A تا F دقیقاً بر چه اساسی است؟
شش هدر امتیاز دارند: HSTS و CSP هرکدام ۲۵، X-Frame-Options و X-Content-Type-Options هرکدام ۱۵، Referrer-Policy و Permissions-Policy هرکدام ۱۰ امتیاز. ۹۰ به بالا A، ۷۵ به بالا B، ۶۰ به بالا C، ۴۰ به بالا D و کمتر از آن F است.
آیا امتیاز A یعنی سایت من امن است؟
نه لزوماً. ابزار فقط وجود هدرها را بررسی می‌کند و کیفیت سیاست CSP، آسیب‌پذیری‌های کد یا تنظیمات سرور را نمی‌سنجد. امتیاز بالا یعنی پایه‌های امنیتی سمت مرورگر رعایت شده است، نه اینکه سایت از همهٔ حملات مصون است.
چرا آی‌پی را به‌جای دامنه نمی‌پذیرد؟
برای جلوگیری از سوءاستفاده، فقط آدرس با نام دامنه پذیرفته می‌شود و دامنه‌هایی که به آدرس‌های شبکهٔ داخلی اشاره می‌کنند هم رد می‌شوند. اگر سرور شما هنوز دامنه ندارد، روی خود سرور با دستور curl -I هدرها را ببینید.
سایت من گواهی SSL معتبر ندارد؛ باز هم هدرها نمایش داده می‌شوند؟
بله. ابزار عمداً گواهی را اعتبارسنجی نمی‌کند تا هدرهای سایت با گواهی منقضی یا نادرست هم دیده شوند. به همین دلیل نتیجهٔ این ابزار دربارهٔ سلامت گواهی چیزی نمی‌گوید؛ برای آن از ابزار تست SSL استفاده کنید.
چرا سایت خارجی در این ابزار timeout می‌دهد ولی برای من باز می‌شود؟
چون بررسی از داخل ایران انجام می‌شود. اگر شما با اینترنت دیگری یا از خارج کشور سایت را باز می‌کنید، مسیر شما با مسیر سرور ما فرق دارد. همچنین بعضی سایت‌ها دسترسی از ایران را مسدود کرده‌اند و ۴۰۳ برمی‌گردانند.
چند ریدایرکت دنبال می‌شود و هدرهای مراحل میانی را هم می‌بینم؟
حداکثر سه ریدایرکت دنبال می‌شود و فقط هدرهای پاسخ نهایی در جدول نمایش داده می‌شوند. آدرس نهایی در بالای نتیجه آمده است و اگر با آدرس واردشده فرق کند، ریدایرکت صریح اعلام می‌شود. برای دیدن همهٔ مراحل از curl -sSL -D - استفاده کنید.
چطور هدرهای امنیتی را به سایت خودم اضافه کنم؟
در nginx با دستور add_header همراه با always و در Apache با Header always set. اگر از فریم‌ورکی مثل Laravel یا Django استفاده می‌کنید، می‌توانید در middleware هم هدر بگذارید؛ فقط مراقب باشید هدر دو بار و با دو مقدار متفاوت ارسال نشود.

پاسخ پرسش خود را پیدا نکردید؟ با پشتیبانی در تماس باشید.

سرور ابری

سرور ابری ایران‌کلاد در کمتر از ۶۰ ثانیه آماده می‌شود؛ با دیسک NVMe SSD، پورت اختصاصی ۱۰ گیگابیت و صورت‌حساب ساعتی تومانی، از ۱٬۱۰۰ تومان در ساعت.