PDA

View Full Version : استفاده نکردن از Login



Mohammad S
جمعه 01 خرداد 1383, 14:36 عصر
با سلام خدمت دوستان عزیز
من می خواهم از SQL Server در دلفی استفاده کنم اما نمی خواهم برای هر کاربر یک Login بسازم بلکه یک Login‌اصلی داشته باشم برای خودم (برنامه نویس) و یک بانک که هر نام کاربری و رمز عبور هر کاربر را در آن وارد می کنم و در واقع خودم یک Login بسازم.
مشکل من در مورد رمز عبور Login‌خودم می باشد. چون با همین رمز عبور به اس کیو ال سرور وصل می شوم و باید به طور مستقیم در کد برنامه دلفی خودم از آن استفاده کنم.
اگر اشتباه نکرده باشم برنامه هایی مثل Resource Hacker می توانند فایل EXE‌را باز کرده و محتویات آن را ببینند که با این فرض، رمز ورود خودم به بانک را می یابند و من دچار مشکل خواهم شد. آیا روشی هست که رمز عبور را در آن ذخیره کنم و سپس در دلفی از آن استفاده کنم (هر چند که کمی دو ر از ذهن می باشد). روشهایی مثل استفاده از Stored Procedure و ...............
با تشکر

phantasm
سه شنبه 05 خرداد 1383, 18:51 عصر
بهترین راه اینه که پسورد ها رو بصورت hash ذخیره کنی .

Mohammad S
سه شنبه 05 خرداد 1383, 19:08 عصر
ممنون از جوابتان
ولی اگر بیشتر توضیح دهید بهتر است.
منظورتان از هش این است که پسوردها را با فرمولی تعویض کنم مثلاً 2 برابر کنم(کد اسکی)؟
به هر حال من نمی خواهم از Login در SQLServer استفاده کنم. آنها را کجا ذخیره کنم؟
شما اگر SQL Server را نصب کرده باشید لازم نیست رمز عبور را بدانید. به راحتی می توانید هر جدولی را باز کرده و آن را دستکاری کنید. مگر اینکه راه حل دیگری داشته باشد برای جلوگیری از تغییر که من نمی دانم! :idea:
با تشکر

phantasm
سه شنبه 05 خرداد 1383, 20:44 عصر
منظورتان از هش این است که پسوردها را با فرمولی تعویض کنم مثلاً 2 برابر کنم(کد اسکی)؟

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


به هر حال من نمی خواهم از Login در SQLServer استفاده کنم. آنها را کجا ذخیره کنم؟

همه پسورد و یوزر نیم ها رو توی یه دیتابیس قرار بده اما بصورت هش شده.

Inprise
چهارشنبه 06 خرداد 1383, 08:18 صبح
مشکل من در مورد رمز عبور Login‌خودم می باشد. چون با همین رمز عبور به اس کیو ال سرور وصل می شوم و باید به طور مستقیم در کد برنامه دلفی خودم از آن استفاده کنم.
اگر اشتباه نکرده باشم برنامه هایی مثل Resource Hacker می توانند فایل EXE‌را باز کرده و محتویات آن را ببینند

دوست عزیز؛

ConnectionString ها تحت عنوان Resource ذخیره نمیشن ، پس توسط Resource Viewer ها قابل دسترسی نیستند . برای کشف اکانت کاربری از متن باینری فایل اجرائی باید کاربرات تخصص و تجربه کافی داشته باشن که از پس هر کسی بر نمیاد ، البته خوبه محض احتیاط بیشتر از دو تابع رمزنگار و رمزگشا تو برنامت استفاده کنی که از کلمهء عبور اصلی تو محافظت کنن .

موفق باشی

Mohammad S
چهارشنبه 06 خرداد 1383, 11:34 صبح
بسیار ممنون از جوابهایتان
با این حساب باید از هش استفاده کنیم. اما چگونه و با چه فرمولی. لطفا اگر امکان دارد شما یک مثال بزنید تا بقیه اش را خودم انجام دهم.

با تشکر :flower:

JavanSoft
چهارشنبه 06 خرداد 1383, 13:57 عصر
برای حل مشکل شما 2 پیشنهاد دارم
1) از SDACاستفاده کنید :heart:
2) یک فایل متنی تشکل داده و ConnectionStringرا در درون آن قرار دهید و برای امنیت هم از یک روش عصر حجر مثل این استفاده کنید


St.LoadFromFile('نام فایل')
T:=St[0]
For I:=1 To Length(T) DO
T:=Ord(T[I] Xor 2(یا هر عددی)
AdoConnection.ConnectionString1:=T
AdoConnection.Connected:=True

Mohammad S
چهارشنبه 06 خرداد 1383, 20:51 عصر
با تشکر از شما جناب وکیلی
روش عصر حجری شما قبول اما روش دیگر (SDAC) دیگر چیست؟
ضمنا من امروز یک یونیت برای دلفی پیدا کردم که تمام الگوریتمهای هش را پیاده سازی کرده بود.
فقط موندم از کدومشون استفاده کنم؟ :idea:


Implemented algorithms
- MD2 (RFC1319), MD4 (RFC1320), MD5 (RFC1321)
- SHA1(FIPS 180-1), SHA256, SHA384, SHA512 (FIPS PUB 180-2)
- Haval128, Haval160, Haval192, Haval224, Haval256 by Y. Zheng, J. Pieprzyk and J. Seberry
- Gost (GOST R 34.11-94)
- Tiger128, Tiger160, Tiger192 by Ross Anderson and Eli Biham
- RipeMD128, RipeMD160 by Hans Dobbertin, Antoon Bosselaers, and Bart Preneel
- CRC32, CRC32b
- Adler32

:shock:

کدوم قوی تر و دقیق تر هست؟ :?:

vadood
چهارشنبه 06 خرداد 1383, 22:55 عصر
چرا این همه کار؟

از Windows Authentication چرا استفاده نمی کنی؟ بذارش به عهده ویندوز

Mohammad S
پنج شنبه 07 خرداد 1383, 00:05 صبح
جناب ودود عزیز
برای استفاده از Windows Authentication چه کارهایی باید انجام داد؟ چه موقع نصب چه هنگام استفاده .
البته به نظرم شما منظورتان این است که از Login های خود ویندوز استفاده شود؟! اگر همین باشد که می گویم در آنصورت از طریق برنامه نویسی نمی توانم کابر بسازم و رئیس شرکت خودش باید در ویندوز برای کاربرانش User بسازد و البته اگر ویندوز خراب شد باید این کار را از اول شروع کند؟ مطمئنا رئیس شرکت این را نمی پسندد. :!:

Inprise
پنج شنبه 07 خرداد 1383, 09:38 صبح
مگه سوال این نبود ؟


مشکل من در مورد رمز عبور Login‌خودم می باشد . اگر اشتباه نکرده باشم برنامه هایی مثل Resource Hacker می توانند فایل EXE‌را باز کرده و محتویات آن را ببینند

و جواب :


ConnectionString ها تحت عنوان Resource ذخیره نمیشن ، پس توسط Resource Viewer ها قابل دسترسی نیستند

پس بقیه حرفها مال چیه ؟ :?:



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

از کجای جواب من به این نتیجه رسیدی که باید از "هش" (؟) استفاده کنی ؟

اگر مساله نگهداری رمز عبور داخل متن باینری برنامه است جواب داده شد ، اگر مساله امنیت انتقال رمز به اسکوئل سرور هست ، بهتره از Windows Authentication Mode استفاده کنی ( موقع نصب یا پیکره بندی اسکوئل سرور ، روش احراز هویت قابل تعیین هست ) که در این صورت بسته به نوع و نگارش ویندوز سرور مورد استفاده اسکوئل سرور و ویندوزهای کلاینت ، Credential ها زیر چتر ایمنی NTLM یا Kerberos قرار میگیرن و دغدغه امنیتی انتقال پسورد تقریبا" به صفر میرسه .

خوش باشید .

vadood
پنج شنبه 07 خرداد 1383, 10:26 صبح
فقط من باب مزاح و البته بدون شرح

نقل قول:
بسیار ممنون از جوابهایتان
با این حساب باید از هش استفاده کنیم


از کجای جواب من به این نتیجه رسیدی که باید از "هش" (؟) استفاده کنی ؟

Inprise
پنج شنبه 07 خرداد 1383, 10:54 صبح
من به وجه مزاحش کاری ندارم لکن اگر به جوابهای قبلی دقت کنی اصولا به "سوال" ربطی نداشتن ، جوابهای بعد از جواب من ، نیز ، هم .( و حتی مطالب خود سوال کننده نیز ایضا !! ) حالا یا سوال کننده و الباقی دوستان اصولا" نه چیزی در مورد سوال (؟) میدونستن نه چیزی در مورد جواب ،( و قراره بوده دور هم یه چیزائی همینطوری گفته بشه محض تفریح ) یا اینکه بندهء حقیر هنوز یاد نگرفتم یه متن فارسی رو با دقت بخونم و به سوال توش یه جواب مرتبط بدم ، که در این صورت بدا به حال من :wink:

خوش باشید

Mohammad S
پنج شنبه 07 خرداد 1383, 14:26 عصر
جناب Inprise عزیز
1) بسیار ممنون از جوابهایتان
2) با توجه به دیگر تاپیکها و بعضی تحقیقات دیگر به این نتیجه رسیدم که اولا یک بانک داشته باشم که نام کاربری و رمز عبور تمام کاربران در آن نوشته شود و خود من هم از پسورد عبور خودم برای اتصال به بانک استفاده کنم و چون بنا به گفته شما متن یونیت دلفی ذخیره نمی شود، و قابل بازیابی نیست من با خیال نسبتا راحت می توانم رمز عبور خودم در برنامه را از طریق پارامتر به کانکشن استرینگ ارسال کنم و به بانکها وصل شوم. و برای امنیت بیشتر جدول Userها از هش استفاده کنم یعنی پسورد آنها را هش کرده و سپس ذخیره کنم.

3) باز یک سوال باقی ماند. تا کنون هم هیچ کس جواب نداده . موقع نصب SQL Server Personal چه گزینه هایی لازم و ضروری است که بتوان از مود تعیین اعتبار خود ویندوز استفاده کرد؟ اگر بخواهیم از این مود استفاده کنیم آیا اگر کاربری با Admin ویندوز وارد شود به راحتی می تواند بانکها را دستکاری کند؟ آیا راهی وجود ندارد که ابتدا رمز عبور برای ورود به محیط Enterprise Manager بپرسد؟
این تاپیک را ببینید. در ادامه همین بحث مطالبی عرض شده (البته توسط دوستان :wink: )
http://www.barnamenevis.org/forum/viewtopic.php?t=10198

vadood
پنج شنبه 07 خرداد 1383, 15:34 عصر
موقع نصب SQL Server Personal چه گزینه هایی لازم و ضروری است که بتوان از مود تعیین اعتبار خود ویندوز استفاده کرد

در sql server همواره windows authentication فعال هست. لازم نیست شما اونو فعال کنی، فقط باید روی سیستم عامل مناسب نصبش کنی (2000، NT 4 , ...( و البته لاگین های مربوط را به لیست یوزرهای دیتابیس اضافه کنی.


اگر بخواهیم از این مود استفاده کنیم آیا اگر کاربری با Admin ویندوز وارد شود به راحتی می تواند بانکها را دستکاری کند؟
بلی، راهی هم نیست که مانع شی


آیا راهی وجود ندارد که ابتدا رمز عبور برای ورود به محیط Enterprise Manager بپرسد؟
اگر طرف از Windows Authentication استفاده کند، دیگر password مفهومی ندارد. اصلا محیط enterprise manager را چیکار داری، هر کس بتونه در سرور شما با مجوز های لازم لاگین کنه هر کاری می تونه بکنه، حالا چه با EM یا یوتیلتی که خودش نوشته باشه.

<hr>
PS (برای ارتقای روحیه همکاری)
نوشته شده بود "جواهایتان" بنابراین نویسنده از مجموعه ای از جواب ها (درست/نادرست، مرتبط/غیر مرتبط) به این نتیجه (ایضا درست/نادرست، مرتبط/غیر مرتبط) رسیده. بنابراین با علم به این که یکی از جواب دهنده ها فقط یک جواب داده، نمی توان استدلال کرد که نتیجه گیری مبتنی بر جواب آن جواب دهنده به خصوص بوده. :متفکر:

Mohammad S
پنج شنبه 07 خرداد 1383, 21:50 عصر
جناب ودود عزیز با تشکر از جواب شما
باز یک سوال دیگر
هنگام نصب SQL SERVER بر روی کامپیوتر مشتری (شخصی که برای او برنامه نوشته شده) انتخاب گزینه Client Tools Only کافی است یا باید Server And Client Tools را انتخاب کرد؟

vadood
پنج شنبه 07 خرداد 1383, 22:39 عصر
سرور باید نصب بشه