PHP 8: آنچه کاربران وردپرس باید بدانند
PHP 8.0 قرار است در تاریخ 26 نوامبر سال 2020 (6 آذر 99) منتشر شود. PHP به عنوان زبان برنامه نویسی سایت های وردپرسی، ویژگی های جدیدی را ارائه می دهد که توسعه دهندگان می توانند نوید امنیت بیشتری و عملکرد بهتری را دهند. همچنین تعدادی از توابع قبلاً منسوخ شده را به طور کامل حذف می کند. PHP 8 یک تغییر گسترده نسبت به نسخه های قبلی است.
آیا باید بلافاصله به PHP نسخه 8 آپگرید کنم؟
با اینکه در مقاله افزایش امنیت وردپرس:+20ترفند بالا بردن امنیت وردپرس ، گفته شده که حتما بروزرسانی ها را انجام دهید اما دراین مورد فعلا خیر.با اینکه براساس چت انجام شده با تیم وردپرس، نسخه وردپرس 5.6 با نسخه 8 بتا PHP سازگار است و این بدان معناست که بیشتر عملکردهای اصلی وردپرس کار خواهند کرد ، اما ممکن است اشکالات غیر منتظره برای مدتی وجود داشته باشد. وردپرس خواستار آزمایش PHP 8 شده است تا بتواند اشکالات باقیمانده را پیدا و رفع کند.
درضمن تعداد زیادی از افزونه ها و قالب های وردپرس بلافاصله با PHP 8 سازگار نخواهند شد. مواردی که در هنگام استفاده عادی با خطاهای مهلکی روبرو نمی شوند ، ممکن است برای مدتی رفتار غیر منتظره ای از خود نشان دهند.
بنابراین فعلا نسخه PHP 8 را نصب نکنید.
این مشکل ممکن است برای چه موارد پیش آید؟
مدت ها است که برخی از توسعه دهندگان استدلال می کنند که PHP به طور پیش فرض ناامن نیست. اگرچه این بحث وجود دارد ، درست است که نسخه های PHP قبل از PHP 8 مقاومت بیشتری در برابر خطا دارند و بسیار تلاش می کنند تا اطمینان حاصل کنند که کد حتی در صورت وجود خطاهای جزئی اجرا می شود.
PHP 8 از نوع سختگیرانه تری نسبت به نسخه های قبلی استفاده می کند. بسیاری از توابع داخلی اکنون در مورد ورودی که می پذیرند راحت تر هستند و PHP 8 در مورد نحوه ورود ورودی به توابع سخت گیری بیشتری دارد. مسائلی که قبلاً به warningها منتهی می شد اکنون به errorها منجر می شوند.
به عبارت دیگر ، PHP 8 به آسانی نسخه های قبلی نیست.
برخی از توابع و ویژگی هایی که در PHP 7.x منسوخ شده اند به طور کامل حذف شده اند. این شامل:
- متغیر php_errormsg$
- تابع create_function()
- mbstring.func_overload ini
- نوع real
- allow_url_include ini
- تابع restore_include_path
- تابع each
چه نگرانی های امنیتی وجود دارد؟
PHP چیزی به نام “Type Juggling”اجازه می دهد . این بدان معنی است که می تواند رشته های حاوی اعداد را به همان روشی که با اعداد صحیح یا شناور رفتار می کند ، درمان کند و می تواند ریاضیات را انجام دهد و مقایسه بین این انواع مختلف را انجام دهد به شرطی که از عملگر مقایسه شل ==به جای عملگر مقایسه دقیق استفاده شود ===. برای توسعه دهندگان ، Type Juggling می تواند بسیار مفید باشد و هنگام نوشتن کد باعث صرفه جویی در وقت می شود ، اما گاهی اوقات منجر به یک رفتار غیرمعمول می شود.
یک مثال کلاسیک از اینکه چگونه Type Juggling می تواند باعث ایجاد مشکل شود این است که مقایسه 0 == “blah” درست است. PHP 8 این نوع رفتار را برطرف می کند تا این مقایسه ها و مقایسه های مشابه (به عنوان مثال 0 == “0blah”) نادرست برگردد.
به طور کلی ، این در واقع امنیت را بهبود می بخشد. تعدادی از سو استفاده ها وجود دارد که می تواند با استفاده از Type Juggling رفتارهای غیر استاندارد کوکی ، nonce یا رمز عبور را دور بزند. با این وجود ، تعداد زیادی از پلاگین ها از این مقایسه های شل ، گاهی اوقات برای عملکردهای مهم استفاده می کنند. در بیشتر موارد ، این موارد در هنگام استفاده از PHP 8 به درستی کار خود را ادامه خواهند داد ، اما تعدادی از آنها برای عملکرد صحیح ممکن است به رفتار نادرست اعتماد کنند. در چند شرایط نادر ، این ممکن است حفره های امنیتی جدیدی ایجاد کند.
مسئولیت بروزرسانی کد برای سازگاری با PHP 8 برای برخی از توسعه دهندگان بسیار زیاد است و ممکن است بسیاری از افزونه ها و قالب ها کنار گذاشته شوند ، اگرچه این اتفاق برای پلاگین ها و پوسته ها با پایه نصب زیاد رخ نمی دهد. هرگونه مسائل امنیتی در این افزونه ها و مضامین رها نشده برطرف نمی شود ، که می تواند فاجعه بار باشد.
به همین ترتیب ، ممکن است بسیاری از وب سایت ها در نسخه ناامن PHP باقی بمانند تا افزونه های قدیمی خود را فعال نگه دارند. سرانجام ، برخی از بدافزارها به منظور از بین بردن اهداف خود ، به عملکردهای منسوخ شده و همچنین تحمل خطای PHP اعتماد می کنند. این فشارها در محیط PHP 8 دیگر متوقف خواهند شد یا بیشتر مورد توجه قرار می گیرند ، اما نویسندگان بدافزار به موقع سازگار می شوند.
درباره اسماعیل منصوری
از سال ۱۳۸۹ با طراحی سایت با زبانهای برنامه نویسی شروع کردم. خیلی زمانبر و دردسر داشت. اما الان طراحی سایت بدون کدنویسی را در زمانی کمتر و براحتی انجام میدم. دانلود رایگان ۲ فصل اول کتاب راز طراحی سایت بدون کدنویسی
نوشتههای بیشتر از اسماعیل منصوری1 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
سلام وقتی که به php8 تغییر میدم کلی ارور پایگاه داده میبینم و انگار دیتابیسم کلا خراب میشه چرا که با بازگشت به نسخه قبلی بازم دیتا بیسم خراب باقی می مونه مشکل از چیه؟