با استفاده از 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 شوند خودداری نمایید.

توسط پژوهشگر در 201 روز قبل ساعت 03:14
دسته بندی ها: PHP PHP for beginner
nima در 201 روز قبل ساعت 07:03

استفاده از preg_match_all برای استخراج توکن‌های Bearer از هدرهای HTTP کارآمد است، اما باید الگوی منظم امن و محدود باشد تا از خطرات مانند ReDoS جلوگیری شود. برای JWT، توکن را با یک گروه Capture محدود کنید تا مقدار توکن استخراج شود و با استفاده از گزینه‌های i و m جستجو را بی‌تفاوت نسبت به حروف و چندخطی کنید. پس از استخراج، اعتبارسنجی کامل JWT را با کتابخانه‌های معتبر مانند firebase/php-jwt انجام دهید تا امضا و ادعای توکن را بررسی کند و تنها به فرمت توکن بسنده نکنید. همچنین طول و کاراکترهای مجاز توکن را محدود کرده و از استفاده از الگوهای بسیار گشاد که می‌توانند آسیب‌پذیری‌های امنیتی ایجاد کنند پرهیز کنید.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری