PDA

View Full Version : سوال: نگهداری محتویات فایل اجرایی



d_rabiee
دوشنبه 27 آبان 1387, 10:21 صبح
من یک برنامه نویس آماتور هستم که البته رشته تحصیلی ام رایانه نیست و با اصلاحات مورد استفاده در دروس ارائه شده بیگانه ام. در dotnet برنامه ی بانک اطلاعاتی نوشته ام که نام کاربری و رمز ورود به دیتابیس در داخل کدها قرار دارد. نگرانی من این است که کسی فایل exe را باز کرده و بتواند نام کاربری و رمز عبور را بخواند و بدون محدودیت وارد دیتابیس شود. سوال اول من این است که این کار با کدام یک از روشهای نام برده شده انجام می شود -Debugger - Disassembler - Decompiler)-؟ سوال دوم این است که بهترین راه برای جلوگیری از این کار چیست؟

دنیای دلفی
دوشنبه 27 آبان 1387, 11:39 صبح
با استفاده از Debugger كه حتما مي شود . با Decompiler شايد بشود . Disassembler اگر مستقيم از خود رشته به عنوان ورودي رمز استفاده كردي به راحتي مي شود .

علیرضا مداح
دوشنبه 27 آبان 1387, 15:48 عصر
سلام دوست عزیز،
ذخیره نمودن UserName و Password به صورت Clear-Text و آن هم در درون کد ، امنیت برنامه شما را به "صفر" می رساند ، چون از ابتدایی ترین کارهایی که شخص Cracker انجام میدهد ، بررسی String Table های برنامه شما میباشد ، به شما پیشنهاد میکنم که :
1)اطلاعات تصدیق هویت (Authentication) را در داخل دیتابیس و آن هم به صورت رمزنگاری شده قرار دهید و از تکنیک هایی چون ُSalted-Hash بهره گیری نمایید ،
2)از یکی از Protector های موجود مانند XenoCode,SmartAssembly و غیره استفاده نمایید ، البته با استفاده از این ابزار نیز هنوز احتمال Decompile شدن برنامه شما وجود دارد ،
3)تاپیک زیر را مطالعه نمایید :
سناریو 1 - ذخیره پسورد کاربران و اعتبارسنجی آن در نزم افزار اتوماسیون اداری (http://www.barnamenevis.org/forum/showthread.php?t=120547)
4) بر روی ابزارهایی چون Reflector که کد برنامه نوشته شده توسط دات نت را در اختیار شما قرار میدهند ، مطالعه نمایید ،/

d_rabiee
سه شنبه 28 آبان 1387, 08:27 صبح
اطلاعات تصدیق هویت (Authentication) را در داخل دیتابیس و آن هم به صورت رمزنگاری شده قرار دهید و از تکنیک هایی چون ُSalted-Hash بهره گیری نمایید ،

برای اجرای این روش برای هر کاربرباید یک لاگین تعریف کنیم. مدیریت این کار ساده نیست. من می خواهم مانند بسیاری از نرم افزارها، تمام کاربران بایک لاگین وارد برنامه شوند و بررسی اعتبار آنها در داخل برنامه انجام شود. ظاهرا به این روش rolled hand security گفته می شود. در این روش چگونه می توان لاگین مشترک را محافظت کرد؟

علیرضا مداح
جمعه 01 آذر 1387, 08:18 صبح
دوست عزیز ، در ادامه بحث فرض را بر این می گذاریم که شما از بانک اطلاعاتی SQL Server استفاده می کنید ،
روشهای متفاوتی برای تصدیق هویت کاربران وجود دارد ، به طور مثال شما میتوانید از امکانات پیش فرض SQL Server بهره گیری کرده و کاربران خود را به طور مجزا تعریف نموده و مجوزهای این کاربرها را تنظیم نمایید ، این روش از امنیت بالایی برخوردار است ، چون عملیات تصدیق هویت کاربر و نگهداری اطلاعات و مجوزهای آنان توسط SQL Server انجام میگردد ،
اما در بسیاری از نرم افزارها ، برای مدیریت کاربران ، یک مکانیزم جدید طراحی میگردد ، بدین معنا که شما یک سری از جداول خود را در دیتابیس به اطلاعات مربوط به تصدیق هویت ، Profile و مجوزهای کاربران اختصاص می دهید و در عمل تمامی کاربران توسط "یک Login" به سرور متصل می شوند ، اما مجوزهای هر یک پیش از انجام هر عملی در سطح Application و از طریق بررسی مجوزهای موجود در دیتابیس ، چک می شود ، در این روش چون نگهداری اطلاعات مربوط به تصدیق هویت توسط مکانیزم طراحی شده توسط ما صورت می گیرد ، باید روش ها و تکنیک هایی را جهت بالا بردن سطح امنیتی سیستم به کار گیریم ، این روش ها در تاپیک زیر به تفصیل بررسی شده اند :
سناریو 1 - ذخیره پسورد کاربران و اعتبارسنجی آن در نزم افزار اتوماسیون اداری (http://www.barnamenevis.org/forum/showthread.php?t=120547)

همچنین تصدیق هویت در یک شبکه ی مبتنی بر Domain میتواند توسط Active Directory نیز صورت گردد ، و نیز Repository های دیگری نیز برای تصدیق هویت کاربران موجود است ،
به هر حال در هر سناریو ، باید بر اساس شرایط موجود بهترین روش را انتخاب نمود و موارد فوق تنها چکیده ای از انجام این عملیات را در بر میگیرد ،/