Security Headers: ابزاری برای اِسکن هِدِرهای ریسپانس وب‌سایت‌ها

Security Headers: ابزاری برای اِسکن هِدِرهای ریسپانس وب‌سایت‌ها

اینترنت برای انتقال اطلاعات از پروتکل HTTP که بر اساس مدل کلاینت-سرور است، استفاده می‌کند؛ بدین شکل که یک کلاینت، مثل مرورگر گوگل کروم یا فایرفاکس، برای دسترسی به منابعی خاص همچون یک تصویر یا یک استایل‌شیت، یک ریکوئست (درخواست) به سایتی همچون سکان آکادمی ارسال می‌کند و وب‌سرور این سایت نیز یک ریسپانس (پاسخ) که شامل منابع درخواست‌شده در ریکوئست است را به کلاینت برمی‌گردانده و کلاینت نیز نتیجهٔ نهایی را در قالب فرمتی خاص، که معمولاً HTML است، برای اِندیوزر (کاربر نهایی) نمایش می‌دهد.

به طور کلی، پیام‌های ریکوئست و ریسپانس برای انتقال اطلاعات از یک فرمت مشخص و خاص استفاده می‌کنند که شامل موارد زیر است:

- خطِ شروع
- هِدِر (که البته می‌تواند خالی باشد.)
- یک خطِ خالی (برای تعیین انتهای قسمت هِدِر)
- متن پیام (که این متن یا بدنهٔ پیام نیز می‌تواند خالی باشد.)

آشنایی بیشتر با HTTP Headers
هِدِرهای HTTP به کلاینت و سرور اجازه می‌دهند تا بتوانند اطلاعاتی اضافی را به همراه ریکوئست‌ها ارسال کرده و در کنار ریسپانس‌ها دریافت نمایند که این اطلاعات اضافی می‌تواند شامل طول متن پیام، نوع سیستم‌عامل و مرورگر کلاینت، سرور، صفحهٔ درخواست شده و … باشد. هر هِدِر شامل مجموعه‌ای از فیلدها است که هر فیلد شامل یک نام و مقدار/مقدارهایی است که توسط یک علامت کولن (:) از یکدیگر جدا می‌شوند.

بعضی از فیلدها مخصوص ریکوئست بوده و دیگر هم فقط می‌توانند در ریسپانس مورد استفاده قرار گیرند ولی در عین حال برخی هم هستند که می‌توانند هم در ریکوئست و هم در ریسپانس به کار بروند که به‌اصلاح به آن‌ها جِنرال هِدِرز می‌گویند (به عنوان مثال، فیلد cache-control یک جنرال هِدِر است که دستوراتی را مشخص می‌کند که باید توسط همهٔ سیستم‌های کَشینگ که سیستمی برای ذخیره‌سازی نتیجهٔ عملیات پرتکرار برای جلوگیری از محاسبه مجدد آن‌ها است، رعایت شود. مثلاً مقدار no-store برای فیلد cache-control، حاکی از آن است که کَش نباید چیزی را درباره ریکوئست کلاینت یا ریسپانس سرور، ذخیره کند.)

معرفی سرویس آنالیزگر Security Headers
Security Headers سرویسی است که هِدِرهای ریسپانس سایت شما را آنالیز می‌کند. سکیوریتی‌هِدِرز علاوه بر آنالیز هِدِرهای ریسپانس، دارای سیستم رتبه‌بندی نتایج نیز هست بدین معنی که پس از بررسی هِدِرهای ریسپانس یک سایت، به آن‌ امتیازی از A تا F می‌دهد. مثلاً اگر در هِدِر ریسپانس سایتی مقدار فیلد X-XSS-Protection که برای محافظت در مقابل حملات XSS (اینجِکت یا تزریق کدهای مخرب در سمت کلاینت به وب‌سایت‌های آسیب‌پذیر) است، برابر با صفر باشد، نکته‌ای منفی به‌ حساب آمده و باعث پایین آمدن امتیاز سایت خواهد شد.

این سرویس توسط Scott Helme که یک مشاور امنیت اطلاعات در بریتانیا است، با زبان PHP و فریمورک CodeIgniter توسعه داده شده است. Scott پس از آنکه هِدِرهای Content Security Policy (فیلدی برای کشف و کاهش انواع حملات) و HTTP Strict Transport Security (فیلدی برای ارسال همهٔ ریسپانس‌ها از طریق HTTPS به‌ جای استفاده از HTTP که همه چیز را به‌ صورت یک متن ساده ارسال می‌کند.) را در وب‌سایت شخصی خودش استفاده کرد، به‌ دنبال راهی سریع و آسان بود تا وب‌سایت‌های دیگری را نیز که از این هِدِرها استفاده می‌کنند بررسی کند. همین موضوع باعث شد که ایدهٔ توسعهٔ وب‌سایت سکیوریتی‌هِدِرز به ذهنش برسد که امروزه به عنوان یک ابزار مفید برای استفادهٔ دیگر دولوپرها به صورت کاملاً رایگان تحت لیسانس CC BY-SA 4.0 می‌باشد.

آنالیزهایی که این سرویس بر روی هِدِرهای ریسپانس انجام می‌دهد، سطح بالایی از امنیت را ارائه می‌دهد که در نظر گرفتن این موارد برای امنیت سایت‌ها، بسیار حائز اهمیت است. خوشبختانه سکیوریتی‌هِدِرز نه‌ تنها سازوکاری ساده برای ارزیابی هِدِرها در اختیار کاربران قرار می‌دهد، بلکه چگونگی فیکس کردن آن‌ها را نیز بیان می‌کند که این می‌تواند کمک بزرگی به برنامه‌نویسان برای استفادهٔ مناسب از هِدِرهای مربوط به امنیت نماید.