Mahdi Afiyati
1 سال پیش توسط Mahdi Afiyati مطرح شد
2 پاسخ

دیتابیس مشترک در یک سرور

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


ثبت پرسش جدید
میکائیل
تخصص : برنامه نویسی سمت سرور و کلاینت
@FullStack 1 سال پیش مطرح شد
0

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


محمد رضا
تخصص : Full Stack Developer
@salar.mohammad2013 1 سال پیش مطرح شد
0

سلام دوست عزیز
ببین در مرحله ی اول هیچوقت پیشنهاد نمیکنم چند سایت رو هم زمان بیایی داده هایی رو به طور یکسان توی همشون بریزی
چون به هر دلیلی و نقصی ممکنه یکی از سایت هات ابدیت نشه و داده هات متمایز بشه از هم
و اگر این کار به صورت دوره ای هم چک بشه و انجام بشه شما زمانی رو این بین داری که داده ها سینک نشده و باز هم متفاوت هست
حالا یکی از کارهایی که میتونی بکنی اینه که فقط اون دیتابیس user مشترک باشه و اطلاعات رو از اون بگیری و کاربر رو لاگین کنی
این که همه ی جداول همه ی سایت هات توی یک دیتابیس باشه قطعا کار سختی خواهد بود و ممکنه اسامی یکسانی توشون به کار رفته باشه
شما میتونی دیتابیس user رو فقط و فقط یه پروژه باهاش بالا بیاری برای لاگین مثل راکت auth.roocket
فرض میگیرم با یکسان سازی اطلاعات چند سایتت میخوایی هم زمان هم توشون لاگین بشی راه حل پیشنهادی :
یک ادرس اصلی مناسب خودت و کسب و کارت انتخاب میکنی و بقیه سایت ها رو زیر دامنه ی اون
کوکی ها و رو میتونی برای همه ی زیر دامنه های یک سایت در دسترس قرار بدی و با لاگین کردن توی یکی همه جا لاگین باشی (که قرار شد لاگین یک پروژه باشه برا خودش که فقط لاگین میکنه با یک زیر دامنه)
این موضوعی که گفتم چیز عرفی هست و گوگل هم داره ازش استفاده میکنه
مثلا گوگل سرچ کنسول با آدرس https://search.google.com و جمیل با آدرس https://mail.google.com
و خود راکت هم بخش کاربری user.roocket.ir هست و ما توی auth.roocket.ir لاگین میشیم و توی خود roocket.ir هم لاگینیم دیگه
اگر نگران api هم هستی میتونی که دسترسی خارج از ip سرور خودت رو ببندی
یعنی همچنان که همه ی پروژه هات توی یک سرور هستن اما دیتابیس متفاوت
اما من از یک طرف این رو هم بگم که نمیدونم شدنی هست که دیتابس user جدا باشه کامل یا نه و مکانیزم لاگین چک کردن پروژتون چی با چیه مثلا توی لاراول سنکتوم یه جدولی داریم که توکن توش ذخیره میشه که هر بار لاراول از دیتابیس خودش میاد لاگین بودن شخص رو چک میکنه و شما نهایتن برای یک بار مجبوری با یک api و ارسال توکن درخواستی به سایتت چک کنی اگر این توکن لاگین شده همون توکن و اطلاعاتش که شامل expire date میشه رو هم مجدد بگیری از قسمت لاگینت که باز اگر شخص توی سایت دیگه ای خروج زده باشه این توکن همجنان توی سایت دیگر به دلیل سینک نشدن فعاله
پس احتمال میره مجبور بشی دیتابیس خودت رو هم یکی بکنی
اما شما فقط میخوایی اطلاعات ثبت نامی کاربرت رو نگه داری
پس میتونی فقط دیتابیسی برا اطلاعات داشته باشی و موقع ورود فقط و فقط اطلاعات تکمیلی رو از اون دیتابیس درخواست کنی
چالش هایی وجود خواهد داشت قطعا برات امیدوارم بیشتر گیجت نکرده باشم :))


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام