PDA

View Full Version : گفتگو: امن ترین login برای برنامه های تحت ویندوز



h.rezaee
پنج شنبه 03 اسفند 1391, 17:30 عصر
سلام بر دوستان حرفه ای . بنده برنامه ای رو شروع کردم برای یکی از شرکت ها. امنیت برای این شرکت از همه چیز مهم تره! برای همین هم می خوام از شما دوستان کمک و راهنمایی بگیرم تا امن ترین راه رو برای این نرم افزار انتخاب کنم. اطلاعاتی که درباره این نرم افزار میتونم بهتون بدم اینه که بانکش sql server 2008 r2، از C#‎‎ 2010 و net 3.5. استفاده میکنم.علاوه بر این می خوان میزان دسترسی بر اساس کاربر و ادمین داشته باشن. مثلا کسی که وارد برنامه میشه برای استفاده ، اگه ادمین باشه امکان حذف رکورد و.... رو داشته باشه ولی کاربر دیگه ای که به عنوان کاربر معمولی وارد برنامه میشه فقط امکان دیدن رو داشته باشه. اگه اطلاعاتی دیگه هم خواستین ( که فکر نمی کنم نیاز باشه ! ) بهتون میدم.

danialafshari
پنج شنبه 03 اسفند 1391, 17:50 عصر
سلام دوست عزیز
به نظر میرسه که برنامه ی شما برای کامپیوتر های شبکه ی یک شرکت می باشد که از طریق Lan به یکدیگر متصل هستند
یعنی شما امنیتی که می خوای برای عدم دسترسی کارکنان به مدیره دیگه؟
خب باید روی برنامت Access Control قرار بدی و می تونی Password های User Name هاتو رمز نگاری کنی
موفق باشی

h.rezaee
پنج شنبه 03 اسفند 1391, 18:06 عصر
به نظر میرسه که برنامه ی شما برای کامپیوتر های شبکه ی یک شرکت می باشد که از طریق Lan به یکدیگر متصل هستند

ممنون از پاسخ تون. دقیقا همین طوره. حالا به نظر شما بهترین راه برای قرار دادن این سطح دسترسی " البته اگه منظورتون رو اشتباه متوجه نشده باشم " ( access control ) چی میتونه باشه؟

danialafshari
پنج شنبه 03 اسفند 1391, 18:11 عصر
برای نام های کاربری محدودیت ایجاد کنید
کلا در برنامه به صورت کلی بیشتر از دو سطح دسترسی که وجود نداره دیگه ! یه ادمین یا مدیر با یه مهمان
یک متغیر بولی میزاری bool و مثلا اگر true بود کل برنامه در اختیارشه و اگر false بود visible یا enable بعضی بخش ها رو fasle میکنی
به صورت کلی بود
نمونشو قبلا در فروم ساختم و قرار دادم
موفق باشید

h.rezaee
پنج شنبه 03 اسفند 1391, 18:25 عصر
دوست عزیز میتونی لینکش رو بزاری؟

danialafshari
پنج شنبه 03 اسفند 1391, 18:29 عصر
دوست عزیز میتونی لینکش رو بزاری؟

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

veniz2008
پنج شنبه 03 اسفند 1391, 20:34 عصر
سلام. همونطور که دوستمون اشاره کردن بهتره پسوردهای کاربران رو بصورت رمزنگاری شده درون دیتابیس ذخیره کنید. قسمت های حساسی رو که مدیر باید مدیریت کنه رمز عبور بذارید (یعنی با وجود لاگین کردن مدیر، حتی اگر خواست از بعضی قسمت های مهم استفاده کنه ازش پسورد بخواید(این پسورد با پسورد زمان ورود یکی نیست).برای این قسمت ها، میتونید اجازه ورود 3 بار پسورد رو بذارید و اگر 3 بار اشتباه وارد کرد از برنامه خارجش کنید. همچنین میتونید (و چون گفتید امنیتی هست بهتر هم هست) که هر شخصی که لاگین میکنه، نام کاربریش و ip سیستم رو درون یک جدول (به همراه تاریخ و زمان) ثبت کنید تا اگر شخصی با یوزر و id شخص دیگه ای ورود کرد بتونید سیستم متخلف رو شناسایی کنید.

damanpak
پنج شنبه 03 اسفند 1391, 20:53 عصر
سلام
برای اینکه برنامه ات امن تر هم بشه به قول چندتا از دوستا از رمز نگاری هم استفاده کن
و پیشنهاد من الگوریتم های رمز نگاری MD5 هستش

FastCode
پنج شنبه 03 اسفند 1391, 21:16 عصر
چرا من هر موقع زیاد مینویسم دستم میخوره روی Ctrl+W؟
شما این لینک ها رو بخون
http://msdn.microsoft.com/en-us/library/ff647503.aspx
http://stackoverflow.com/questions/3649615/how-should-i-savely-store-encrypted-user-data-on-my-server-and-serve-it-only-to
http://srp.stanford.edu/whatisit.html

docendo
پنج شنبه 03 اسفند 1391, 21:49 عصر
شما بایست لاگین برنامه خودتان را با اکسس کنترول سرورتان ست دهید یعنی وفتی یک کاربر شرکت وارد برنامه تان میشود لاگین برنامه تان با اکسس کنترول سرور را چک میکند و با توجه به میزان دسترسی کاربر به سرور اون میزان دسترسی را برای برنامه تان تنظیم میکند
یا اینکه اگر به سرور دسترسی دارید نوع تنظیمات کاربری را مطابق با تنظیمات سرور بنویسید

h.rezaee
جمعه 04 اسفند 1391, 09:43 صبح
سلام یه سوال دیگه؟؟؟؟؟؟؟؟؟؟؟؟؟؟
اگه بخوام از login خود VS استفاده کنم چه جوریه ؟

veniz2008
جمعه 04 اسفند 1391, 11:40 صبح
ویژوال برای win app کنترل لاگین نداره ( اون کنترل لاگین مربوط به asp.net هست).

h.rezaee
جمعه 04 اسفند 1391, 12:07 عصر
ویژوال برای win app کنترل لاگین نداره ( اون کنترل لاگین مربوط به asp.net هست).
کامپوننتی ، نمونه کدی ،چیزی واسه win app نیست؟ یا اگه دارید بزارید ممنون میشم.

veniz2008
جمعه 04 اسفند 1391, 14:02 عصر
واسه لاگین کردن، شما باید یه select به جدول کاربران بزنید و ببینید که آیا یوزرنیم و پسوردی که کاربر وارد کرده وجود داره یا نه. جواب select رو داخل یه دیتاتیبل بریزید و سطرهای دیتاتیبل رو چک کنید (dt.rows.count). اگر سطرها بیشتر از 0 بودن یعنی چنین کاربری وجود داره و اجازه ورود به فرم اصلی رو داره ، در غیراینصورت یوزر و پسورد وارد شده صحیح نیست.

mahdad sepah
جمعه 04 اسفند 1391, 14:21 عصر
سلام دوستان
چه جوری میشه بعد از login کردن کاربر وارد شده را تشخیص داد؟؟

veniz2008
جمعه 04 اسفند 1391, 14:52 عصر
سلام دوستان
چه جوری میشه بعد از login کردن کاربر وارد شده را تشخیص داد؟؟
منظورتون از تشخیص چیه؟.اینکه اون شخص چه سمت شغلی داره؟؟ یا ...

mahdad sepah
جمعه 04 اسفند 1391, 14:54 عصر
منظورتون از تشخیص چیه؟.اینکه اون شخص چه سمت شغلی داره؟؟ یا ...
نه یعنی مثلا کاربر "علی"وارد شد یه جا بنویسه کاربر علی وارد شده!!

veniz2008
جمعه 04 اسفند 1391, 15:10 عصر
خوب زمانیکه یوزر و پسورد رو صحیح وارد کرد، نام و نام خانوادگیش رو از جدول بخونید و به فرم اصلی (بعد از فرم لاگین) منتقل کنید. در مورد انتقال مقادیر بین فرم ها هم بارها توضیح داده شده.

danialafshari
جمعه 04 اسفند 1391, 16:00 عصر
سلام
پیداش کردم
بفرمائید :

در قسمت نمونه کدهای سی شارپ هم قرارش دادم
لینک (http://barnamenevis.org/showthread.php?64210-%D9%86%D9%85%D9%88%D9%86%D9%87-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%87%D8%A7%DB%8C-%DA%A9%D9%88%DA%86%DA%A9-%D9%88-%D9%85%D9%81%D9%8A%D8%AF-%D8%AF%D8%B1-%D8%B3%D9%8A-%D8%B4%D8%A7%D8%B1%D9%BE&p=1707265#post1707265)

h.rezaee
جمعه 04 اسفند 1391, 17:19 عصر
دوست عزیز واسه لاگین هم یه نمونه سورس بزار:بوس:

FastCode
جمعه 04 اسفند 1391, 17:48 عصر
میتونید یه چیزی شبیه این استفاده کنید:
یک کلاس درخواست login که از سمت کلاینت برای سرور ارسال میشه.
یک کلاس Authenticator که رمز ها رو چک میکنه و سطح دسترسی های هر کاربر رو از هر جایی که ذخیره شدن میخونه
یک کلاس ه Singleton در سرور که session ها رو نگهداری کنه و Try های هر IP یا range ه IP رو برای جلوگیری از bruteforce نگه داری میکنه.
یک کلاس Session که Token های مربوط به login و سطح دسترسی های موجود رو به کلاینت بفرسته.
برای هر درخواستی که کلاینت میخواد اجرا کنه باید سطح دسترسیش در سرور چک بشه.در غیر این صورت بهتره سطح دسترسی نزارید.

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

danialafshari
جمعه 04 اسفند 1391, 18:44 عصر
دوست عزیز واسه لاگین هم یه نمونه سورس بزار:بوس:

در لینک که یک نمونه سورس بود !
لینک (http://barnamenevis.org/showthread.php?64210-%D9%86%D9%85%D9%88%D9%86%D9%87-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%87%D8%A7%DB%8C-%DA%A9%D9%88%DA%86%DA%A9-%D9%88-%D9%85%D9%81%D9%8A%D8%AF-%D8%AF%D8%B1-%D8%B3%D9%8A-%D8%B4%D8%A7%D8%B1%D9%BE&p=1707265#post1707265)

FastCode
یک شنبه 06 اسفند 1391, 18:30 عصر
وقتی مینویسید امن ترین باید یک مقدار بیشتر روی طراحیش کار کنید.لینک stackoverflow رو خوندید؟

h.rezaee
یک شنبه 06 اسفند 1391, 18:46 عصر
وقتی مینویسید امن ترین باید یک مقدار بیشتر روی طراحیش کار کنید.لینک stackoverflow رو خوندید؟
ممنون از این که بهم کمک می کنی. بله کامل خوندم " البته چون انگلیسی ایم خیلی خوب نیست" دست و پا شکسته فهمیدم منظورش چیه. اگه بتونی بیشتر راهنمایی کنی ممنون میشم. البته این رو هم درنظر داشته باشیم که می خوام واسه هر کاربر سطح دسترسی تعریف کنم مثلا کاربری که با user, pass مربوط به admin وارد شده بتونه یه سری از امکانات مثلا حذف کاربر و .... رو ببینه. تو تاپیک لاگین حرفه ای که یکی از دوستان زده این رو پرسیدم. خواستین اینجا هم یه بار دیگه مینویسمش.

FastCode
یک شنبه 06 اسفند 1391, 23:45 عصر
همه ی این روشها به شکلی شما رو مجبور میکنند که رمز دیتابیس رو در کلاینت نگهدارید یا کلاینت لیست کاربر ها رو بخونه یا اطلاعات کاربران بدون رمزنگاری در شبکه منتقل بشه که سر تا پا مشکل امنیتی هستن.


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


این مطالب رو جست و جو کنید و یک مقدار در موردشون مطالعه کنید.خیلی کمکتون میکنن.
RSA
X509
server side authentication


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

h.rezaee
دوشنبه 07 اسفند 1391, 23:08 عصر
همه ی این روشها به شکلی شما رو مجبور میکنند که رمز دیتابیس رو در کلاینت نگهدارید یا کلاینت لیست کاربر ها رو بخونه یا اطلاعات کاربران بدون رمزنگاری در شبکه منتقل بشه که سر تا پا مشکل امنیتی هستن.


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


این مطالب رو جست و جو کنید و یک مقدار در موردشون مطالعه کنید.خیلی کمکتون میکنن.
RSA
X509
server side authentication


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

FastCode
جمعه 11 اسفند 1391, 09:39 صبح
dbo.fajr
====>
http://barnamenevis.org/image/png;base64,W2RhdGFiYXNlXS5kYm8uZmFqcg==[database].dbo.fajr

Connection.Open = فرستادن رمز کاربر در شبکه
مطمئنید این روش امنترینه؟روش های خیلی بهتری وجود دارن.
حداقل از MSCHAP2 استفاده کن.۴۸ ساعت طول میکشه تا هک بشی نه ۴۸ ثانیه. کتابخونه آمادش هست.