یک تابع در PHP بنویسید که با استفاده از preg_filter مقادیر هدرهای HTTP را پاکسازی و اعتبارسنجی کند تا از حملات header injection جلوگیری شود؟
6.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 03:01 0.0
برای حل این مسئله از PHP و مخصوصاً تابع preg_filter استفاده کنید؛ ابتدا با یک الگوی whitelist فقط کاراکترهای مجاز در مقدار هدر (مثلاً حروف، ارقام، فاصله و علائم مجاز بدون CR/LF یا کاراکترهای کنترل) را اجازه داده و همهٔ CRLF یا دنبالههای رمزگذاریشده مانند %0a/%0d را با preg_filter حذف یا جایگزین کنید. برای نام هدر نیز از یک regex ساده مثل /^[A-Za-z0-9-]+$/ استفاده کنید و در نهایت قبل از ارسال header() مقدار پاکشده را مجدداً بررسی کنید. نکات: از رویکرد whitelist بهجای blacklist استفاده کنید، از anchors در regex بهره ببرید، ورودیهای کاربر را هرگز مستقیماً در نام هدر نریزید و برای موارد حساس امنیتی در کنار پاکسازی، از توکن/امضا (مثلاً HMAC) برای اعتبارسنجی محتوا هم استفاده کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
استفاده از preg_filter برای پاکسازی مقادیر هدرها ایده خوبی است، اما باید ورودیها را قبل از ارسال به header() با دقت اعتبارسنجی کرد. از رویکرد whitelist و استفاده از regexهای anchored استفاده کنید تا تنها کاراکترهای مجاز (حروف، اعداد، فاصله و علائم مجاز بدون CRLF یا کاراکترهای کنترل) باقی بمانند و هر دنباله غیرمجاز مانند %0a/%0d را حذف کنید. نام هدر را با regex سادهای مانند /^[A-Za-z0-9-]+$/ بررسی کنید تا از injection در نام هدر جلوگیری شود. برای امنیت بیشتر، محتوا را همراه با یک HMAC یا توکن اعتبارسنجی کنید و هرگز ورودی کاربر را مستقیماً در نام یا مقدار هدر به کار نبرید.
گزارش