محدود کردن دسترسی به پوشه uploads/edd در NGINX
- امنیت وردپرسمقالات آموزشی
- بروزرسانی شده در

همونطور که در دوره جامع سایت برتر توضیح دادم، انتخاب وبسرور روی سرعت و نحوه مدیریت سایتتون تأثیر میذاره. آپاچی تقریبا قدیمی شده و اگه افزایش سرعت سایت براتون مهمه، میتونید سراغ وبسرور NGINX یا لایتاسپید برید.
بیشتر شرکتهای هاستینگ بهخاطر محدودیتهای پیوند یکتای وردپرس، بهجای NGINX رایگان از وبسرور لایتاسپید استفاده میکنن. البته لایتاسپید رایگان و متنباز نیست.
اگه میخواید بفهمید وبسرورتون NGINX هست یا نه، از بخش ابزارها وارد سلامت سایت بشید. بعد بخش اطلاعات سرور رو باز کنید تا نام وبسرورتون رو ببینید.

اگه سایت پربازدیدی دارید و میخواید اون رو مثل سایت ما روی یک سرور کاملا اختصاصی میزبانی کنید، NGINX یکی از گزینههای پیش روتونه. راهاندازی و مدیریت اون کمی دردسر داره، ولی سرعت خوبی در اختیارتون میذاره.
آنچه در این مقاله میخوانید
مسئله امنیتی NGINX و EDD
یکی از دردسرهای NGINX اینه که به فایل htaccess دسترسی نداره و نمیتونه دستورهای داخل اون رو بخونه. برای همین باید دستورهای موردنیازتون رو مستقیم داخل فایل /etc/nginx/nginx.conf بذارید.
وقتی روی سرورتون از NGINX استفاده میکنید و افزونه Easy Digital Downloads رو هم روی سایت وردپرسیتون نصب میکنید، ممکنه دسترسی مستقیم به پوشه دانلودها باز بمونه. در این حالت، یک نفر میتونه با وارد کردن آدرس فایل، محصولات فروشی شما رو مستقیم دانلود کنه.

برای بررسی این موضوع، آدرس زیر رو در مرورگرتون وارد کنید:
http://yoursite.ir/wp-content/uploads/edd/downloadname.zip
بهجای yoursite.ir آدرس سایتتون رو بنویسید. بهجای downloadname.zip هم نام فایلی رو بذارید که برای دانلود قرار دادید.
اگه خطای ۴۰۳ یا ۴۰۴ دیدید، یعنی دسترسی مستقیم به فایل محدوده. ولی اگه دانلود فایل شروع شد، تنظیمات وبسرورتون مشکل امنیتی داره و باید اون رو برطرف کنید.
اگه مدیر سرور نیستید، بهتره این مقاله رو برای مدیر سرورتون بفرستید. 🙂
محدود کردن دسترسی به پوشه EDD در NGINX
برای جلوگیری از دانلود مستقیم فایلهای EDD، اول باید از طریق SSH وارد سرور لینوکسیتون بشید. SSH راهی برای کنترل سرور با دستورهای متنیه. بعد با دستور زیر پوشه /etc/nginx رو باز کنید:
cd /etc/nginx/حالا فایل nginx.conf رو با این دستور باز کنید:
vi nginx.confداخل فایل دنبال بلاک server مربوط به دامنه خودتون بگردید. بلاک server بخشی از تنظیماته که دستورهای یک دامنه رو نگه میداره. میتونید دامنهتون رو در خط server_name پیدا کنید.
کد زیر رو داخل همون بلاک قرار بدید. فرقی نمیکنه اون رو در کدوم بخش از بلاک بذارید.
location /wp-content/uploads/edd { deny all; return 403; }فایل nginx.conf رو ذخیره کنید. بعد با دستور زیر وبسرور NGINX رو دوباره راهاندازی کنید:
service nginx restartکار تمومه. 🙂 حالا اگه آدرس فایل رو مستقیم در مرورگر وارد کنید، خطای ۴۰۳ میبینید. این خطا یعنی درخواست مستقیم به فایل مسدود شده، ولی سایتتون هنوز میتونه فایل رو در اختیار خریدار قرار بده.
جلوگیری از دور زدن محدودیت با ترفند حساسیت به حروف کوچک و بزرگ
وبسرور NGINX در دایرکتیو location به کوچک یا بزرگ بودن حروف حساسه. دایرکتیو یعنی همون دستور تنظیماتی که مسیر موردنظر رو مشخص میکنه. پس اگه کسی آدرس فایل رو بهشکل /wp-content/Uploads/Edd/ و با حروف بزرگ وارد کنه، ممکنه دستور location /wp-content/uploads/edd رو دور بزنه و فایلها همچنان دانلود بشن. برای بستن این راه، بهتره از دستور ~* استفاده کنید تا کوچک یا بزرگ بودن حروف تفاوتی ایجاد نکنه. نسخه ایمنتر کد به این شکله:
location ~* /wp-content/uploads/edd/ { deny all; return 403;}تداخل این ردیف کد با دانلود خریداران و نحوه تست صحیح آن
احتمالا این سؤال براتون پیش میاد که اگه دسترسی به پوشه کاملا مسدود بشه، خریدارها هم موقع دانلود قانونی فایل با خطای ۴۰۳ روبهرو میشن یا نه. پاسخ منفیه. افزونه EDD آدرس مستقیم فایل رو به خریدار نمیده و بهجاش یک لینک موقت و رمزگذاریشده با فیلترهای داخلی وردپرس و توابع PHP میسازه. چون پردازش فایل از داخل سرور و با PHP-FPM انجام میگیره، کدهای داخلی به پوشه دسترسی دارن و فقط درخواست مستقیم مرورگر از بیرون مسدود میشه. برای اطمینان، بهتره یک خرید آزمایشی انجام بدید و بررسی کنید که دانلود قانونی فایل بدون مشکل انجام میشه.
نحوه اعمال این محدودیت در کنترلپنلهای آماده NGINX
اگه از سرور اختصاصی خام استفاده نمیکنید و هاستتون یک کنترلپنل مبتنی بر NGINX، مثل کلود پنل، داره، ممکنه از طریق SSH به فایل اصلی nginx.conf دسترسی نداشته باشید. در این شرایط وارد کنترلپنل هاست بشید و بخش NGINX Settings یا Advanced Rules رو باز کنید. معمولا کادری با نام “Additional NGINX directives” در این بخش دیده میشه. دستور location بالا رو در همون کادر قرار بدید و تنظیمات رو ذخیره کنید تا سرور بهصورت خودکار دوباره راهاندازی بشه.
محافظت همزمان از پوشه دیتابیس و فایلهای لاگ EDD
پوشه edd در رسانههای وردپرس فقط فایلهای ZIP محصولات رو نگه نمیداره. ممکنه فایلهای حساسی مثل خروجیهای حسابداری، نسخههای پشتیبان دیتابیس افزونه و گزارشهای پرداخت با فرمتهایی مثل .txt یا .csv هم داخل اون باشن. برای اینکه رباتهای اسکنر نتونن به این فایلها برسن، بهتره دستور مسدودسازی رو برای کل پوشه اجرا کنید، نه فقط یک فرمت خاص. فعال کردن options -indexes هم جلوی نمایش فهرست فایلهای پوشه رو در نبود فایل index میگیره و یک لایه محافظتی دیگه به سرورتون اضافه میکنه.
جمعبندی
محدود کردن دسترسی به پوشه uploads/edd در NGINX کمک میکنه آدرس مستقیم فایلهای دانلودی در دسترس بازدیدکنندهها نباشه. بااینحال، محل فایل تنظیمات و روش تحویل دانلود در هر سرور میتونه فرق داشته باشه. پس قبل از تغییر تنظیمات از فایل فعلی نسخه پشتیبان بگیرید و اگه به مدیریت سرور آشنا نیستید، انجام این کار رو به مدیر سرور یا پشتیبانی هاست بسپارید.
بعد از اعمال قانون هم فقط دیدن خطای ۴۰۳ کافی نیست. بهتره آدرس مستقیم یک فایل آزمایشی رو بررسی کنید، یک خرید آزمایشی انجام بدید و دانلود محصول از حساب خریدار رو هم امتحان کنید. این سه آزمایش بهتون نشون میدن که دسترسی مستقیم بسته شده و مسیر قانونی دانلود همچنان درست کار میکنه.
سوالات متداول
چرا باید دسترسی مستقیم به پوشه uploads/edd رو محدود کنیم؟
چون باز بودن آدرس مستقیم فایل میتونه به بعضی بازدیدکنندهها اجازه بده بدون طی کردن مسیر خرید، فایل محصول رو دریافت کنن. این محدودیت درخواست مستقیم به مسیر فایل رو میبنده.
خطای ۴۰۳ بعد از وارد کردن آدرس فایل چه معنایی داره؟
خطای ۴۰۳ یعنی وبسرور درخواست مستقیم شما برای باز کردن فایل رو رد کرده. بعد از دیدن این خطا، بهتره دانلود قانونی محصول از حساب خریدار رو هم جداگانه آزمایش کنید.
آیا این محدودیت دانلود خریدارها رو هم مسدود میکنه؟
این موضوع به روش تحویل فایل در EDD، محل نگهداری فایل و تنظیمات سرورتون بستگی داره. برای همین بعد از اعمال قانون باید یک خرید آزمایشی انجام بدید و دانلود محصول از حساب خریدار رو بررسی کنید.
آیا فایل تنظیمات NGINX همیشه nginx.conf هست؟
نه، محل تنظیمات دامنه میتونه با توجه به سیستمعامل، شرکت هاستینگ یا کنترلپنل فرق داشته باشه. اگه فایل مربوط به دامنه رو پیدا نکردید، بهتره از مدیر سرور یا پشتیبانی هاست کمک بگیرید.
اگه به SSH یا تنظیمات سرور دسترسی نداشته باشیم باید چی کار کنیم؟
میتونید لینک این آموزش و قانون موردنیاز رو برای پشتیبانی هاست بفرستید و از اونها بخواید دسترسی مستقیم به پوشه uploads/edd رو در تنظیمات NGINX محدود کنن. بدون دسترسی مدیریتی، بهتره فایلهای سرور رو خودتون تغییر ندید.

برای ارسال نظر لطفا ابتدا ثبتنام کنید یا وارد شوید.