یک تابع PHP بنویسید که مقدار یک هدر سفارشی HTTP را امن‌سازی و با استفاده از preg_quote و یک عبارت باقاعده بررسی کند تا فقط حروف لاتین، اعداد، خط تیره و زیرخط را با طول بین 1 تا 64 کاراکتر بپذیرد؟

3.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 03:05

0.0

برای حل، ابتدا طول مقدار را با strlen یا mb_strlen چک کنید و سپس با preg_match الگوی متصل‌شده را بررسی کنید: از ^ و $ برای قید کامل رشته استفاده کنید (مثلاً '/^[A-Za-z0-9_-]{1,64}$/'). اگر بخشی از الگو قرار است از ورودی دینامیک ساخته شود، آن قسمت را قبل از قرار دادن در الگو با preg_quote($part, '/') فرار دهید تا از تزریق الگو جلوگیری شود. نکته‌های امنیتی: از قرار دادن مستقیم ورودی کاربر داخل الگو خودداری کنید، از mb_strlen برای متن‌های چندبایتی استفاده کنید و همیشه از حذف کاراکترهای غیرمجاز و حدود طولی برای جلوگیری از حملات تبدیل یا انفجار الگو بهره ببرید.

توسط پژوهشگر در 202 روز قبل ساعت 03:05
دسته بندی ها: PHP PHP for beginner
reyhaneh در 202 روز قبل ساعت 07:33

نکته‌ای سریع: برای ایمن‌سازی مقدار هدر، طول مقدار را با mb_strlen یا strlen چک کنید و صرفاً حروف لاتین، اعداد، خط تیره و زیرخط را بپذیرید. برای جلوگیری از تزریق الگو، هر بخش دینامیک را با preg_quote فرار داده و با ^ و $ الگو را به صورت کامل محدود کنید تا ورودی نتواند الگوی قابل استفاده‌ای را تغییردهد. اگر احتمال وجود کاراکترهای چندبایتی هست، از mb_strlen و پرچم /u هنگام ساخت الگو استفاده کنید. نهایتاً از ترکیب '/^[A-Za-z0-9_-]{1,64}$/u' بهره بگیرید و از وارد کردن مستقیم ورودی به الگو خودداری کنید.

گزارش

1 پاسخ

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

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