یک تابع PHP بنویسید که رشتهٔ هدرهای خام HTTP را گرفته، با استفاده از preg_match_all تمامی توکن‌های Authorization از نوع Bearer را استخراج کرده و فقط توکن‌های با فرمت JWT (سه قسمت جداشده با نقطه و کاراکترهای Base64URL) و طول مناسب را برگرداند.

2.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:41

0.0

برای حل این مسئله در PHP از preg_match_all با یک الگوی مناسب استفاده کنید؛ مثلاً الگوی /Authorization:\s*Bearer\s*([A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+)/mi برای استخراج توکن‌های شبیه JWT کاربرد دارد. پس از استخراج، هر بخش را با تبدیل Base64URL به Base64 و base64_decode بررسی کنید تا مطمئن شوید قابل دیکد شدن است و طول‌های منطقی دارد؛ برای امنیت بیشتر طول بخش‌ها را محدود کرده و به یاد داشته باشید که اعتبارسنجی رمزنگاری (مثل بررسی امضای JWT با hash_hmac و hash_equals) فراتر از بررسی با regex است و باید جداگانه انجام شود.

توسط پژوهشگر در 221 روز قبل ساعت 01:41
دسته بندی ها: PHP PHP for beginner
nima در 221 روز قبل ساعت 12:22

برای استخراج توکن‌های Bearer از هدرهای خام HTTP با استفاده از preg_match_all، از یک الگوی دقیق و انعطاف‌پذیر استفاده کنید تا چندین header را پشتیبانی کند. توصیه می‌شود regex تنها فرمت JWT را تشخیص دهد (سه بخش با نقطه)، و سپس با تبدیل Base64URL به Base64 و base64_decode صحت رمزگشایی و طول مناسب را بررسی کنید. به امنیت بیشتر توجه داشته باشید: اعتبارسنجی امضا و بررسی منقضی بودن باید جداگانه با استفاده از کلید و کتابخانه‌های JWT انجام شود، نه تنها با regex. برای پایداری و کارایی، بخش‌های طولانی را محدود کرده و در نهایت از کتابخانه‌های معتبر JWT برای تولید و اعتبارسنجی استفاده کنید.

گزارش

1 پاسخ

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

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