25
0
ENV Laravel

نکته امنیتی: فقط از env() در فایل های Config استفاده کنید

1 دقیقه

شاید وسوسه انگیز باشد که در خارج از فایل های کانفیگ از env() استفاده کنید اما ممکن است که این روش باگ ریزی پیدا شوند و برنامه را در معرض خطر قرار دهید.

در لاراول 11 تعداد فایل های پیکربندی پیش فرض را کاهش می دهد و گزینه های بیشتری را مستقیما به فایل .env منتقل می کند.

اگر نیاز به استفاده از مقادیر موجود در فایل خود دارید، باید مطمئن شوید که فقط از تابع env() در فایل های config/*.php خود استفاده می کنید!

php artisan config:cache

این می تواند همه چیز را به طور کامل خراب کند، باگ های ریزی ایجاد کند یا حتی برنامه شما را در معرض خطر قرار دهد… این کد را در نظر بگیرید:

if ($request->token === env('APP_API_TOKEN')) {
    // do sensitive stuff
}

اگر کانفیگ کش شود و کاربر یک رشته خالی را ارسال کند، لاراول آن را به null ، تبدیل می کند که منجر به null === null، می شود و توکن به طور کامل دور زده می شود!

این مقایسه باید با استفاده از روش hash_equals () به جای برابرهای دقیق (===) انجام شود. نه تنها hash_equals () در برابر حملات زمان‌بندی محافظت می‌کند، بلکه به ورودی‌های string نیز نیاز دارد که بهره‌برداری از آن را سخت‌تر می‌کند.

پیوند منابع
لاراول (Laravel) آگوست / 18 / 2024 174

دیدگاه شما