PDA

View Full Version : سوال: کمک برای ساخت قسمت آپلود فایل



ehsanfotoo
شنبه 16 مرداد 1395, 18:58 عصر
سلام

یک سایت برای آپلود فایل داریم که نسخه جدید آن را از پایه برنامه نویسی کردیم. اسکریپت بر روی یک سرور نصب است و فایل ها بر روی سرور دیگر آپلود می شوند. بر روی هر دو سرور SSL نصب کردیم.
مشکلی که داریم این هست که نمیدانیم چه طور قسمت آپلود فایل را بسازیم. چون بر روی هر دو سرور SSL نصب است ، هر روشی که استفاده می کنیم ، مشکل امنیتی پیش می آید.
آیا روشی سراغ دارید که بتوانیم بدون مشکل امنیتی ، قسمت آپلود کردن فایل را بسازیم؟

با تشکر

plague
شنبه 16 مرداد 1395, 20:48 عصر
از ftp استفاده کن برای انتقال فایل ها از سرور اول به دوم

ehsanfotoo
شنبه 16 مرداد 1395, 21:02 عصر
از ftp استفاده کن برای انتقال فایل ها از سرور اول به دوم

عملیات رو سرور اسکریپت انجام می شه ( حالا می خواد از FTP بگیره یا آپلود کنه یا از لینک بخونه ) . بعد که سرور یک به سرور دو می خواد انتقال بده چون هر دو روی HTTPS هستند به خاطر مسائل امنیتی هی مجبوریم که کدها رو متفاوت کنیم

mohamadali1374
شنبه 16 مرداد 1395, 22:32 عصر
سلام
یه راه اینه که ابتدا فایل ها روی سرور اول آپلود شوند و یه صف ایجاد کنید که با استفاده از لیچ که سرعت بالایی داره فایل ها به سرور دوم انتقال داده بشوند. (البته به این موضوع هم توجه کنید که اکثر هاست های اشتراکی اجازه آپلود فایل بیشتر از 20 مگابایت رو نمیدن)
راه دوم از سرور مجازی استفاده کنید گران تر میشه ولی چون فضایی که در اختیار دارید زیاده نیازی به دو تا سرور نیست.



از ftp استفاده کن برای انتقال فایل ها از سرور اول به دوم


الا می خواد از FTP بگیره یا آپلود کنه یا از لینک بخونه

منظور اینه که ما یسری کد php داریم که عمل انتقال رو با پروتکل ftp انجام میدن و وقتی که شما فایل رو از طریق فرم گرفتید با استفاده از این کدها و با پروتکل ftp فایل ها به سرور دوم انتقال داده میشه .
ولی همونطور که در بالا گفتم هاست های اشتراکی محدودیت دارن و اجازه POST بیشتر از 20 مگ رو نمیدن.

ehsanfotoo
شنبه 16 مرداد 1395, 23:39 عصر
سلام
یه راه اینه که ابتدا فایل ها روی سرور اول آپلود شوند و یه صف ایجاد کنید که با استفاده از لیچ که سرعت بالایی داره فایل ها به سرور دوم انتقال داده بشوند. (البته به این موضوع هم توجه کنید که اکثر هاست های اشتراکی اجازه آپلود فایل بیشتر از 20 مگابایت رو نمیدن)
راه دوم از سرور مجازی استفاده کنید گران تر میشه ولی چون فضایی که در اختیار دارید زیاده نیازی به دو تا سرور نیست.
ما کلاً از سرور مجازی استفاده می کنیم.
راهی وجود داره که فایل ها مستقیماً بر روی سرور ذخیره سازی آپلود شوند؟ حجم فایل های آپلودی زیاد هست ، به همین دلیل آپلود فایل ها روی سرور اسکریپت و سپس لیچ کردن آنها کار معقولی نیست...

plague
یک شنبه 17 مرداد 1395, 11:30 صبح
عملیات رو سرور اسکریپت انجام می شه ( حالا می خواد از FTP بگیره یا آپلود کنه یا از لینک بخونه ) . بعد که سرور یک به سرور دو می خواد انتقال بده چون هر دو روی HTTPS هستند به خاطر مسائل امنیتی هی مجبوریم که کدها رو متفاوت کنیم

من متوجه نمیشم این جواب شما چه ربطی به حرفی که من زدم داره شاید من بد برداشت کردم شاید شما

1 - ftp ربطی به http نداره حالا چه S داشته باشه چه نداشته باشه ! قرار نیست از پروتکل HTTP استفاده بشه

2 - کد های PHP هم میتون با FTP کار کنن فقط مخصوص آدم ها و نرمافزار هایی مثل CUTE FTP نیست اصلا برای همین کار ساخته شده

3 - منظور من اینه که با استفاده از FTP مستقیم فایل روانتقال بدین به سرور دوم

اصلا پروتکل FTP اسمش روشه برای انتقال فایل ساخته شده !

ehsanfotoo
پنج شنبه 21 مرداد 1395, 18:29 عصر
من متوجه نمیشم این جواب شما چه ربطی به حرفی که من زدم داره شاید من بد برداشت کردم شاید شما

1 - ftp ربطی به http نداره حالا چه S داشته باشه چه نداشته باشه ! قرار نیست از پروتکل HTTP استفاده بشه

2 - کد های PHP هم میتون با FTP کار کنن فقط مخصوص آدم ها و نرمافزار هایی مثل CUTE FTP نیست اصلا برای همین کار ساخته شده

3 - منظور من اینه که با استفاده از FTP مستقیم فایل روانتقال بدین به سرور دوم

اصلا پروتکل FTP اسمش روشه برای انتقال فایل ساخته شده !

این که کاملاً مشخص هست که ftp هیچ ربطی به https نداره!
مشکلی که ftp داره اینه که connection less هست. برای همین نمیتونیم بفهمیم که آیا واقعاً فایل به صورت کامل و بدون مشکل آپلود میشه یا نه.

plague
جمعه 22 مرداد 1395, 02:02 صبح
1 - تابع ftp_put در صورتی که آپلود ناموفق باشه false برمیگردونه
2 - خیلی از ftp ها این آپشن رو دارن که در هنگام آپلود یه فایل پسوندی بهش اضافه میکنن که مشخص باشه این در حال آپلوده و وقتی آپلود تمام شد اون فرمت اضافه رو برمیدارن شما میتونید بعد از انجام آپلود نام فایل رو چک کنید رو سرور دوم
3 - راه سوم اینکه شما میتونید بعد از اتمام آپلود با ftp_size سایز فایل آپلود شده و چک کنید و از این طریق مطمئن بشید که آپلود موفق بوده

ehsanfotoo
جمعه 22 مرداد 1395, 09:18 صبح
1 - تابع ftp_put در صورتی که آپلود ناموفق باشه false برمیگردونه
2 - خیلی از ftp ها این آپشن رو دارن که در هنگام آپلود یه فایل پسوندی بهش اضافه میکنن که مشخص باشه این در حال آپلوده و وقتی آپلود تمام شد اون فرمت اضافه رو برمیدارن شما میتونید بعد از انجام آپلود نام فایل رو چک کنید رو سرور دوم
3 - راه سوم اینکه شما میتونید بعد از اتمام آپلود با ftp_size سایز فایل آپلود شده و چک کنید و از این طریق مطمئن بشید که آپلود موفق بوده

ممنون دوست عزیز.
امکانش هست در مورد مورد دوم بیشتر توضیح بدید؟

plague
جمعه 22 مرداد 1395, 14:12 عصر
مورد 2 از طریق تنظیمات ftp server هستش که میتونید به پشتیبانتون بگید اگه داره فعال کنن
در کل پیشنهاد من اینه که
کاربر روی سرور اول آپلود میکنه و سپس از طریق ftp منتقل بشه از سرور اول به سرور دوم (همون لحظه ) و نام فایل تو دیتبایس ثبت میشه
بعد شما یه کرون جاب جاب میزارید که میاد نام فایل ها رو از دیتبایس میخونه و در سرور دوم چک میکنه ببینه سایزش چقدره
(حالا یا نامش رو چک میکنه که در سرور دوم هست یا نه )
اگه درست بود پاک کنه از سرور اول فایل رو
اگه نبود یعنی فایل درست منتقل نشده این رو دوباره منتقل کنه

ehsanfotoo
جمعه 22 مرداد 1395, 17:37 عصر
مورد 2 از طریق تنظیمات ftp server هستش که میتونید به پشتیبانتون بگید اگه داره فعال کنن
در کل پیشنهاد من اینه که
کاربر روی سرور اول آپلود میکنه و سپس از طریق ftp منتقل بشه از سرور اول به سرور دوم (همون لحظه ) و نام فایل تو دیتبایس ثبت میشه
بعد شما یه کرون جاب جاب میزارید که میاد نام فایل ها رو از دیتبایس میخونه و در سرور دوم چک میکنه ببینه سایزش چقدره
(حالا یا نامش رو چک میکنه که در سرور دوم هست یا نه )
اگه درست بود پاک کنه از سرور اول فایل رو
اگه نبود یعنی فایل درست منتقل نشده این رو دوباره منتقل کنه

این روش دو تا مشکل داره:

1- کانفیگ سرور ذخیره سازی با کانفیگ سرور اسکریپت با هم تفاوت داره.

2- حجم فایل ها زیاد هست و نمیتونیم کاری کنیم که اول فایل ها روی سرور اسکریپت آپلود شوند سپس به سرور ذخیره سازی انتقال داده شوند. باید فایل ها مستقیم روی سرور ذخیره سازی آپلود شوند.

plague
جمعه 22 مرداد 1395, 19:54 عصر
مشکل 1 رو متوجه نیشم سرور ها 2 کامپیوتر مجزا هستن
قسمت پوش نرمافزار اف تی پی سرور دوم تنظیم بشه چه ارتباطی داره به سرور اول ؟

2 - یه مثال بزنید که حجم هر آپلود به طور متوسط چقدر خواهد بود
و آیا قراره که فایل ها یکجا آپلود بشن یا جدا جدا توسط کاربر های مختلف در زمان های مختلف آپلود بشن ؟ (گویا سایت اشتراک گزاری عکس هست ؟ )

ehsanfotoo
شنبه 23 مرداد 1395, 00:00 صبح
مشکل 1 رو متوجه نیشم سرور ها 2 کامپیوتر مجزا هستن
قسمت پوش نرمافزار اف تی پی سرور دوم تنظیم بشه چه ارتباطی داره به سرور اول ؟

2 - یه مثال بزنید که حجم هر آپلود به طور متوسط چقدر خواهد بود
و آیا قراره که فایل ها یکجا آپلود بشن یا جدا جدا توسط کاربر های مختلف در زمان های مختلف آپلود بشن ؟ (گویا سایت اشتراک گزاری عکس هست ؟ )

برای مورد 1: کانفیگ سرور اسکریپت و سرور ذخیره سازی فایل با هم متفاوت است. در سرور اسکریپت خیلی از فانکشن ها و پرت ها بسته میشن و خیلی از موارد غیرفعال میشوند یا اصلاً روی سرور نصب نمیشوند. پس ما نمی توانیم از یک سرور هم به عنوان سرور اسکریپت و هم به عنوان سرور ذخیره فایل استفاده کنیم.

برای مورد 2: کاربرها میتونن فایل تا حجم 5 گیگابایت آپلود کنند. سایت کلاً برای ذخیره فایل است و فقط مربوط به عکس نمیشود. هم چنین ما بیش از یک سرور برای ذخیره سازی فایل ها در نظر می گیریم ، پس فایل ها در یک جا آپلود نمیشوند.

plague
شنبه 23 مرداد 1395, 19:16 عصر
برای مورد 1: کانفیگ سرور اسکریپت و سرور ذخیره سازی فایل با هم متفاوت است. در سرور اسکریپت خیلی از فانکشن ها و پرت ها بسته میشن و خیلی از موارد غیرفعال میشوند یا اصلاً روی سرور نصب نمیشوند. پس ما نمی توانیم از یک سرور هم به عنوان سرور اسکریپت و هم به عنوان سرور ذخیره فایل استفاده کنیم.


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





برای مورد 2: کاربرها میتونن فایل تا حجم 5 گیگابایت آپلود کنند. سایت کلاً برای ذخیره فایل است و فقط مربوط به عکس نمیشود. هم چنین ما بیش از یک سرور برای ذخیره سازی فایل ها در نظر می گیریم ، پس فایل ها در یک جا آپلود نمیشوند.
به نظرم شما در هر صورت مکانیزمی برای بکاپ گرفتن از فایل ها نیاز دارید (اه براتون مهمه )
اگه سرورتون قوی باشه یه انتقال فایل سرور به سرور مشکل خاصی ایجاد نمیکنه که ازش هراس داشته باشید

ehsanfotoo
شنبه 23 مرداد 1395, 19:43 عصر
به نظرم شما در هر صورت مکانیزمی برای بکاپ گرفتن از فایل ها نیاز دارید (اه براتون مهمه )
اگه سرورتون قوی باشه یه انتقال فایل سرور به سرور مشکل خاصی ایجاد نمیکنه که ازش هراس داشته باشید

شما فرمودید که با ftp ، فایل ها به صورت مستقیم در سرور ذخیره سازی فایل آپلود می شوند.
پس این مورد "انتقال فایل سرور به سرور" برای چی هست؟

plague
شنبه 23 مرداد 1395, 23:22 عصر
سرور به سرور در صورتی که مایل باشید که کاربر در سرور 1 آپلود کنه و از طریق اف تی پی به سرور دوم منتقل بشه
یا اینکه کاربر در سرور 1 آپلود بکنه و فایل ها توسط کرون جاب صف بندی و منتقل بشن

شما میتونید در یک دایرکتوری قبل از Public_html آپلود بکنید فایل ها رو روی سرور 1 (از لحاظ امنیت ) چون اینجوری قابل دسترسی برای کاربر نخواهند بود

ehsanfotoo
شنبه 23 مرداد 1395, 23:35 عصر
از این لحاظ مشکلی نداریم. چون خودمون تعیین می کنیم فایل ها روی سرور یک آپلود شوند. بعد که دیدیم هارد سرور یک داره پر میشه ، میایم سرور دوم تعریف میکنیم...
مشکل اصلی ما همون آپلود کردن به وسیله https روی سرور هست. نمیتونیم فقط با ftp کار کنیم ، چون ممکنه به هر دلیلی ftp مشکل پیدا کنه و کاربرها نتونن فایل آپلود کنند ، پس باید یک روش دیگر برای آپلود کردن فایل بگذاریم.
خیلی با ftp کار نکردیم. امکانش هست یک توضیح جامع بدید که باید چه کار کنیم؟

plague
یک شنبه 24 مرداد 1395, 14:19 عصر
بزارید یه سوال دیگه بپرسم که همون اول باید پرسیده میشد شاید مشکلتون رو زودتر حل میکرد
میشه بگید که آپلود فایل معمولی از طریق http چه مشکل امنیتی ایجاد میکنه براتون که انقد ازش فراری هستید و فکر میکنید خطر ساز میشه ؟
ssl یه لایه انکریپشن رو وارد چرخه ارتباط میکنه ... خیلی هم خوب ... حالا دلیلش چیه شما فکر میکنید آپلود فایلتون به شیوه رایج امن نیست ؟!

شما باید نگران خوده فایل آپلود شده باشید !

ehsanfotoo
یک شنبه 24 مرداد 1395, 17:23 عصر
بزارید یه سوال دیگه بپرسم که همون اول باید پرسیده میشد شاید مشکلتون رو زودتر حل میکرد
میشه بگید که آپلود فایل معمولی از طریق http چه مشکل امنیتی ایجاد میکنه براتون که انقد ازش فراری هستید و فکر میکنید خطر ساز میشه ؟
ssl یه لایه انکریپشن رو وارد چرخه ارتباط میکنه ... خیلی هم خوب ... حالا دلیلش چیه شما فکر میکنید آپلود فایلتون به شیوه رایج امن نیست ؟!
شما باید نگران خوده فایل آپلود شده باشید !

اتفاقاً اصلاً به فکر ssl برای آپلود فایل ها نبودیم.
بیشتر برای تراکنش های مالی و بعد امنیت کاربرها ssl نصب کردیم.

plague
یک شنبه 24 مرداد 1395, 19:29 عصر
دوست عزیز نفس آپلود فایل به روش رایج مشکل امنیتی نداره و ایجاد نمیکنه وگرنه کسی فایل آپلود نمیکرد
اون خوده فایل آپلود شدست که میتونه مشکل امنیتی پیش بیاره در صورت مخرب بودن که راجب اون موضوع تو بخش امنیت تاپیک هست

یجورایی بخاطر کلی گویی ها مشکل شما (یا چیزی که تصور میکنید مشکله ) بدون پاسخ میمونه
بزارید یجور دیگه با نقل قول بگم

مشکلی که داریم این هست که نمیدانیم چه طور قسمت آپلود فایل را بسازیم. چون بر روی هر دو سرور SSL نصب است ، هر روشی که استفاده می کنیم ، مشکل امنیتی پیش می آید.
خب دقیقا از کدوم مشکل امنیتی حرف میزنید یه مثال بزنید؟

ehsanfotoo
سه شنبه 02 شهریور 1395, 10:10 صبح
ممنون عزیز. مشکلمون حل شد.
یکجا اشتباه از خودمون بود که اشتباه را فهمیدیم و مشکل را حل کردیم...