هدرهای امنیتی و فشردهسازی
هر پاسخ برنامه یا فانکشن شما از همان استقرار اول چند هدر امنیتی دارد و متنها فشرده میشوند، بدون هیچ تنظیمی و روی همهٔ طرحها. اینجا میبینید هر کدام چه میکند و چطور عوضش میکنید.
پیشفرضها#
| هدر | مقدار |
|---|---|
Strict-Transport-Security | max-age=31536000 (یک سال) |
X-Content-Type-Options | nosniff |
Referrer-Policy | strict-origin-when-cross-origin |
X-Frame-Options | SAMEORIGIN |
هدری که برنامهٔ شما خودش بگذارد، یا قاعدهٔ _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|off | auto (پیشفرض) فشردهسازی بالا؛ 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.