Magic Quotes یکی از ویژگیهای قدیمی PHP بود که بهصورت خودکار کاراکترهای خاص مانند ('), ("), () را در دادههای ورودی (GET, POST, Cookie) Escape میکرد تا از حملات SQL Injection جلوگیری شود. این ویژگی با استفاده از دستور magic_quotes_gpc
در فایل php.ini فعال یا غیرفعال میشد.
چرا Magic Quotes در PHP منسوخ شد؟
ویژگی Magic Quotes از نسخه PHP 5.4 بهطور کامل حذف شد، زیرا:
❌ غیرقابل اعتماد بود: این قابلیت همیشه به درستی دادههای ورودی را محافظت نمیکرد و گاهی باعث تغییرات ناخواسته در دادهها میشد.
❌ مشکلات عملکردی ایجاد میکرد: به دلیل افزودن کاراکترهای Escape به تمام دادههای ورودی، عملکرد برخی برنامهها مختل میشد.
❌ مدیریت امنیت باید در سطح کدنویسی انجام شود: توصیه میشود که از Prepared Statements و توابعی مانند mysqli_real_escape_string()
یا PDO برای ایمنسازی ورودیها استفاده کنید.
چگونه در سرور لینوکس magic_quotes_gpc را غیرفعال کنیم؟
اگر هنوز از نسخههای قدیمی PHP استفاده میکنید، میتوانید مقدار magic_quotes_gpc را در فایل php.ini تغییر دهید
magic_quotes_gpc = Off
سپس برای اعمال تغییرات، سرور Apache یا Nginx را ریاستارت کنید:
service apache2 restart # برای Apache
service nginx restart # برای Nginx
جمعبندی:
✅ Magic Quotes در PHP 5.4 حذف شده است و دیگر نیازی به استفاده از آن نیست.
✅ بهجای این ویژگی، باید از روشهای مدرن مانند Prepared Statements برای امنیت استفاده کنید.
✅ اگر هنوز از نسخههای قدیمی PHP استفاده میکنید، توصیه میشود که به نسخههای جدیدتر مهاجرت کنید.
برای افزایش امنیت و عملکرد بهتر سایت، از روشهای استاندارد مانند Prepared Statements و PDO استفاده کنید و از نسخههای بهروز PHP بهره ببرید.