خواندن «کامل» صفحه “خطر استفاده از افزونه و قالب های کد شده” به تمام وبمستران و طراحان وب بشدت توصیه می شود. تهیه این صفحه نتیجه سال ها تجربه فردی نویسنده آن می باشد که به اشتراک گذاشته شده است. ساده گذشتن از اطلاعات این صفحه ممکن است در آینده عواقب بدی را برای سایت شما به دنبال داشته باشد.
در صورتی که زمان کافی برای مطالعه کامل این صفحه را ندارید به این نکته دقت کنید که تنها خواندن بخش هایی از هر کجای این پست آموزشی میتواند اثباتی بر خطرات و معایب نصب افزونه و قالب های رمزگذاری شده در سایت باشد. در این آموزش سعی شده با دلایل کافی و منطقی به موارد اشاره شده پاسخ داده شود.
پیش زمینه درباره خطرات استفاده از افزونه و قالب های کد شده
متاسفانه در کشور عزیزمان ایران به دلایل سیاسی امکان اتصال به شبکه بانکی (سوئیفت | SWIFT) وجود ندارد. به همین دلیل نمیتوان از کارت ها و درگاه های بانکی بین المللی مانند PayPall – Visa – MasterCard و… استفاده کرد. از این رو تهیه بسیاری از محصولاتی که در خارج از کشور ساخته میشوند به سختی امکان پذیر می باشد.
این وضعیت در بازار محصولات دیجیتال بسیار سخت تر می باشد. فرض کنید که شما به نحوی بتوانید یک محصول فیزیکی که در خارج از ایران می باشد را تهیه کنید. بعد از انتقال آن به ایران دیگر نگرانی ای بابت آن نخواهید داشت. حال فرض کنید که محصول شما به صورت فایل های دیجیتالی یا محصولات خدماتی باشد. اینجاست که مسئله تحریم ها خود را پر رنگ تر نشان میدهند.
شما در صورتی که بتوانید به نحوی خریدی از سایت های فروش افزونه و قالب وردپرس داشته باشید، در صورتی که ردی از شما دریافت کنند که به IP های ایران برسد، احتمال غیر فعال کردن حساب کاربری شما (ساسپند | Suspend) بسیار زیاد می باشد. شرکت های بزرگ ارائه افزونه و قالب های وردپرس (مانند Envato و زیر مجموعه های آن » تم فارست – کد کنیون و…) در قوانین خود به شکل کاملا واضح اعلام کرده اند که از تحریم ها تبعیت کرده و در صورت مشاهده هر گونه مورد خاص حساب های کاربری را مسدود خواهند کرد.
در ده گذشته و در میان سختی هایی که وبمستران ایرانی از وجود این تحریم ها متحمل میشنوند، متاسفانه برخی از مارکت پلیس های نوظهور اقدام به فروش افزونه و قالب های وردپرس کرک شده (نال | NULL) میکنند. بیشتر این فروشگاه ها، فایل های خود را با عناوین دروغین مانند اورجینال، به نام خود ثبت میکنند. همچنین در اقدامی عجیب روی این فایل ها از لایسنس های جعلی خود نیز برای فریب وبمستران تازه کار (و دلیلی بر اورجینال بودن فایل) استفاده میکنند!
موضوع این صفحه مورد ذکر شده در بالا نیست. پیشنهاد میشود در رابطه با نال بودن فایل های ارائه شده در سایت های غیر مرجع حتما صفحه شفاف سازی را مطالعه کنید.
دقت کنید که کد گذاری روی داده های حساس مانند رمز عبور کاربران از اهمیت بالایی برخوردار می باشد. منظور ما از کد گذاری در این صفحه، کد گذاری روی سورس افزونه و قالب های وردپرس می باشد نه داده های ذخیره شده در بانک اطلاعاتی.
سوالاتی پیرامون کد گذاری افزونه و قالب های وردپرسی
شاید بعد از وارد شدن به این صفحه سوالات زیادی ذهن شما را درگیر کرده باشد. در این صفحه سعی شده است تا به تمام مسائل پیرامون افزونه و پوسته های کد شده به صورت قالب سوالات احتمالی شما پاسخ داده شود. از مهمترین سوالاتی که ممکن است در ذهن شما وجود داشته باشد میتوان به موارد زیر اشاره کرد:
- منظور از افزونه و قالب های کد شده چیست؟
- روش های کد کردن افزونه و قالب های وردپرس چیست؟
- معایب کدگذاری روی افزونه و قالب های وردپرس چیست؟
- آیا سایت های بزرگ خارجی اجازه کد کردن میدهند؟
- چرا نباید از این افزونه و قالب ها روی سایت خود استفاده کنیم؟
بعد از مطرح کردن تمام سوالات و پاسخ های آنها، به تشریح معایب این افزونه و قالب های کد شده اشاره خواهد شد.
واژه های مترادف این صفحه:
- Encrypted – کد شده – رمزگذاری شده
- Decryption – کدگشایی – رمزگشایی
- Module – ماژول – افزونه – اکستنشن
منظور از افزونه و قالب های کد شده چیست؟
وقتی که یک برنامه یا اسکریپت توسط برنامه نویس ساخته میشود، کد های آن قابل مشاهده می باشد. برنامه نویس میتواند توسط روش هایی این کد ها را به علائمی عجیب و غریب تبدیل کند که برای سایر برنامه نویس ها قابل تجزیه و تحلیل نباشد. این امکان در برنامه های سیستمی بسیار کاربردی می باشد. اما در ادامه و به مرور دلیل عدم کاربردی بودن آن در افزونه و قالب های اورجینال را اشاره خواهیم کرد.
واژه کدگذاری شده در این صفحه مشاهده میکنید از ترجمه کلمه Encrypted گرفته شده است و ترجمه صحیح آن رمزگذاری شده می باشد. با این حال بیشتر کدنویس ها از عنوان “کدگذاری شده” استفاده میکنند.
بسیاری از کد های سیستمی روش کاری مشابه مانند کد های سطح وب دارند. اما سوال مهم این است. چرا کد کردن فایل های مورد نیاز وب مستران برای آنها مسئله ای امنیتی محسوب میگردد؟ جواب این سوال این است که در برنامه های اینترنتی ترسی از مواردی مانند جاسازی بک لینک در کامپیوتر، دزدی اطلاعات مشتری ها، بررسی فروش ها، بررسی رفتار کاربران سایت هدف و موارد مشابه وجود ندارد. در ادامه این موارد با وضوحی بالاتر و در بخش های خود توضیح داده خواهد شد.
روش های کد کردن افزونه و قالب های وردپرس
افزونه و قالب های وردپرس توسط دو روش کد گذاری میگردند:
- اسکریپتی: در این روش کد نویس سورس فایل (افزونه، قالب، اسکریپت و…) را توسط یک ماژول از پیش ساخته توسط خود یا دیگران کدگذاری میکند.
- اکستنشن های PHP: در این روش کد نویس توسط اکستنشن هایی که باید از قبل روی هاست شما نصب شده باشد فایل های خود را کدگذاری میکند.
برای اسکریپت های کدگذاری فایل php موارد زیادی را میتوان پیدا کرد. همچنین از معروف ترین اکستنشن های PHP میتوان به سورس گاردین (Source Guardian) و ioncube اشاره کرد.
حتما در بسیاری از فروشگاه های ایرانی که در حال فروش افزونه و قالب های وردپرسی هستند مشاهده کرده اید که در آنها بیان شده است روی هاست شما حتما باید ماژول ioncube یا سورس گاردین نصب شده باشد. کار اصلی این ماژول های PHP دیکد کردن فایل های فروشنده برای پردازش آنها می باشد. در صورتی که خواندن آنها برای یک برنامه نویس امکان پذیر نمی باشد.
همین امر میتواند اتفاقات پشت پرده و ناگواری را برای سایت شما رقم بزند. علاوه بر عدم امکان بررسی کد های این پلاگین ها، سرویس های امنیتی نیز به دلیل نامعلوم بودن کد های این فایل ها، از تجزیه و تحلیل آنها ناتوان هستند.
معایب کدگذاری روی افزونه و قالب های وردپرس چیست؟
استفاده از افزونه و قالب های کدگذاری شده وردپرس معایب بسیار زیادی دارد. این معایب رفته رفته با قوی تر شدن سایت شما خود را نشان خواهد داد. از مهمترین معایب نصب فایل های کدگذاری شده روی سایت ها میتوان به موارد زیر اشاره کرد:
- کم کردن سرعت سایت
- کم کردن ارزش سئو سایت
- از بین بردن امنیت سایت
- بالاتر بردن حجم فایل ها
- نیاز به نصب اکستنشن های ثانویه
منظور از اکستنشن (extension) همان ماژول یا افزونه می باشد. همانطور که روی سایت های وردپرسی افزونه و قالب نصب میگردد، روی سیستم هاستینگ ها نیز افزونه نصب میگردد. برای نمایش ظاهر کنترل پنل ها ممکن است از تم یا پوسته های خاصی نیز استفاده گردد.
به مرور زمان و با بالا رفتن ورودی های سایت شما، موارد گفته شده در بالا اهمیت خود را به صورت پر رنگ تر نشان خواهد داد. متاسفانه در بسیاری از سایت ها، ممکن است دیگر راهی آسان برای رفع مشکلات بالا وجود نداشته باشد؛ هر چند با حذف افزونه یا قالب های کد گذاری شده.
آیا سایت های بزرگ خارجی اجازه کد کردن میدهند؟
تقریبا تمام سایت های بزرگ خارجی که به صورت مارکت پلیس (MarketPlace: سایت های چند فروشندگی) می باشند به فروشنده های خود اجازه کد گذاری روی فایل ها را نمی دهند. زیرا این امر باعث عدم اعتماد وبمستران خریدار نسبت به ماهیت کد های آن محصولات میگردد.
علاوه بر مارکت پلیس های فایل، بیشتر سایت های دیگر که به صورت انحصاری افزونه و قالب های خود را به فروش میگذارند نیز روی فایل های خود کدگذاری نمیکنند. زیرا در این صورت درصد بالایی از خریداران خود را از دست خواهند داد.
فروش افزونه و قالب ها در سایت های توسعه دهندگان بزرگی مانند شرکت Crocooblock – شرکت YITH – شرکت WooCommerce – المنتور و… نیز به صورت کد های خوانا می باشد و این شرکت ها از کد کردن فایل های خود اجتناب میکنند.
این مورد (کد گذاری مانند ماژول های سورس گاردین یا ioncube) در مرجع های بزرگی مانند مخزن وردپرس (که برای دانلود و نصب افزونه و قالب استفاده میگردد) نیز صدق میکند و قوانین امنیتی جامعه توسعه دهندگان وردپرس نیز با اجازه انتشار افزونه و قالب های کد شده همخوانی ندارد. از این رو هیچ کدام از افزونه و قالب های موجود در مخزن وردپرس کد گذاری نشده اند.
در سایت های بزرگ و مرجع دیگری که برای انتشار و اشتراک گذاری منابع مورد نیاز وبمستران (مانند سورس کد و فایل های دانلودی) می باشند مانند کد پن – گیت هاب و… (CodePen | GitHub) انتشار فایل های کد شده معنایی ندارد و از سوی گردانندگان این سایت ها منع شده است.
پایین آمدن سرعت سایت با خرید افزونه های کد شده
یکی از بزرگترین ایراد های افزونه و قالب های کد شده بعد از نصب آنها پایین آمدن سرعت سایت می باشد. وقتی شما یک سایت را اجرا میکنید، فایل های آن ابتدا از هارد به رم هاست بارگذاری می شود و سپس عمل پردازش آن فایل ها در CPU سرور انجام میگردد.
بدین صورت نمایش یک صفحه از لحظه درخواست آن توسط بازدیدکنندگان سایت به صورت زیر می باشد:
- درخواست نمایش سایت در مرورگر کاربر
- خواندن فایل های سایت از روی هاست
- انتقال کد های سایت از هارد به RAM
- پردازش کد های سایت توسط CPU
- انتقال اطلاعات و نمایش سایت به کاربر
ترتیب بالا به صورت کلی و بدون شمارش جزئیات انجام شده است. یعنی تنها موارد مهم مورد ارتباط با سمت سرور در ترتیب بالا اشاره شده است. در صورتی که یک افزونه یا قالب دارای کد های رمزگذاری شده باشد، یک پردازش اضافی سنگین به سایت شما اضافه میگردد. این پردازش به دلیل سنگین بودن کد هایی که قرار است خوانایی نداشته باشید بسیار زمانبر می باشد. در پایین ترتیب اجرای فایل های کدگذاری شده نمایش داده شده است:
- درخواست نمایش سایت در مرورگر کاربر
- خواندن فایل های سایت از روی هاست
- انتقال کد های سایت از هارد به RAM
- فراخوانی توابع ماژول رمزگذاری(مانند سورس گاردین یا ioncube) به RAM
- پردازش کد های رمزنگاری شده (اصطلاحاً دیکد کردن”Decryption”)
- پردازش کد های سایت توسط CPU
- انتقال اطلاعات و نمایش سایت به کاربر
در ترتیب بالایی مشاهده میکنید که مرحله چهارم و مرحله سنگین پنجم به سایت شما اضافه شده است. سرعت اجرای این پردازش ها به مرور زمان و با نمایش سایت برای چند نفر یا اجرای افزونه های بیشتر در سایت بسیار پایین می آید. استفاده نکردن فایل های کد گذاری شده باعث افزایش سرعت سایت میگردد.
ایجاد محدودیت برای حافظه کش سایت
در ترتیب پردازش کدهای یک سایت ممکن است از حافظه کش (Cach) نیز استفاده گردد. در سایت هایی که از حافظه ی کش برای نگهداری منابع یا فایل های PHP در آنها استفاده میگردد، ترتیب مراحل به این صورت است که مقداری از کد ها بدون بارگذاری از هارد سرور، مستقیما از RAM (یا حافظه کش مجزا) به CPU منتقل میگردد. در اینگونه مواقع ممکن است به دلیل بالا بودن حجم کد های رمزگذاری شده، این حافظه به دلیل محدودیت در فضای آن با مشکل (آور فلو و پاکسازی توسط فلش خودکار) مواجه شود.
بالا بردن حجم فایل های سایت بعد از رمزگذاری
هر افزونه و قالب دارای تعداد زیادی فایل های سورس می باشد. هر کدام از این فایل ها نیز میتوانند حاوی هزاران خط کد باشند. در صورتی که این کد ها بخواهند رمزگذاری شوند تعداد بسیار بیشتری خط کد تولید میگردد. در پایین یک نمونه رمزگذاری نمایش داده شده است:
قبل از رمزنگاری: pluginyab.ir
بعد از رمزنگاری: 3a187199ef9ecec81a22b5319d0a3a5e
همانطور که در نمونه بالا مشاهده میکنید اسم این سایت بعد از کدگذاری شدن به 3 الی 4 برابر تبدیل شد. حال فرض کنید که یک قالب چند فایل سورس داشته باشد که رمزگذاری شده اند. در این صورت ممکن است چندین هزار خط کد بیشتر در سایت شما بارگذاری شود که این مورد در بالا بردن حجم فایل هایی که قرار است در هاست ذخیره شوند یا بر روی Ram سرور بارگذاری شوند تاثیر زیادی دارد.
دقت کنید که در رابطه با حجم سایت، هر چه حجم آن پایین تر باشد کیفیت آن بالاتر میرود. حجم سایت ها (یا افزونه و قالب ها) بر حسب واحد بایت و به صورت کیلوبایتی بررسی میگردد.
نیاز به اکستنشن های کدگذاری PHP
اگر بخواهید روی سایت خود یک افزونه کدگذاری شده نصب کنید، نیاز است که از قبل اکستنشن و ماژول های آن سیستم رمزگذاری را در هاست خود داشته باشید. معمولا از دو لودر(Loader) سورس گاردین (Source Guardian) و ioncube برای کدگذاری استفاده میگردد.
یکی از معایب دیگر در رابطه با موضوع رمزگذاری فایل ها این است که این توابع باید از سمت هاستینگ ها روی پلن های ارائه شده وجود داشته باشد. برخی از هاستینگ ها (معمولا هاستینگ های خارجی) ممکن است این ماژول ها را روی هاست های خود نصب نکنند.
پ ن: در بیشتر هاستینگ های ایرانی(منظور هاست ایران یا خارج که توسط هاستینگ ایرانی ارائه میگردد) یکی از دو ماژول بالایی وجود دارد.
از بین رفتن امنیت با نصب قالب و افزونه کدگذاری شده
مهمترین و پر بحث ترین علتی که میتوان از آن به تنهایی دلیلی برای استفاده نکردن از قالب و افزونه کدگذاری شده یاد کرد، بحث امنیت می باشد. نصب این گونه فایل ها روی سایت های وردپرسی (یا دیگر روش ها) به احتمال بسیار بسیار بالایی به هک شدن سایت شما در پشت صحنه آن منجر میگردد.
در بیشتر هک کردن سایت ها، هکر موضوع را به نحوی به صاحب سایت اطلاع میدهد. این کار با روش هایی مانند تغییر مطالب(DB Attack)، تغییر ظاهر (دیفیس | Deface)، از دسترس خارج کردن(DDOS)، تغییر مسیر سایت(هک DNS یا Redirect) و… صورت میگردد. اما بر خلاف اینگونه هک شدن هایی که صاحب سایت از آن بی خبر می ماند را میتوان به هک خاموش تشبیه کرد.
سایت های فروشگاهی زیادی وجود دارد که حتی با داشتن نماد های فعالیت آنلاین که توسط سازمان های گاها دولتی ارائه میگردد روی کار آمده اند. همچنین در مارکت پلیس ها، فروشنده های زیادی وجود دارند که به هیچ عنوان نمیتوان به آنها اعتماد کرد یا بتوان اطمینانی از بابت این که جلوی سوء استفاده آنها گرفته شود داده شود. سایت های خریداران که در حال سرویس دهی به مشتریان خود هستند طعمه بسیار آسانی می باشند که فعالیت آنها توسط فروشندگان افزونه های کد شده مورد رصد قرار میگیرند.
از مهمترین موارد هک شدن سایت ها و باگ های امنیتی در رابطه با افزونه و قالب های رمزگذاری شده میتوان به لیست زیر اشاره کرد:
- قرار دادن بک دور
- رصد سایت های خریداران
- دزدی اطلاعات کاربران
- دزدی اطلاعات خریداران
- سایر موارد مانند بک لینک و خرابکاری
قرار دادن بک دور
یکی از راه های جذاب برای هر هکری این است که با قرار دادن یک کد بتواند به درون پیشخوان مدیریتی یک سایت وارد شود بدون اینکه حتی رمزی را در صفحه ورود آن وارد کند. به این نوع روش برای ورود به سایت ها بک دور (در پشتی یا Back Door) گفته می شود.
اصلی ترین راه ایجاد بک دور به سایت ها قرار دادن کد آن در درون یک فایل اجرایی (مثلا PHP) می باشد. حال فرض کنید که شما با نصب افزونه هایی که نمیتوان کد های آن را بررسی کرد چه ریسک بزرگی را در ایجاد یک بک دور دورن سایت خود انجام داده اید. ایجاد بک دور های کد شده یکی از شایع ترین روش های فروشندگان افزونه و قالب های کد شده در مارکت پلیس ها می باشد.
رصد سایت های خریداران
فروشندگان فایل های کد شده به آسانی میتوانند روی سایت هایی که از آنها افزونه و قالب رمزگذاری شده خریداری کرده اند اشراف داشته باشند و سایت های آنها را رصد کنند. این کار برای پیدا کردن فعالیت سایت هایی که بازدید یا فروش های فراوانی دارند کاربرد دارد.
دزدی اطلاعات کاربران
فرد فروشنده ممکن است با ارسال اطلاعات کاربران شما، از لیست ایمیل های آنها برای مقاصدی مانند ارسال ایمیل های بازاریابی و موارد مشابه استفاده کند. این مورد در بسیاری از سایت ها مشاهده شده است. همچنین احتمال فروش اطلاعات کاربران یک سایت در دارک نت(DarkNet: محلی در دل اینترنت که فعالیت های غیر قانونی انجام میگردد) نیز در صورت بزرگ یودن آن سایت وجود دارد.
عدم امنیت و دزدی اطلاعات مشتریان
با اضافه کردن کد های رمزگذاری شده ای در درون فایل های افزونه و قالب میتوان به آسانی اطلاعات کاربران سایت را برای فروشنده افزونه های رمزگذاری شده ارسال کرد. این اطلاعات میتواند شامل هر چیزی باشد. مهمترین اطلاعات کاربران نام، ایمیل و شماره های تماس می باشد.
فرد فروشنده ی قالب کد شده میتواند به آسانی و با رصد سایت هایی که فروش بالایی دارند، سایتی مشابه آن را طراحی کرده و محصولات سایت هدف را در آن عرضه کند. همچنین با داشتن اطلاعات خریداران سایت هدف میتواند به آنها پیام ارسال کرده و مشتریان آن سایت را به سمت خود هدایت کند.
رصد فروش محصولات سایت ها
با مشاهده فروش های یک سایت میتوانند محصولات پر فروش را از داخل سایت خریدار پیدا کرده و با راه اندازی سایتی مشابه آن سایت، به فروش محصولات گلچین آنها بپردازند. روش های فروش مانند تخفیف ها، نحوه ساخت پیج، خود محصول(در مورد محصول دانلودی) و… در این روش قابل سوء استفاده می باشد.
سایر موارد امنیتی در رابطه با افزونه های رمزگذاری شده
ممکن است فروشنده افزونه های رمزگذاری شده در آینده و با خروج از دنیای فروشندگی یک بروزرسانی منتشر کند و در آن بک لینک هایی را در درون سایت شما تزریق کند. ممکن است این فرد به کار های بسیار بدتری مانند آلود کردن سایت های خریداران به ویروس هایی که کد گذاری شده اند روی آورد.
بررسی این مورد با غیر فعال کردن بروزرسانی های خودکار و دانلود مستقیم آپدیت ها ممکن است. در صورتی که بروزرسانی جدید کد گذاری نشده باشد به سادگی میتوان کد های آن را تجزیه و تحلیل کرد. ولی در صورتی که این فایل ها رمزگذاری شده باشند، حتی با دانلود آنها امکان بررسی آنها وجود ندارد و هر نوع کدی ممکن است درون آنها قرار گیرد.
جمع بندی دلایل عدم استفاده از افزونه و قالب کدگذاری شده
در این صفحه با دلایل زیادی خطرات و معایب استفاده از افزونه و قالب های کدگذاری شده بیان شد. بسیاری از سایت های خارجی روی فایل های خود و برای شفاف سازی آنها هیچ گونه رمزگذاری ای انجام نمیدهند. همچنین مارکت پلیس های بزرگ(مانند تم فارست) و مخزن وردپرس به دلیل عدم امکان اعتبار سنجی از فروشندگان و توسعه دهندگان، اجازه کد گذاری روی فایل ها را نمیدهند.
خطرات استفاده از این نوع فایل ها به حدی زیاد است که به مرور زمان و بعد از پیشرفت سایت خریدار، فعالیت آن برای فروشنده قالب و افزونه کد شده جذاب میگردد و با دور زدن سایت خریدار، سایت خود را رقیب و پیشتاز میکند و ممکن است در سایت خریدار افزونه یا قالب رمزگذاری شده اختلال ایجاد کند. به این صورت سایت طراحی که از مارکت پلیس هایی که اجازه کدگذاری روی محصولات را میدهند خریداری میکند، محکوم به شکست خواهد شد.
اینجاست که باید با کمی تفکر به این سوال ها رسید:
- چرا باید فایل های فروخته شده در مارکت های ایرانی کدگذاری شوند؟
- فایل هایی که سازندگان اصلی روی آنها هیچ کدگذاری ای انجام نداده اند! چرا باید توسط فروشنده نالر(Nuller: کرک کننده) کد گذاری شود؟
- چه دلیلی برای کد کردن فایل های افزونه و پوسته ها وجود دارد که باید به خاطر آن امنیت و کیفیت سایت خریدار قربانی آن شود؟
- در این میان چرا باید نهاد هایی که با اعطای نماد های اینترنتی به این سایت ها وجه قانونی میدهند را ارزشمند بدانیم؟