• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
امنیت آپلود فایل از طریق ftp
#1
چندتا سوال در مورد امنیت آپلود فایل دارم امیدوارم که به جوابشون برسم.سوالها عمومی هستند ولی بنده از ftp برای آپلود میخوام استفاده کنم
تووی یک سایت چند مورد امنیتی در مورد فایل ها گفته بود که خیلی جالب بودن بیشترشون رو متوجه نشدم دقیقا چی هستند.
1-تغییر نام تووی ftp موقع استفاده از تابع put خیلی راحت انجام میشه و مشکلی نداره اما تووی اکثر سایتها ما وقتی فایلی رو دانلود می کنیم معمولا با همون نام واقعی و یا نامی که کاربری که آپلود کرده اونو دانلود می کنیم چون اگه قراره سیستم نام فایل رو تغییر بده معمولا یک نام درهم و نامفهوم است .
2-کلا فایلهای زبانهای برنامه نویسی به خصوص php خطرناک محسوب میشن تووی سایتهایی که مخصوص مدیریت پروژه هستند و کاربر کل پروژه رو آپ میکنه روی سرور چطور امنیت این سایتها با وجود این نوع فایلها تامین میشه؟نمونه مطرح github
3-محتوای فایل تست شده است و در صورت نیاز با یک آنتی ویروس و اسکنر بررسی دقیق شده است
منظور چی محتوا بررسی بشه ؟ چطور انجام بدیم ؟ برای فایلهای تصویر از کتابخونه gd میشه فایل رو خوند و دوباره بازنویسی کرد و اگه کدی همراهش باشه به احتمال زیاد حذف میشه امام یکجا خوندم اگه کدی به صورت حرفه ایی تووی عکسی جاسازی بشه این کتابخونه نمی تونه تشخیصش بده و یا فایل های دیگه هم ظاهرا کتابخونه های اینچنینی دارند.ولی اینکار خودش کلی بار اضافی داره
4-فایل‌های آپلود شده به پوشه قابل دسترسی مستقیم از طریق url منتقل نشده است
چطور دسترسی مستقیم رو بگیریم منظور همون راه ساده یک فایل index.html و یا فایل آپاچیه؟
5-فایل‌های آپلود شده، include نشده‌اند.
6-فایل‌های آپلود شده به وسیله سرآمد (header) امن Content-Disposition سرو شده‌اند (تا به عنوان فایل ضمیمه جهت دانلود ارائه شوند و تحت دامنه شما اجرا نشوند).
7-برنامه، سرآیند X-Content-Type-Options: nosniff را ارسال کرده است تا براوزر با توجه به محتوا mime_type را تعیین نکند و برخلاف میل شما آن را احتمالا اجرا کند
8-تا زمانی که ضرورتی درکار نبود، برنامه از ارسال فایل با هدر‌های application/octet-stream, application/unknown, plain/text اجتناب ورزیده است.
9-دسترسی به فایل‌ها، صرفا با مخفی کردن مسیر آنها انجام نشده است
10-فایل‌های راه دور (از آدرس هاستی دیگر) اینکلود نشده است

ممنون میشم توضیح بدید اگه با مثال باشه که چه بهتر

هيچ اگر سايه پذيرد منم آن سايه هيچ
  پاسخ
تشکر شده توسط :
#2
(۱۳۹۳ خرداد ۰۲, ۰۱:۲۵ ق.ظ)majid1605 نوشته: چندتا سوال در مورد امنیت آپلود فایل دارم امیدوارم که به جوابشون برسم.سوالها عمومی هستند ولی بنده از ftp برای آپلود میخوام استفاده کنم
تووی یک سایت چند مورد امنیتی در مورد فایل ها گفته بود که خیلی جالب بودن بیشترشون رو متوجه نشدم دقیقا چی هستند.
1-تغییر نام تووی ftp موقع استفاده از تابع put خیلی راحت انجام میشه و مشکلی نداره اما تووی اکثر سایتها ما وقتی فایلی رو دانلود می کنیم معمولا با همون نام واقعی و یا نامی که کاربری که آپلود کرده اونو دانلود می کنیم چون اگه قراره سیستم نام فایل رو تغییر بده معمولا یک نام درهم و نامفهوم است .
2-کلا فایلهای زبانهای برنامه نویسی به خصوص php خطرناک محسوب میشن تووی سایتهایی که مخصوص مدیریت پروژه هستند و کاربر کل پروژه رو آپ میکنه روی سرور چطور امنیت این سایتها با وجود این نوع فایلها تامین میشه؟نمونه مطرح github
3-محتوای فایل تست شده است و در صورت نیاز با یک آنتی ویروس و اسکنر بررسی دقیق شده است
منظور چی محتوا بررسی بشه ؟ چطور انجام بدیم ؟ برای فایلهای تصویر از کتابخونه gd میشه فایل رو خوند و دوباره بازنویسی کرد و اگه کدی همراهش باشه به احتمال زیاد حذف میشه امام یکجا خوندم اگه کدی به صورت حرفه ایی تووی عکسی جاسازی بشه این کتابخونه نمی تونه تشخیصش بده و یا فایل های دیگه هم ظاهرا کتابخونه های اینچنینی دارند.ولی اینکار خودش کلی بار اضافی داره
4-فایل‌های آپلود شده به پوشه قابل دسترسی مستقیم از طریق url منتقل نشده است
چطور دسترسی مستقیم رو بگیریم منظور همون راه ساده یک فایل index.html و یا فایل آپاچیه؟
5-فایل‌های آپلود شده، include نشده‌اند.
6-فایل‌های آپلود شده به وسیله سرآمد (header) امن Content-Disposition سرو شده‌اند (تا به عنوان فایل ضمیمه جهت دانلود ارائه شوند و تحت دامنه شما اجرا نشوند).
7-برنامه، سرآیند X-Content-Type-Options: nosniff را ارسال کرده است تا براوزر با توجه به محتوا mime_type را تعیین نکند و برخلاف میل شما آن را احتمالا اجرا کند
8-تا زمانی که ضرورتی درکار نبود، برنامه از ارسال فایل با هدر‌های application/octet-stream, application/unknown, plain/text اجتناب ورزیده است.
9-دسترسی به فایل‌ها، صرفا با مخفی کردن مسیر آنها انجام نشده است
10-فایل‌های راه دور (از آدرس هاستی دیگر) اینکلود نشده است

ممنون میشم توضیح بدید اگه با مثال باشه که چه بهتر
1- اسم فایل ور میشه با هدر تغییر داد. مثلا
کد پی‌اچ‌پی:
header('Content-disposition: attachment;filename="July Report.pdf"'); 

۲- این بستگی به تنظیمات و نحوه پیاده سازی داره. مثلا اگر یک فایل php واسط وظیفه ارسال فایل دانلود رو داره نباید به پوشه دانلود دسترسی مستقیم آپاچی داده باشی. ولی اگر نه لینک مستقیم دادی و قرار فایل رو آپاچی ارسال بکنه باید با تنظیمات آپاچی اجازه اجرای فایلهای cgi و یا php رو توسط مفسر ندی.
۳- منظور با آنتی ویروس هست. مثلا clamav که بازمتن هست و اکتنشن phpش هم موجود هست.
۴- اپاچی به یک پوشه خاص برای مشاهده یک وبسایت دسترسی داره. مثلا
/var/www/mysite/public
شما نباید فایلهای دانلودی رو داخل این پوشه یا زیر مجموعش بزارید.
۵-
http://stackoverflow.com/questions/10148...ion-secure
۶- همون مثالی که در بالا زدم. ولی این مربوط به امنیت نیست و کاری به سمت سرور نداره فقط فایل رو اجبار می کنه که دانلود بشه نه اینکه مثلا اگر این هدر رو ارسال کنی فایل php رو اجرا نمی کنه. نه مثلا اگر یک محتوای text که توی mime type هم text ارسال کردی رو برای کاربر ارسال بکنی فایل برای دانلود ارسال نمیشه بلکه مشاهده میشه حالا اگر هدر (که بالا هدر رو گفتم) ارسال بشه برای دانلود ارسال میشه.
۷- این هدر هم که فکر کنم فقط مربوط به ie نسخه های قدیمیش میشه. مرورگر جدید ها اینکار رو فکر نکنم انجام بدن . ولی به هر حال یک هدر هست و ارسالش فکر نکنم ضرری داشته باشه
۸- نمی دونم منظورتون چی هست.
۹- همون چیزی که در بالاتر توضیح دادم. داخل پوشه که آپاچی دسترسی داره نباشه.
۱۰-
http://www.php.net/manual/en/filesystem....-url-fopen
  پاسخ
تشکر شده توسط : majid1605 M.J saeideng
#3
ممنون
ولی بحث تغییر نام منظورم این بود که این رو یکی از موارد امنیتی میدوند که اسمش رو تغییر بدیم ولی اکثر سایت ها اونو رعایت نمی کنند .حالا واقعا اینجوریه یعنی ضروری نیست که تغییر بدیم؟
نقل قول:۴- اپاچی به یک پوشه خاص برای مشاهده یک وبسایت دسترسی داره. مثلا
/var/www/mysite/public
شما نباید فایلهای دانلودی رو داخل این پوشه یا زیر مجموعش بزارید.
میشه یک مثال کاربردی در این مورد بزنید که بعدش چجوری به فایل ها دسترسی پیدا می کنیم؟
و همونطور که گفتید به طور معمول اطلاعات سایت ها تووی یه پوشه خاصه که اسمش بیشتر مواقع public_html هستش حالا ما یه پوشه در کنار همین پوشه ایجاد کنیم خارج از دید آپاچی میشه درسته ولی ادرس فایلها چه شکلی میشن ؟
ممنون میشم این یکی رو واسم جا بندازید چون یه جا خوندم بهتره همه سایت به همچین پوشه ایی منتقل و فقط از طریق یک فایل درون همین پوشه public_html به کل سایت دسترسی پیدا کنیم.

هيچ اگر سايه پذيرد منم آن سايه هيچ
  پاسخ
تشکر شده توسط :
#4
(۱۳۹۳ خرداد ۰۲, ۱۰:۱۰ ب.ظ)majid1605 نوشته: ممنون
ولی بحث تغییر نام منظورم این بود که این رو یکی از موارد امنیتی میدوند که اسمش رو تغییر بدیم ولی اکثر سایت ها اونو رعایت نمی کنند .حالا واقعا اینجوریه یعنی ضروری نیست که تغییر بدیم؟
نقل قول:۴- اپاچی به یک پوشه خاص برای مشاهده یک وبسایت دسترسی داره. مثلا
/var/www/mysite/public
شما نباید فایلهای دانلودی رو داخل این پوشه یا زیر مجموعش بزارید.
میشه یک مثال کاربردی در این مورد بزنید که بعدش چجوری به فایل ها دسترسی پیدا می کنیم؟
و همونطور که گفتید به طور معمول اطلاعات سایت ها تووی یه پوشه خاصه که اسمش بیشتر مواقع public_html هستش حالا ما یه پوشه در کنار همین پوشه ایجاد کنیم خارج از دید آپاچی میشه درسته ولی ادرس فایلها چه شکلی میشن ؟
ممنون میشم این یکی رو واسم جا بندازید چون یه جا خوندم بهتره همه سایت به همچین پوشه ایی منتقل و فقط از طریق یک فایل درون همین پوشه public_html به کل سایت دسترسی پیدا کنیم.

به نظر من تغییر نام یکی از موارد امنیتی محصوب نمیشه. فقط باید هواستون باشه که فایلهای کاربران روی همیدیگه Overide نشه.
در مورد سوال بعدیتون هم بله منظورم همین بود. حالا چه جوری دسترسی داشته باشین می تونید با خود php دسترسی داشته باشید فایل رو بخونید و ارسال کنید برای کاربر یا برای پرفورمنس و راحتی کار از xsendfile استفاده کنید که یک ماژول روی آپاچی هست.
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان