با استفاده از PHP و تابع preg_match_all، چگونه میتوانید از متن هدرهای HTTP تمام توکنهای Bearer موجود در فیلد Authorization را استخراج و قالب آنها (مثلاً JWT) را اعتبارسنجی کنید؟
8.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:14 0.0
با استفاده از تابع preg_match_all یک الگوی منظم بنویسید که خطوط Authorization: Bearer ... را در متن هدر پیدا کند و مقدار توکن را در گروه کپچر بگیرد؛ برای مثال برای JWT میتوانید یک الگوی ساده مثل ([A-Za-z0-9\-_]+\.[A-Za-z0-9\-_]+\.[A-Za-z0-9\-_]+) استفاده کنید. در PHP از فلگهای i و m برای عدم حساسیت به حروف و بررسی چندخطی استفاده کنید، طول و کاراکترهای مجاز توکن را نیز چک کنید و برای اعتبارسنجی کاملتر از کتابخانههای JWT یا عملیات رمزنگاری مناسب استفاده کنید؛ از نوشتن الگوهای بسیار گسترده که ممکن است منجر به ReDoS شوند خودداری نمایید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
استفاده از preg_match_all برای استخراج توکنهای Bearer از هدرهای HTTP کارآمد است، اما باید الگوی منظم امن و محدود باشد تا از خطرات مانند ReDoS جلوگیری شود. برای JWT، توکن را با یک گروه Capture محدود کنید تا مقدار توکن استخراج شود و با استفاده از گزینههای i و m جستجو را بیتفاوت نسبت به حروف و چندخطی کنید. پس از استخراج، اعتبارسنجی کامل JWT را با کتابخانههای معتبر مانند firebase/php-jwt انجام دهید تا امضا و ادعای توکن را بررسی کند و تنها به فرمت توکن بسنده نکنید. همچنین طول و کاراکترهای مجاز توکن را محدود کرده و از استفاده از الگوهای بسیار گشاد که میتوانند آسیبپذیریهای امنیتی ایجاد کنند پرهیز کنید.
گزارش