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