PDA

View Full Version : حرفه ای: بهترین روش برای ارتباط با بانک اطلاعاتی



r0ot$harp
دوشنبه 22 خرداد 1391, 21:49 عصر
سلام دوستان عزیز

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

این روش مشکلی نداره جز سرعت پایین.!!!

به نظر شما بهترین روش چیه؟؟؟؟

به نظر شما اگر بیایم و با استفاده از قابلیت خود Sql Server که SSL داره برنامه رو تغیر بدیم امنیت به خطر نمیوفته.چون با این روش کار نکردم.
باتشکر احسان

NasimBamdad
دوشنبه 22 خرداد 1391, 22:11 عصر
پیشنهاد می کنم بیخیال SQL بشوید . از اوراکل استفاده کنید . الگوریتم های اوراکل در استفاده از RAM , CPU ..... بهتر هست . کلا برای دیتابیس های سنگین از اوراکل استفاده می شود

OracleB
دوشنبه 22 خرداد 1391, 22:55 عصر
احسان جان اگر بار بالایی داره سایتت به شما پیشنهاد میکنم از OR mapper با استفاده از لایه caching استفاده کنید.
اگر نیاز به session برای مدیریت کاربرها دارید هم استفاده از وب سرویس کارتون رو بسیار سخت میکنه و من پیشنهاد میکنم تو تصمیمتون بازنگری کنید
در ضمن استفاده از وب سرویس هیچ کمک امنیتی به سرویستون نمیکنه (با استناد به چه مبنایی میگید استفاده از وب سرویس امن تره؟ من با این نظرتون مخافم دوست عزیز)
پیشنهاد بهینه من :
استفاده از معماری J2EE
db: oracle, mysql or postgre
ORM: hibernate or toplink
Caching: Ehcache
business: MVC-Spring
security: Acegi-spring
SSO: CAS
Encryption: SSL
بر پایه معماری J2EE و با استفاده از تنظیمات SSL بر روی Aplication server امنیت و مقیاس پذیری کاملا تامین میشود
البته مقوله امنیت کلی داستان دیگه هم داره که مربوط به امنیت application server سیستم عامل و تنظیمات شبکتون میشه و به برنامه نویس ارتباطی نداره
در ضمن تمام حملات اساسی که به پایگاه داده یا application server انجام میشه (نظیر XSS و انواع Injection) بر روی وب سرویس هم قابل اعمال است و ایجاد امنیت برای وب سرویس به مراتب سخت تر است

r0ot$harp
سه شنبه 23 خرداد 1391, 01:00 صبح
سلام دوستان عزیز

ممنون بابت پاسخ هاتون.

نرم افزار ما یک نرم افزار Windows Application بر پایه عملیات بانکی هست. تو فکر استفاده از Oracle هستیم. اما این کوچ بزرگ هزینه زیادی برای ما و کارفرما داره. و این هزینه هم مالی هست و هم زمانی. سوال اصلی من روی بحث سطوح دسترسی هست. چرا؟؟؟ خوب هر کدوم از این کلاینت ها یک سری سطوح دسترسی به اطلاعات خودشون دارند. و نباید امکان استفاده از اطلاعات دیگران باشه. خوب مدیریت 20 هزار کاربر کار ساده ای نیست. نظر من این هست که برای هر کاربر تو Sql Server یک کاربر اضافه کنیم. خوب بحث دادن سطوح دسترسی یک بحث دیگری هست. مشکل بعدی این هست که به فرض ما از Protector خوبی استفاده کنیم که برگدوندن سورس رو تقریبا 10 درصد بکنه. اومدیم و سورس برگشت. خوب اطلاعات دسترسی هر کاربر به بانک اطلاعاتی هم لو می ره. یکی دیگه از دلایلی که از وب سرویس استفاده کردیم. اینطوری دیگه اطلاعاتی نیست که لو بره. بر اساس درخواست پاسخ میگیرند. درخواست ها هم کوئری نیست پیغام های از پیش طراحی شده هستند. اما خوب مشکل سرعت خیلی مهم هست که نتونستیم حلش بکنیم.

واقعا نمی دونیم الان چی کار کنیم. چون کاربران کمی ناراضی هستند.

در مورد استفاده از وب سرویس امن تر هست یا خیر؟؟؟ می شه گفت امن تر هست. چرا؟؟؟ ما در ابتدا وقتی درخواستی میاد از سرور درخواست کلیدی رندوم می کنیم. سرور کلید رندوم رو ارسال می کنیم. پس از دریافت کلید و با استفاده از نام کاربری و رمز عبور کاربر وارد شده اقدام به کد کردن اطلاعات می کنیم. در آخر هم اطلاعات رو Sign می کنیم. این رو هم بگم وب سرویس هم از SSL داره استفاده می کنه. امن تر از این رو که کوئری ردو بدل نمی شه. پیغام ها از قبل تعیین شده هستند. مخرب نمی تونن باشند. اینا همه محاسن این روش هست.

باتشکر احسان

OracleB
سه شنبه 23 خرداد 1391, 13:07 عصر
ببین دوست گلم قبل از port به oracle حتما یک performance analysis انجام بده به نظر من مشکل کندیت از db نیست (یا حداقل بخش اعظمش)
وب سرویس ذاتا فرآیند کندیه و بار زیادی رو شبکه و لایه business میگذاره ضمن اینکه با این داستانای رمزنگاری هم که گفتی و با این معماری قطعا thin client ندارید و یک app گنده هم واسه مشتری نوشتید که به روز کردن اون هم در آینده سرویس میکنتون
ببین سناریوی شما جون میده واسه SOA و برای مدیریت Authorization هم اگر تو جاوا بودی خیلی میتونستم کمکت کنم ولی خیلی .net کار نیستم ولی فکر کنم LDAP یا activeDirectory یه Solution های نیم بندی دارند.
مشکل performance رو من جای شما بودم اینجوری حل میکردم: انجام performance analysis و پیدا کردن bottleneck، استفاده از کش لایه business (نمیدونم solution .net چیه ولی حتما یه چیزی براش داره)، استفاده از https به جای soap (سربار لایه شبکه کم میشه) ، در ضمن اون چیزایی رو هم که راجب اینکه دستور و نمیفرستی و از این حرفها لزوما مربوط به وب سرویس نمیشه و با هر مدل دیگه از SOA میتونی همین کارها رو بکنی، همچنین با این سناریوی رمزی که دارید استفاده میکنید دارید چرخ رو از نو اختراع میکنید، session رو واسه همین کارها خلق کردند، ضمن اینکه توی معماری که من پیشنهاد کردم روی مشتری چیزی نصب نمیکنی و بعدها بدبختی های maintainancce رو نخواهی داشت
موفق باشی