Logo for Parsclick
توجه: سایت برای مدت چند روز از تاریخ ۱۸ نوامبر از کار خواهد افتاد...

سناریو امنیت آپلود تصاویر در سایت

  شهریار توکلی شهریار توکلی
  November 4, 2016 at 11:50 PM
  ۱۴ آبان، ۱۳۹۵ ساعت ۲۳:۵۰

Uploading File Security



درود خدمت شما دوستان گرامی . خیلی وقت بود می خواستم این مطلب رو بنویسم به هر دلیلی نشد.

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

در مجموع اون چیزی که باید در کار هاتون استفاده بشه فقط به سناریو شخصی خودتون بستگی داره . روز ها تحقیق و مطالعه کردن سایت های معتبر در زمینه امنیت فایل مخصوصا تصاویر فقط این دلیل را به شما می دهد برای هدفتون یک راه تلفیقی برای چک کردن موارد مذکور بسازید.

ولی یک سوال مطرح می شود :

آیا راهی که من در حال طی کردن هستم راه مناسبی هست ؟

دقیقا این سوال خیلی ذهن من رو به خودش مشغول کرده . این مقاله ربطی به یک زبان برنامه نویسی خاصی نداره بلکه موارد ذکر شده برای تمام زبان هاست . من در ادامه مطلب سعی می کنم PHP بیشتر مثال بزنم .

نکته : این مطلب بیشتر تا اینکه یک آموزش باشد یک هم نظری و یادگیری از شما دوستان در سایت هست و در آوردن یک راه حل خوب برای بهینه کردن امنیت در قسمت تصاویر هست. متاسفانه جای ویدیو های امنیت در تمام مجموعه ها خالی هست شاید همین مطلب راهی باشد برای شروع کردن این مبحث .

سناریو آپلود تصاویر من بعد از تحقیقات در وب سایت های معتبر :

۱. بررسی و شناخت فرمت فایل

در این بخش چندین راه حل برای تمام زبان های برنامه نویسی وجود دارد ولی در هیچ کدام کافی نیست فقط یک مرحله برای شروع آنالیز فایل می باشد. برخی ها این فرمت ها قابل دور زدن هستند ولی از هیچی بهتر هست.

البته باید توجه داشت این بخش برای فایل هایی که به اشتباه ارسال شده است بسیار کار ساز می باشد.

۲. محدود سازی فرمت هایی که دسترسی اپلود دارند

خوب بعد از شناسایی فرمت فایل ها شما باید مراحل دسترسی را به دو بخش تقسیم کنید

الف : قبل از آپلود

ب : بعد از آپلود

قبل از اپلود به صورت مثال با جاوااسکریپت و …. برای شناسایی بهتر و همینطور جلوگیری از اشتباه کاربری و رابط کاربری مناسب

و بعد از اپلود برای فیلتر کردن فایل ها

توجه : تا اینجا هنوز فایل در هاست اپلود نگردیده است.

۳. انتقال به فایل tmp بیرون public_html

همانطور که می دانید فایل های بیرون public_html دسترسی اجرایی ندارند این خودش باعث می شود فایل شما هم پرمیشن پایینی داشته باشد هم اجرا نگردد.

۴. استفاده از توابع کپی تصاویر

در این قسمت ما اومدیم از فایل یک کپی گرفتیم . یک کپی که دیگر هد تصاویر و اندازه ها را به همراه ندارد بلکه یک کپی سالم در PHP این سری توابع زیاد هستند که یک نسخه تقریبا سالم تصاویر شما می گیرند

۵. انتقال فایل بعد از کپی برداری به فایل اصلی

خوب دیگر زمانش رسیده بود که شما تصاویر را به فایل اصلی انتقال بدهید ولی باید توجه داشته باشید به واسطه htaccess یا هر مرحله ای که در ذهن دارید چون این فایل فقط تصاویر هستند پس نیاز به اجرایی بودن آن نمی رود.

نکته: تمام دسترسی های اجرایی را از این فایل بگیرید

۶. ساخت لینک غیر مستقیم

خیلی از برنامه نویسان ندادن لینک مستقیم را زیاده روی می دانند ولی خوب ساختش ضرری ندارد وقتی تصاویر شما لینک های غیر مستقیمی را برای خودشان دارند دیگر حمله کننده نمی تواند فایل را به صورت مستقیم آدرس دهی بکند که فواید خودش را دارد مشکلاتی را نیز به نظرم به سایت اضافه می کند

نکته : اگر تصاویر با توکن باید لود بشوند این قسمت بهترین انتخاب هست

۷. تاکید دوباره برداشتن حالت اجرایی از فایل نگهداری تصاویر

۸. چک کردن تصاویر به واسطه آنتی ویروس و مارول های انلاین

خیلی از سایت ها سرویس هایی را برای شما قرار می دهند که کمک می کند برخی از فایل های مشکل دار را بشناسید و حذب کنید شاید پیش خودتان گفتید چرا این کارو اول همین پروسه طولانی سالم سازی تصاویر نکنیم . باید بگم که این مبحث بیشتر دارای محدودیت می باشد . یعنی وب سایت ها بیشتر از ۴ تصویر در دقیقه نمی گیرند و در وب سایت های بزرگ باعث می گردد کاربر دچار مشکل شود پس بهتر هست با کرن جاب یا هرچیزی بیایید بعد از اپلود چک بکنید

۹. استفاده از API وب سایت tinypng

این وب سایت معروف چندین سال هست که در حال فعالیت هست یکی از بهترین سرویس های کمپرسور تصاویر هست به شخصه فکر می کنم در تمیز سازی تصاویر نیز بسیار قدرتمند هست . بعد از اپلود بهترین زمان هست تصاویر را هم برای کم حجم کردن و هم برای تست بیشتر به این وب سایت بدهید و دوباره جاگیزین تصویر فعلی بکنید.

لازم به ذکر هست این سرویس در ماه ۵۰۰ عکس به صورت رایگان برای شما کمپرس می کند اگر نیاز بیشتر دارید باید پول بدهید.

نکته خیلی مهم :

خیلی از توابع برای اینکه جلوی دور زدن آدرس تصاویر را بگیرد درست شده ولی در تمام مقالات بهترین راه حل برای تمیز سازی تصاویر در آدرس دهی و نام گذاری تغییر نام فایل به یک نام رندوم می باشد یا یک نامی که بر اساس عدد هست . به نظر من این مبحث خیلی مهم بوده و در موقع اپلود باید اجرا شود و بعد در پوشه tmp قرار بگیرد.

به عنوان مثال من الگوی زیر رو برای نام تصاویر پروفایل کاربر در نظر گرفتم

شناسه کاربری + زمان اپلود + یک عدد رندوم ۸ رقمی + فرمت تصویر


امید وارم دوستان نظرات خودشون رو در همین مقاله ارائه بدهند هم راهنمایی باشه برای بنده هم دیگر کاربران که امنیت بهتری را برای تصاویر خودشان در نظر بگیرند و به صورت ساده از این مبحث بسیار خطرناک عبور نکنند .


اگر دوست داشتید به بلاگ بنده سر بزنید ( ترانگل ).