گزارش و اصلاح تابع check_requests

در این بخش میتوانید مشکلات و سوالات مربوط به نیوک 8.4 را مطرح کنید.
نمایه کاربر
imanagha
کاربر فعال
کاربر فعال
پست: 323
تاریخ عضویت: سه‌شنبه ۲۹ مرداد ۱۳۸۷, ۷:۳۰ ب.ظ
تشکر کرده: 50 دفعه
تشکر شده: 97 دفعه

گزارش و اصلاح تابع check_requests

پست توسط imanagha »

نسخه phpnuke شما: 8.4.4
نوع phpnuke: phpnuke استاندارد
بلوک ها یا مازول های نصب شده: خیر
سطح دانش شما: حرفه ای
آدرس سایت شما: لوکال

نسخه PHP سرور: 8
نسخه MYSQL سرور: 5.5

چه کارها و مراحلی قبل از مشکل انجام داده اید؟
NULL

چه اقداماتی برای حل مشکل انجام داده اید؟
کدهارو اصلاح کردم

توضیحات و شرح مشکل
سلام مجدد،
در تابع check_requests
دو مورد مشاهده شد : خطوط 6204 الی 6246
الف- اگر متغیرهای ارسالی و دریافتی دارای مقداری از نوع آرایه باشند قطعا خطا خواهیم داشت، 
ب- عبارات منظم باید بین دو / / یا # # یا @ @ قرار بگیرند لذا در قسمت _POST خطا وجود داره
اصلاح تابع به صورت زیر انجام شد :
لطفا کد اصلاحی بنده رو بررسی بفرمایید (صرفا با خواندن کد بازنویسی کردم)

کد: انتخاب همه

    if ( !defined( 'ADMIN_FILE' ) ) {
        // Die message for not allowed HTML tags
        $htmltags = "<div class=\"text-center\"><img src=\"images/logo.gif\" title=\"logo\" alt=\"phpnuke\"><br><br><b>";
        $htmltags .= "The html tags you attempted to use are not allowed</b><br><br>";
        $htmltags .= "[ <a href=\"javascript:history.go(-1)\"><b>Go Back</b></a> ]</div>";
        // Prevent any possible XSS attacks via $_GET.
        if ( isset( $_GET ) ) {
            foreach ($_GET as $sec_key => $secvalue){
                if (!is_array($secvalue)) {
                    $secvalue = str_replace("\"", "", $secvalue);
                    if (        (@preg_match("#<[^>]*script*\"?[^>]*#i", $secvalue))                 
                            ||    (@preg_match("#<[^>]*object*\"?[^>]*#i", $secvalue))                 
                            ||    (@preg_match("#<[^>]*iframe*\"?[^>]*#i", $secvalue))                 
                            ||    (@preg_match("#<[^>]*applet*\"?[^>]*#i", $secvalue))                 
                            ||    (@preg_match("#<[^>]*meta*\"?[^>]*#i", $secvalue))                 
                            ||    (@preg_match("#<[^>]*style*\"?[^>]*#i", $secvalue))                 
                            ||    (@preg_match("#<[^>]*form*\"?[^>]*#i", $secvalue))                 
                            ||    (@preg_match("#<[^>]*img*\"?[^>]*#i", $secvalue))                 
                            ||    (@preg_match("#<[^>]*onmouseover *\"?[^>]*#i", $secvalue))                 
                            ||    (@preg_match("#<[^>]*body *\"?[^>]*#i", $secvalue))                 
                            ||    (@preg_match("#\([^>]*\"?[^)]*\)#i", $secvalue))                 
                            ||    (@preg_match("#\"#i", $secvalue))                 
                            ||    (@preg_match("#forum_admin#i", $sec_key))                 
                            ||    (@preg_match("#inside_mod#i", $sec_key)))
                    {    exit ($htmltags);    }
                }
            }
            unset($secvalue);
        }
        if ( isset( $_POST ) ) {
            foreach ($_POST as $secvalue){
                if (!is_array($secvalue)) {
                    $secvalue = str_replace("\"", "", $secvalue);
                    if (        (@preg_match("#<[^>]*iframe*\"?[^>]*#i", $secvalue))                 
                            ||    (@preg_match("#<[^>]*object*\"?[^>]*#i", $secvalue))                 
                            ||    (@preg_match("#<[^>]*applet*\"?[^>]*#i", $secvalue))                 
                            ||    (@preg_match("#<[^>]*meta*\"?[^>]*#i", $secvalue))                 
                            ||    (@preg_match("#<[^>]*onmouseover*\"?[^>]*#i", $secvalue))                 
                            ||    (@preg_match("#<[^>]script*\"?[^>]*#i", $secvalue))                 
                            ||    (@preg_match("#<[^>]*body*\"?[^>]*#i", $secvalue))                 
                            ||    (@preg_match("#<[^>]style*\"?[^>]*#i", $secvalue)))
                    {    
                        exit ($htmltags);
                    }
                }
            }
            unset($secvalue);
        }
    }    
[/i]


نمایه کاربر
iman64
مدیر کل سایت
مدیر کل سایت
پست: 3476
تاریخ عضویت: شنبه ۱۸ اسفند ۱۳۸۶, ۸:۳۰ ب.ظ
محل اقامت: ایران سرافراز - بوشهر - دلوار
تشکر کرده: 397 دفعه
تشکر شده: 4753 دفعه

گزارش و اصلاح تابع check_requests

پست توسط iman64 »

سلام و ممنون بابت گزارشاتتون.
لطفا موارد بعدی رو از طریق github بفرستید که تو پکیج اصلاح بشه.
ضمناً لطفا از نسخه 7.4.16 استفاده کنید تا ایرادات موجود رو از نسخه فعلی php که نیوک باهاش اوکی هست بررسی کنیم و موقع هماهنگی با php 8.1 یه بروزرسانی بهتری داشته باشیم. چون ایراداتی که الآن میگیرد بعضاً به خاطر همون php 8 هست.
ممنون
 
Phpnuke.ir

بازگشت به “[8.4] پشتیبانی - phpNuke Support Forum”