presetهای Spatie Laravel CSP 3: سیاست امنیتی بدون لیست دامنههای طولانی
خلاصهٔ کاملتر
Shawn Hooper تو این پست از قابلیت preset تو نسخهٔ ۳ پکیج laravel-csp از Spatie میگه. CSP یا Content Security Policy یعنی یه هدر که به مرورگر میگه چه منابعی (اسکریپت، عکس، استایل، iframe) از کجا اجازهٔ لود دارن و بقیه رو بلاک میکنه. نویسنده میگه این ابزار با اینکه جلوی حملههایی مثل XSS و clickjacking رو میگیره، معمولاً نادیده گرفته میشه.
به گفتهٔ نویسنده، بزرگترین دردسرش این بوده که بعضی سرویسهای third-party از کلی دامنهٔ مختلف استفاده میکنن و HubSpot از همه بدتره. قبلاً برای HubSpot باید حدود سی تا دامنه رو با directiveهای مختلف مثل Directive::SCRIPT، Directive::IMG، Directive::CONNECT و Directive::FRAME دستی تو policy اضافه میکرد؛ از *.hubspot.com و *.hsforms.net گرفته تا پنجتا دامنهٔ hubspotusercontent.
نسخهٔ ۳ که اوایل امسال منتشر شد، برای سرویسهای رایج preset آماده داره. یعنی بهجای لیست دامنهها، فقط اسم preset رو تو config/csp.php مینویسی. نویسنده کنار presetهای HubSpot و PostHog و Bunny Fonts، یه کلاس policy مخصوص اپ خودش رو هم گذاشته برای منابعی که preset ندارن:
'presets' => [
\Spatie\Csp\Presets\HubSpot::class,
\Spatie\Csp\Presets\Posthog::class,
\Spatie\Csp\Presets\BunnyFonts::class,
App\Support\AppCspPolicy::class,
],یعنی کانفیگ کوتاهتر میشه و اگه یه سرویس دامنهٔ جدید اضافه کنه، نگهداری لیستش با preset هست نه با تو. لیست presetها تو پوشهٔ src/Presets ریپوی پکیج هست و داره بیشتر میشه، و هر کسی میتونه preset خودش رو هم بهش اضافه کنه.
نکات کلیدی:
- قابلیت preset از نسخهٔ ۳ پکیج spatie/laravel-csp اضافه شده.
- presetها تو آرایهٔ presets فایل config/csp.php تعریف میشن.
- preset مربوط به HubSpot جای حدود سی دامنه و چندین directive رو با یه خط میگیره.
- presetهایی مثل HubSpot، PostHog و Bunny Fonts آمادهن و میشه کنارشون یه policy سفارشی هم گذاشت.
- لیست presetها رو به رشده و کامیونیتی میتونه preset جدید اضافه کنه.




