رفتن به محتوا
cloudhostمستندات
محصولات

هدرهای امنیتی و فشرده‌سازی

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

پیش‌فرض‌ها#

هدرمقدار
Strict-Transport-Securitymax-age=31536000 (یک سال)
X-Content-Type-Optionsnosniff
Referrer-Policystrict-origin-when-cross-origin
X-Frame-OptionsSAMEORIGIN

هدری که برنامهٔ شما خودش بگذارد، یا قاعدهٔ _headers بگذارد یا بردارد، همیشه برنده است؛ ما چیزی را بازنویسی نمی‌کنیم. Content-Security-Policy تا وقتی خودتان تنظیم نکنید اضافه نمی‌شود، چون یک سیاست پیش‌فرض بسیاری از برنامه‌ها را خراب می‌کرد. هدرهایی که نشان می‌دهند سایت روی چه نرم‌افزاری اجرا می‌شود همیشه حذف می‌شوند.

پاسخ‌های متن، JSON، JavaScript، CSS، SVG، XML و WebAssembly بزرگ‌تر از ۱ کیلوبایت (KiB) به چیزی که مرورگر می‌پذیرد فشرده می‌شوند: Brotli، وگرنه gzip. پاسخی که از قبل فشرده است، یک بازهٔ بایتی (range) و پاسخی با Cache-Control: no-transform دست نمی‌خورد. پاسخ کوچک‌تر یعنی ترافیک خروجی کمتر روی صورت‌حساب شما.

تنظیم‌ها#

تنظیممعنی و پیش‌فرض
security_headers · --headers on|offروشن (پیش‌فرض) یا خاموش: هدرهای جدول بالا را به پاسخ‌هایی که خودشان ندارند اضافه می‌کند. خاموش یعنی هیچ‌کدام اضافه نشود (هدرهای فاش‌کنندهٔ نرم‌افزار باز هم حذف می‌شوند).
hsts_subdomains · --hsts-subdomains on|offخاموش (پیش‌فرض). روشن یعنی includeSubDomains به Strict-Transport-Security اضافه شود و زیردامنه‌ها هم فقط با HTTPS باز شوند.
frame · --frame sameorigin|deny|offچه کسی می‌تواند سایت را در یک iframe نشان دهد. sameorigin (پیش‌فرض) فقط خود سایت، deny هیچ‌کس، off یعنی X-Frame-Options اضافه نشود.
csp · --csp "<policy>"|noneیک Content-Security-Policy در یک خط، تا ۴۰۹۶ نویسه، که به پاسخ‌های بدون آن اضافه می‌شود. پیش‌فرض: هیچ. در API با null و در خط فرمان با none برداشته می‌شود.
compression · --compression auto|offauto (پیش‌فرض) فشرده‌سازی بالا؛ off پاسخ‌ها را همان‌طور که هستند می‌فرستد.

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

عوض کردن#

cloudhost delivery show --project shop --app my-site
cloudhost delivery set --project shop --app my-site --frame deny --csp "default-src 'self'; img-src https:"
cloudhost delivery set --project shop --app my-site --hsts-subdomains on --compression off
cloudhost delivery set --project shop --app my-site --csp none

در خط فرمان delivery show تنظیم فعلی و هدرهایی را که اضافه می‌شوند نشان می‌دهد و delivery set فقط تنظیم‌هایی را که بدهید عوض می‌کند. --app نام برنامه یا فانکشن است (یا <project>/<name>)؛ بدون آن، همان که در فایل پروژه آمده. مسیر API برای فانکشن …/functions/<name>/delivery است.

با cloudhost deploy بخش [delivery] فایل پروژه روی تولید اعمال می‌شود؛ استقرار پیش‌نمایش تنظیم‌ها را همان‌طور که هست می‌گذارد. مقدار نامعتبر پاسخ 400 می‌گیرد، با یکی از کدهای delivery_bad_body، delivery_bad_frame، delivery_bad_compression یا delivery_bad_csp.