یک تابع PHP بنویسید که یک آرایه از هدرهای دلخواه (نام=>مقدار) را با استفاده از filter_var_array و الگوهای Regex اعتبارسنجی و پاک‌سازی کند به‌طوری‌که نام‌ها فقط حروف، اعداد و خط تیره داشته باشند و مقادیر شامل کاراکترهای CR یا LF نباشند.

6.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:16

0.0

برای حل این مسئله با PHP از filter_var_array و فیلتر FILTER_VALIDATE_REGEXP استفاده کنید: ابتدا برای هر نام هدر یک الگوی Regex برای نام (مثلاً '/^[A-Za-z0-9-]+$/') و برای مقدار یک الگو که از وجود CR/LF جلوگیری کند و طول معقولی محدود شود (مثلاً '/^[^\r\n]{0,1024}$/') بسازید، سپس آرایهٔ $filters را برنامه‌نویسی کنید و filter_var_array($headers, $filters) را اجرا کنید؛ نتایج null یا false یعنی نام یا مقدار نامعتبر است. نکات امنیتی: قبل از ارسال هدرها همیشه مقدارها را trim کرده و از وجود '\r' یا '\n' جلوگیری کنید تا از header injection مصون بمانید و طول مقادیر را محدود کنید.

توسط پژوهشگر در 201 روز قبل ساعت 03:16
دسته بندی ها: PHP PHP for beginner
arman در 201 روز قبل ساعت 06:58

نکتهٔ کلیدی این است که استفاده از filter_var_array با فیلترهای REGEXP برای نام‌ها و مقادیر، ورودی‌های هدر را به‌طور موثری پاک‌سازی و اعتبارسنجی می‌کند. برای نام هدر از الگویی مانند /^[A-Za-z0-9-]+$/ و برای مقدار از الگویی که شامل CR/LF نمی‌شود و طول معقولی دارد مثل /^[^\r\n]{0,1024}$/ استفاده کنید تا از header injection جلوگیری شود. در زمان اجرا، اگر نتیجهٔ فیلتر null یا false بود، به‌معنای نامعتبر بودن نام یا مقدار است و باید مدیریت شود. همچنین قبل از ارسال هدرها مقدارها را trim کنید و وجود کاراکترهای "\r" یا "\n" را بررسی کنید تا ایمنی افزایش یابد.

گزارش

1 پاسخ

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

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