تبلیغات :
آکوستیک ، فوم شانه تخم مرغی، صداگیر ماینر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




صفحه 1 از 2 12 آخرآخر
نمايش نتايج 1 به 10 از 13

نام تاپيک: چطور بر روی بانک اطلاعاتی پسورد بزارم؟

  1. #1
    کـاربـر بـاسـابـقـه am_merman01's Avatar
    تاريخ عضويت
    May 2006
    محل سكونت
    یه جایی گوشه دهکده جهانی تو یه کانکشن دایال آپ
    پست ها
    893

    14 چطور بر روی بانک اطلاعاتی پسورد بزارم؟

    باسلام خدمت دوستان عزیز

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

    پیشاپیش از کمک شما عزیزان تشکر میکنم

  2. #2
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    1) اگر بحث امنیت اطلاعات در شبکه وهک و... است، در نهایت میتوانید امنیتی معقولی را برقرار کنید !
    یعنی کسی که کاربران در شبکه بسته به اختیارات شان به اطلاعات دسترسی داشته باشند.

    ولی

    2) اگر اهداف ایرانی دارید ، جواب نهایی خیر و یا خیلی مشکل است.
    منظورم چیست؟
    اگر هدف تان آن است که سایر برنامه نویس ها و رقبا دیتابیس شما را نبینند، نفهمند چه جداولی دارید، چه اطلاعاتی نگاه میدارید و...
    یعنی فردی که admin رایانه است و نرم افزار شما را خریده و نصب کرده، او هم نتواند به دیتابیس متصل شود...
    در این صورت باید عرض کنم،
    امنیت دیتابیس ها برای این مسائل "خاله زنکی" طراحی نشده.
    در واقع شما نمیتوانید اطلاعات را از admin سیستم عامل مخفی کنید.
    البته کارهایی میتوان کرد ولی در نهایت admin سیستم عامل کمی اطلاعات داشته باشد میتواند به اطلاعات دسترسی پیدا کند.

    درهرصورت شما مشخص بفرمائید، هدف تان مورد اول یا دوم است ، بهتر میتوان بحث را ادامه داد...

  3. این کاربر از _H2_ بخاطر این مطلب مفید تشکر کرده است


  4. #3
    کـاربـر بـاسـابـقـه am_merman01's Avatar
    تاريخ عضويت
    May 2006
    محل سكونت
    یه جایی گوشه دهکده جهانی تو یه کانکشن دایال آپ
    پست ها
    893

    پيش فرض

    باسلام خدمت استاد گرامی
    خداروشکر بالاخره یکی به اینجا سر زد ، یواش یواش داشتم احساس رابینسون کروزوئه رو پیدا میکردم (بگذریم)

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

  5. #4
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام

    نقل قول نوشته شده توسط am_merman01
    ...بالاخره یکی به اینجا سر زد...
    یک مشکل کوچکی که وجود دارد، همین کار وگرفتاری است که باعث تاخیر در سرزدن میشود.
    بعد هم که آدم لاگین میکند ، میبیند روزها و شاید هفته ها از تاریخ طرح سوال گذشته! دیگر آدم مطمئن نیست که جواب دادن فایده دارد یا نه...
    یعنی برخی مواقع آدم میبیند زمان زیادی گذشته و دیگر تاپیک را کلا جواب ندهد آبرو مندانه تر است


    نقل قول نوشته شده توسط am_merman01
    گر کاربری کمی اطلاعات داشته باشه ممکنه بتونه به راحتی وارد بانک اطلاعاتی برنامه شده و یک سری اطلاعات رو به صورت دستی تغییر بده
    بطور قطع این یک نگرانی صحیح و منطقی است ومیتواند باعث دورزدن خط مشی های امنیتی برنامه شود.
    شاید "تایید" یا "درج" یک اطلاعاتی را فقط باید یک کاربر خاص انجام دهد ولی با "لو" رفتن connectionString وکمی اطلاعات هرکسی میتواند دیتای دلخواه خود را در دیتابیس تغییر دهد.
    که بطور خاص در موارد "مالی" میتواند پیامدهای خطرناکی داشته باشد.

    خوشبختانه برای این نگرانی ها ، بحث های طولانی تا سطح ریز ترین موارد وجود دارد و برای هریک راه حل های خوب ومتعددی وجود دارد.
    بطور مثال اولین مسئله حفاظت از ConnectionString و چهار دیتای اصلی آن یعنی IP, Database, User, Pass پایگاه است.
    این نگرانی در برنامه های web base تقریبا وجود نداشته و منتفی است ومی ماند برنامه exe تحت شبکه ای که روی رایانه هر کاربر جداگانه نصب میشود.
    برای همین مورد شما میتوانید از رمزنگاری های "متقارن" استفاده کنید.
    یعنی ConnectionString را در "Setting خود پروژه دات نت" یا "در یک فایل ساده بیرون exe" ذخیره می کنید ولی رمزنگاری شده.

    مدیر شبکه یا دیتابیس یا هر مسئول نصب برنامه ، پس از نصب از طریق یک Form/Window کوچک ، مقادیر اتصال به دیتابیس را تنظیم میکند و برنامه هم آنها را رمزنگاری کرده و سپس ذخیره میکند.

    برای رمزنگاری میتوان از الگوریتم های معروف و قوی مانند AES و DES استفاده کرد (که در دات نت هم کلاس های مربوطه وجود دارد)
    می ماند خود "کلید رمزنگاری و رمزگشایی" که یک مقداری است مانند "گذرواژه فایل های zip" ...
    یعنی بحث بعدی این میشود که خود کلید رمزنگاری چه باشد وکجا ذخیره شود.

    البته ...
    تا همین جا هم، یعنی فقط یک رمزنگاری باینری با AES و استفاده مستقیم از "کلید" در کدها میتواند جلوی اغلب افرادی را که گفتید بگیرد و شاید برای خیلی از برنامه ها کافی باشد.
    شاید هرکسی بتواند به دیتابیس وصل شود ولی گیر آوردن "کلید" از درون کدهای برنامه تان و رمزگشایی فایل AES با کلید مذکور ، خارج از توانایی اغلب افراد کنجکاو است.


    استفاده از یک کلید ثابت در کل برنامه و برای همه رایانه ها
    کلید رمزنگاری را میتواند در کدتان تکه تکه کنید تا مستقیم و یک تکه درون کدتان نباشد وبا یک عملیات ساخته شود....
    مثلا هر بایت کلید از یک تابع بیاید و معکوس در کنار هم قرار بگیرند وقبل از استفاده Reverse شوند !!!
    یا در کل خود کلید میتواند توسط یک کلید دیگر رمزنگاری شود که پیدا کردن کلید را از داخل کدها مشکل کند.
    و...

    یا

    استفاده از یک ثابت متفاوت برای هر رایانه ها
    در روشی دیگر میتوان "کلید" را وابسته به نسخه سیستم عامل و یا سخت افزار کرد...
    مثلاً میتواند خود کلید را از هش md5, sha1 سریال مادربورد یا هارد و... تولید کرد.
    تا کلید درون کد نباشد و برای هر رایانه هم فرق داشته باشد
    و...

    ودر موارد متعدد وجزئیات ونگرانی های دیگر،کارهای این شکلی را میتوان بسته به امنیت مورد نیاز انجام داد.
    حالا دیگر نمی دانم تا کجای این کارها که تشریح شد را تجربه کرده اید و کدام بخشش را کامل مسلط نیستید...
    موفق باشید و شب خوش.

  6. این کاربر از _H2_ بخاطر این مطلب مفید تشکر کرده است


  7. #5
    کـاربـر بـاسـابـقـه am_merman01's Avatar
    تاريخ عضويت
    May 2006
    محل سكونت
    یه جایی گوشه دهکده جهانی تو یه کانکشن دایال آپ
    پست ها
    893

    پيش فرض

    سلام مجدد خدمت استاد گرامی
    خوشبختانه برای این نگرانی ها ، بحث های طولانی تا سطح ریز ترین موارد وجود دارد و برای هریک راه حل های خوب ومتعددی وجود دارد.
    در مورد راه حل هایی که فرمودین شروع کردم به مطالعه یکسری از راه حل ها و پیدا کردن کدهای نمونه که توی اینترنت سایت MSDN موجود بود . ولی متاسفانه به دلیل مسئله اصلی (آماتور بودن این حقیر) با مشاهده هر نمونه کد هزارتا سئوال جدید برام بوجود میاد.
    یعنی ConnectionString را در "Setting خود پروژه دات نت" یا "در یک فایل ساده بیرون exe" ذخیره می کنید ولی رمزنگاری شده
    در این مورد سعی کردم رشته اتصال رو در Setting ذخیره کنم ولی یک مشکل کوچیک برام پیش اومد و اون هم این بود که هر کاری کردم نتونستم اون رو به شکل دینامیک در بیارم ( منظورم به کمک دستور Application.StartupPath) چون توی قسمت Setting از کد نویسی حمایت نمی کنه (یا شاید هم من بلد نیستم).
    سئوال بعد اینکه آیا برای ذخیره اون در Setting برنامه باز هم باید اون رو رمز نگاری کنم یا این کار به طور اتوماتیک انجام میشه؟
    اولین مسئله حفاظت از ConnectionString و چهار دیتای اصلی آن یعنی IP, Database, User, Pass پایگاه است.
    متاسفانه با اینکه چندین مقاله نسبتا طولانی و نگاهی اجمالی به چندین کتاب در مورد آموزش SQL هنوز نتونستم برای این سئوالم جواب پیدا کنم .
    آیا میشود برای دیتابیسی که توسط خود VS طراحی میشود User و Pass ساخت؟ چگونه؟ یا این قسمت در رشته اتصال فقط مخصوص دیتابیس های آنلاین و تحت شبکه است؟

    برای رمزنگاری میتوان از الگوریتم های معروف و قوی مانند AES و DES استفاده کرد (که در دات نت هم کلاس های مربوطه وجود دارد)
    می ماند خود "کلید رمزنگاری و رمزگشایی" که یک مقداری است مانند "گذرواژه فایل های zip" ...
    یعنی بحث بعدی این میشود که خود کلید رمزنگاری چه باشد وکجا ذخیره شود.

    البته ...
    تا همین جا هم، یعنی فقط یک رمزنگاری باینری با AES و استفاده مستقیم از "کلید" در کدها میتواند جلوی اغلب افرادی را که گفتید بگیرد و شاید برای خیلی از برنامه ها کافی باشد.
    شاید هرکسی بتواند به دیتابیس وصل شود ولی گیر آوردن "کلید" از درون کدهای برنامه تان و رمزگشایی فایل AES با کلید مذکور ، خارج از توانایی اغلب افراد کنجکاو است.
    در مورد این مسئله که فرمودین چندتا سورس کد و آموزش به زبان انگیلیسی پیدا کردم و دارم مطالعه میکنم (البته خود مسئله به زبان فارسی هم بسیار برام پیچیده بود چه برسه حالا که باید اول ترجمش کنم بعد بفهمم چیه). و صد البته همانگونه که فرمودین تا همین جاش برای من کافیه تا بتونه جلوی دستکاری افراد کنجکاو رو بگیره (برنامه فوق امنیتی CIA که نمیخوام طراحی کنم )

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

  8. #6
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    چندروزی اجازه دهید ببینم فرصت میکنم ، یک نمونه کد ساده برایتان درست کنم یا نه...

  9. #7
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    گفتم برخی سوالات را همین الان پاسخ دهم...
    نقل قول نوشته شده توسط am_merman01
    ...نتونستم اون رو به شکل دینامیک در بیارم ... چون توی قسمت Setting از کد نویسی حمایت نمی کنه...
    امکان استفاده از Setting بسادگی برای ذخیره تنظیمات مختلف برنامه وجود دارد.

    نقل قول نوشته شده توسط am_merman01
    آیا برای ذخیره اون در Setting برنامه باز هم باید اون رو رمز نگاری کنم یا این کار به طور اتوماتیک انجام میشه
    تمام Setting های برنامه تان در دات نت بصورت یک فایل xml بدون رمزنگاری و شفاف در درایو C و مسیر پروفایل کاربر جاری ذخیره میشود.
    اگر دیتای مهمی مانند User,Pass دارید باید خودتان رمزنگاری کنید.

    نقل قول نوشته شده توسط am_merman01
    یا میشود برای دیتابیسی که توسط خود VS طراحی میشود User و Pass ساخت؟
    بله
    تفاوت خاصی وجود دارد فقط باید مراحل را طی کنید.
    حتی شما میتوانید برای دسترسی به تک تک ستون جداول حق دسترسی مشخص کنید
    فقط باید دقت کنید که در نهایت این User,Pass ها، کامل در دیتابیس شما ذخیره نمیشود.
    یعنی مانند یک فایل zip نیست که password بدهید و فایل را کپی کنید و... و password در جاش باقی بماند
    این تنظیمات امنیتی باید در زمان نصب برنامه تان و در رایانه مقصد (مجدد) انجام شود.

    در SQL Server دو مفهوم نزدیک هم وجود دارد که یکی Login است و دیگر User ...
    با دستورات CREATE LOGIN و CREATE USER میتوانید یک user,pass ایجاد کنید.
    این ها دستورات sql هستند و (درصورت داشتن مجوز) مانند SELECT, UPDATE, INSERT و... قابل اجرا هستند.

    میتوانید این کارها را در برنامه ای کوچک که برای نصب نوشته اید، پیاده سازی کنید.
    شب خوش.

  10. این کاربر از _H2_ بخاطر این مطلب مفید تشکر کرده است


  11. #8
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    برای نمونه رمزنگاری رشته اتصال یک پروژه ساده حاضر کردم، نگاهی بیاندازید
    دانلود مستقیم:
    http://simorgh.pro/core/file/Download/A98WG-RXE00-00000-00000
    موفق باشید.

  12. این کاربر از _H2_ بخاطر این مطلب مفید تشکر کرده است


  13. #9
    کـاربـر بـاسـابـقـه am_merman01's Avatar
    تاريخ عضويت
    May 2006
    محل سكونت
    یه جایی گوشه دهکده جهانی تو یه کانکشن دایال آپ
    پست ها
    893

    14

    با سلام فراوان خدمت استاد گرامی

    سلام
    برای نمونه رمزنگاری رشته اتصال یک پروژه ساده حاضر کردم، نگاهی بیاندازید
    دانلود مستقیم:
    http://simorgh.pro/core/file/Download/A98WG-RXE00-00000-00000
    موفق باشید.
    تشکر فراوان از زحمتی که کشیدید
    فقط ی مشکل کوچیک روی لینک دانلود وجود داره(در هنگام دانلود با خطای فایل موجود نیست مواجه میشم)

    چون به برنامه شما دسترسی کامل نداشتم چند تا سئوال برام پیش اومد
    اشیاء KEY و IV (توی بعضی سایت ها دیدم بهش میگن وکتور) دقیقا چه کاری انجام میدن؟ خوب KEY تا حدودی از اسمش پیداس که احتمالا یه کلید ایجاد میکنه که داده ها بر اساس اون رمزنگاری میشن ولی وکتور چیه؟

    توی یک نمونه کد دیدم که کلید و وکتور رو به صورت یک آرایه از نوع بایت تعریف کرده بود . طول آرایه کلید 32 بود و طول آرایه وکتور 16 ولی توی چندتا مثال دیگه اعداد متفاوتی دیدم طول آرایه کلید به چه چیزی بستگی داره ؟


    (از اونجایی که هنوز مفهوم کلی رمز نگاری رو درک نکردم میپرسم) آیا با همین کد میشه از سایر روش های رمزنگاری مثل SHA , MD5 و .... استفاده کرد(منظورم صرفا با تغیر AES به مثلا MD5) یا هر روش سینتکس خواص خودش رو داره؟

    {
    بعد از ارسال پست این مطلب رو توی سایت شما دیدم لازم شد برگردم بیام اصلاح کنم
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    ظاهرا MD5 یک آلگوریتم رمزنگاری نامتقارن هستش و به طور کلی داستان رمزنگاری و ساخت کلید و سرتیفیکتش فرق میکنه
    }
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    در مورد کد بالا من این رو متوجه شدم ، اگر اشتباه است لطفا اصلاح نمایید
    در این تابع ابتدا چک کردید که متن ارسال شده به تابع خالی نباشد ، در صورت وجود رشته اون رو به یک آرایه از نوع اعداد بایت تبدیل کردید
    بعد یک شی از کلاس رمزنگاری AES ساختید
    متغیر های وکتور و کلید رو مقدار دهی فرمودین
    یک متد از شی AES نمونه گرفتید که ظاهرا شی ی است که قراره عمل رمز نگاری رو انجام بده
    یک قسمت از فضای حافظه رو تعریف نمودید که قراره اطلاعات رمزنگاری شده به طور موقت اونجا ذخیره بشن
    بعد هم یک شی دیگه ایجاد کردید که اطلاعات رو به صورت یک بایت یک بایت میخونه و رمزنگاری میکنه و در اون فضای تعریف شده از حافظه ذخیره میکنه
    ولی کار دو خط آخر رو اصلا متوجه نشدم (البته اگه تا همینجاش رو هم درست فهمیده باشم)
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    باز هم از زحمات و توجه شما تشکر میکنم
    Last edited by am_merman01; 19-11-2017 at 03:19.

  14. #10
    کـاربـر بـاسـابـقـه am_merman01's Avatar
    تاريخ عضويت
    May 2006
    محل سكونت
    یه جایی گوشه دهکده جهانی تو یه کانکشن دایال آپ
    پست ها
    893

    پيش فرض

    شرمنده این سوال رو اینجا مطرح میکنم ولی دیدم خیلی ارزش نداره بخاطرش یه تاپیک جداگانه باز کنم
    توی نمونه کد پایین
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    توضیحاتی که بعد از تک کوتیشن قرار میگیرن توی نسخه نهایی برنامه ( منظورم نسخه Release) حذف میشن؟ یا اینکه این توضیحات همچنان اونجا هم باقی میمونن؟

صفحه 1 از 2 12 آخرآخر

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •