مقدمه
سربرگهای پاسخ HTTP جفتهای نام-مقدار رشتهای هستند که از سمت سرور با محتوایی که درخواست کردهاید، برگردانده میشوند. اینها به طور معمول برای انتقال اطلاعات فنی مانند نحوهی ذخیرهسازی محتوا توسط مرورگر، نوع محتوا، نرمافزاری که در سرور اجرا میشود و بسیاری موارد دیگر استفاده میشوند. اخیراً، سربرگهای پاسخ HTTP بهطور فزایندهای برای انتقال سیاستهای امنیتی به مرورگر استفاده میشوند. با ارسال سیاستهای امنیتی به کاربر به این شیوه، میزبانها میتوانند تجربهی مرور ایمنتری را برای بازدیدکنندگان خود ارائه دهند و همچنین خطر برای همه طرفهای مرتبط را کاهش دهند. بیایید به سربرگهای مبتنی بر امنیت بیشتری نگاهی بیندازیم.
سربرگهای اضافی
گام اول در تقویت سربرگهای پاسخ HTTP شما، نگاه کردن به سربرگهای اضافی است که میتوانید از آنها استفاده کنید تا سایت خود را ایمنتر کنید. در زیر توضیح داده شده است، این سربرگها به مرورگر اطلاعات بیشتری درباره نحوه رفتار کردن شما درباره سایت میدهند. آنها میتوانند برای ارسال سیاستهای امنیتی، تنظیم گزینههای پیکربندی و غیرفعال کردن ویژگیهای مرورگری که نمیخواهید برای سایت خود فعال شود، استفاده شوند. بعد از راهاندازی هر سربرگ، آن را با استفاده از SecurityHeaders.io بررسی کنید.
Content Security Policy – سیاست امنیت محتوا (CSP)
سربرگ CSP به شما اجازه میدهد تا یک لیست سفید از منابع تأییدشده برای محتوای سایت خود تعریف کنید. با محدود کردن منابعی که یک مرورگر میتواند برای سایت شما بارگیری کند، مانند فایلهای js و css، CSP میتواند به عنوان یک پاسخ مؤثر به حملات XSS عمل کند. در اینجا یک سیاست ابتدایی برای اجبار TLS بر روی همه منابع و جلوگیری از هشدارهای محتوای مخلوط (Mixed-Content) آورده شده است.
Nginx:
add_header Content-Security-Policy "default-src https: data: 'unsafe-inline' 'unsafe-eval'" always;
Apache:
Header always set Content-Security-Policy "default-src https: data: 'unsafe-inline' 'unsafe-eval'"
IIS:
در سرورهای ویندوزی، IIS Manager را باز کنید و بر روی سایت مورد نظر کلیک کنید و سپس گزینه HTTP Response Headers را انتخاب کنید.
در پنل “Actions” بر روی دکمه “Add” کلیک کنید و سپس جزئیات سربرگ را وارد کنید.
CSP دارای ویژگی متعددی است که من در بالا شرح دادهام و همچنین میتوانید از تحلیلگر CSP و سازنده CSP در report-uri.io استفاده کنید. این ابزاربه شما کمک کنند تا یک سیاست سفارشی برای سایت خود ایجاد کنید.
HTTP Strict Transport Security – امنیت انتقال سختگیرانه HTTPS
این سربرگ به سرور اجازه میدهد تا مرورگرها را به اتصال امن HTTPS به جای HTTP برای درخواستهای آینده به وبسایت الزام کند. این اقدام میتواند از حملات MITM (Man-in-the-Middle) جلوگیری کند و امنیت ارتباطات را تأمین کند. بهترین راه برای اعمال آن این است که سرور این سربرگ را به همراه سیاستهای امنیتی مناسبی تنظیم کند تا مرورگرها برای مدت زمان مشخصی (مثلا یک سال) تنها از اتصال HTTPS استفاده کنند و از هیچگونه سویه اینترنتی تلاش برای از پایین آوردن اتصال HTTPS جلوگیری شود.
Nginx:
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains" always;
Apache:
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
IIS:
پینکردن کلید عمومی HTTP (HTTP Public Key Pinning)
فهم درستی از اهمیت امنیت در ارتباطات اینترنتی بسیار اساسی است. اما امروزه، با افزایش تهدیدات امنیتی، ابزارهای جدیدی نیز برای تقویت امنیت ارتباطات وب ارائه شدهاند. یکی از این ابزارها، سیاست پینکردن کلیدهای عمومی (HPKP) است که به وبسایتها این امکان را میدهد که مرورگرها را مجبور کنند فقط با کلیدهایی که توسط خودشان تعیین شدهاند، ارتباط برقرار کنند. این برنامههای امنیتی میتوانند از تلاشهایی که به هدف تقلب و تزویر کلیدها انجام میشوند، جلوگیری کنند و سطح اعتماد کاربران به ارتباطات وب را افزایش دهند.
یکی دیگر از ابزارهای امنیتی موجود برای تقویت امنیت ارتباطات وب، فناوری HSTS (HTTP Strict Transport Security) است که به مرورگرها میگوید که باید همیشه از اتصال HTTPS استفاده کنند، به جای HTTP غیرامنیتی. این تکنولوژی باعث کاهش موارد ممکن حمله MITM (Man-in-the-Middle) میشود و از تهدیدات امنیتی حمایت میکند.
هرچند که امنیت این تکنولوژیها بسیار حیاتی است، اما باید به دقت از آنها استفاده شود و نکات امنیتی آنها را رعایت کرد. بهعنوان مثال، در مورد HPKP، اگر تنظیمات آن بهطور نادرست انجام شود، ممکن است به این امر منجر شود که وبسایت شما برای کاربران غیرقابل دسترسی باشد. در نتیجه، همیشه مهم است که قبل از استفاده از این ابزارها، به دقت مطالعه و آموزش در زمینه استفاده صحیح و امنیتی آنها بپردازید و از راهنماها و منابع معتبر استفاده کنید.
Nginx:
add_header Public-Key-Pins "pin-sha256='X3pGTSOuJeEVw989IJ/cEtXUEmy52zs1TZQrU06KUKg='; pin-sha256='MHJYVThihUrJcxW6wcqyOISTXIsInsdj3xK8QrZbHec='; pin-sha256='isi41AizREkLvvft0IRW4u3XMFR2Yg7bvrF7padyCJg='; includeSubdomains; max-age=2592000" always;
Apache:
Header always set Public-Key-Pins "pin-sha256='X3pGTSOuJeEVw989IJ/cEtXUEmy52zs1TZQrU06KUKg='; pin-sha256='MHJYVThihUrJcxW6wcqyOISTXIsInsdj3xK8QrZbHec='; pin-sha256='isi41AizREkLvvft0IRW4u3XMFR2Yg7bvrF7padyCJg='; includeSubdomains; max-age=2592000"
IIS:
X-Frame-Options
سربرگ X-Frame-Options (RFC)، یا همان سربرگ XFO، بازدیدکنندگان شما را در برابر حملات کلیکجکینگ محافظت میکند. یک حملهکننده میتواند یک فریم (iframe) را در وبسایت خود بارگیری کرده و وبسایت شما را به عنوان منبع تنظیم کند، که کاری بسیار آسان است. با استفاده از CSS ماهرانه، میتوانند وبسایت شما را در پسزمینه پنهان کنند و اشکالهایی با نمایی واقعی ایجاد کنند. وقتی بازدیدکنندگان شما روی لینکی که فکر میکنند بیخطر است کلیک میکنند، در واقع روی لینکهایی در وبسایت شما در پسزمینه کلیک میکنند. این ممکن است به نظر نیاید که این امر اشکالی داشته باشد تا زمانی که متوجه شویم مرورگر این درخواستها را در محیط کاربر اجرا میکند، که ممکن است شامل ورود و احراز هویت کاربر به وبسایت شما شود!
سربرگ X-Frame-Options به مرورگرها اجازه میدهد که بدانند آیا محتوای وبسایت شما میتواند در یک فریم داخلی یک صفحه وب دیگر نمایش داده شود یا خیر. مقادیر معتبر شامل DENY به معنای اینکه وبسایت شما نمیتواند در فریمها قرار گیرد، SAMEORIGIN که به شما اجازه میدهد وبسایت خود را فریم کنید یا ALLOW-FROM https://zagrio.com/ که به شما اجازه میدهد وبسایتهایی را که مجاز به فریم کردن وبسایت خود هستند مشخص کنید.
این سربرگ یکی از ابزارهای امنیتی مهم برای محافظت از وبسایت شما در برابر حملات امنیتی است.
Nginx:
add_header X-Frame-Options "SAMEORIGIN" always;
Apache:
Header always set X-Frame-Options "SAMEORIGIN"
IIS:
X-XSS-Protection
این سربرگ برای پیکربندی حفاظت از XSS (Cross-Site Scripting) داخلی که در مرورگرهای اینترنت اکسپلورر، کروم و سافاری (وبکیت) وجود دارد، استفاده میشود. تنظیمات معتبر برای این سربرگ شامل 0 که حفاظت را غیرفعال میکند، 1 که حفاظت را فعال میکند و 1؛ mode=block که به مرورگر میگوید اگر یک حمله را شناسایی کند، پاسخ را مسدود کند به جای اجازه دادن به اجرای اسکریپت است. این سربرگ به مرورگر اجازه میدهد تا در برابر حملات XSS (Cross-Site Scripting) محافظت شود. در حملات XSS، حملهکننده کدهای جاوااسکریپت مخرب را به وبسایت شما تزریق میکند تا اطلاعات کاربران را بدزدد یا به مخاطبان مورد نظر خود هدایت کند. با فعالسازی این سربرگ و تنظیم مقدار آن به “1”، مرورگرها میتوانند به طور خودکار اقداماتی را انجام دهند تا از حملات XSS جلوگیری کنند. این امر به افزایش امنیت وبسایت شما کمک میکند.
Nginx:
add_header X-Xss-Protection "1; mode=block" always;
Apache:
Header always set X-Xss-Protection "1; mode=block"
IIS:
X-Content-Type-Options
این سربرگ برای کنترل نحوهی تفسیر محتوای فایلها توسط مرورگر استفاده میشود. مقادیر معتبر برای این سربرگ عبارتند از “nosniff” که به مرورگر میگوید که نوع محتوای فایل را از هدر Content-Type استخراج کند و از فایلهایی که نوع محتوایشان مشخص نیست استفاده نکند. این سربرگ از mime-sniffing توسط Google Chrome و اینترنت اکسپلورر برای تعیین نوع محتوای پاسخ، مستقیماً به دور از آنچه توسط سرور اعلام شده است، جلوگیری میکند.
Nginx:
add_header X-Content-Type-Options "nosniff" always;
Apache:
Header always set X-Xss-Protection "1; mode=block"
IIS:
حذف سربرگها
گام بعدی در تقویت سربرگهای شما نگاه کردن به سربرگهایی است که میتوانید آنها را حذف کنید تا مقدار اطلاعاتی که دربارهی سرور شما و نرمافزارهایی که بر روی آن اجرا میشوند فاش میشود، کاهش یابد. سرورها به طور معمول اطلاعاتی را که نرمافزاری که در آن اجرا میشود، چه نسخههایی از نرمافزار در آن وجود دارد و چه چارچوبهایی آن را پشتیبانی میکنند، فاش میکنند. کاهش میزان اطلاعاتی که فاش میکنید همیشه مزیتی است. من برخی از رایجترین سربرگها را بررسی کردم اما شما همیشه میتوانید سربرگهای پاسخ HTTP سایت خود را بررسی کنید تا ببینید آیا هنوز سربرگهای دیگری وجود دارد که میتوانید آنها را با استفاده از ابزارهایی که در بالا اعلام شد، بررسی و حذف کنید.
سربرگ Server
سربرگ Server یکی از رایجترین سربرگهایی است که احتمالاً در یک وبسایت مشاهده خواهید کرد. در RFC تعریف شده است:
سربرگ پاسخ Server شامل اطلاعاتی درباره نرمافزار استفاده شده توسط سرور منبع برای پردازش درخواست است. این فیلد میتواند شامل چندین نشانه محصول (بخش 3.8) و توضیحاتی درباره سرور و هر زیرمحصول مهم باشد. نشانههای محصول به ترتیب اهمیت برای شناسایی برنامه فهرست شدهاند.
این سربرگ طراحی شده است تا اطلاعاتی درباره برنامه وبسرور خاصی که بر روی سرور اجرا میشود، ارائه دهد، و مقادیر رایج به مایکروسافت IIS، NginX یا Apache اشاره میکنند. با این حال، RFC در ادامه بیان می کند:
توجه: فاش کردن نسخه دقیق نرمافزار سرور ممکن است سرور را به حملات در برابر نرمافزارهایی که به ثقل سوراخهای امنیتی شناخته شده اند، آسیبپذیرتر کند. ارائهدهندگان سرور تشویق میشوند که این فیلد را به یک گزینه قابل پیکربندی تبدیل کنند.
با این حال، بسیاری از تامین کنندگان، این کار را آنقدر آسان نمیکنند تا امکان تغییر مقدار سربرگ یا در ایدهآل، حذف آن را فراهم کنند.
ادامه این مقاله به زودی منتشر خواهد شد …
بدون دیدگاه