نمایش نتایج 1 تا 4 از 4

نام تاپیک: اتصال امن به دیتابیس

  1. #1

    اتصال امن به دیتابیس

    سلام دوستان

    1- چطور یوزر و رمز اتصال به دیتابیس (MySQL) رو میشه مخفی کرد تا با دیکامپایل کردن اپلیکیشن، قابل خوندن نباشه؟ بهترین راه استفاده از API هست؟

    2- اگر از واسط برای اتصال استفاده بشه، این یوزر و رمز (مربوط به پایگاه داده و نه لاگین شدن کاربر) کجا وارد میشه که قابل خوندن نیست؟

    3- برای یادگیری این اتصال (سمت سرور و سمت اندروید) چه منبعی پیشنهاد میکنید؟

  2. #2

    نقل قول: اتصال امن به دیتابیس

    نقل قول نوشته شده توسط mb1372 مشاهده تاپیک
    سلام دوستان

    1- چطور یوزر و رمز اتصال به دیتابیس (MySQL) رو میشه مخفی کرد تا با دیکامپایل کردن اپلیکیشن، قابل خوندن نباشه؟ بهترین راه استفاده از API هست؟

    2- اگر از واسط برای اتصال استفاده بشه، این یوزر و رمز (مربوط به پایگاه داده و نه لاگین شدن کاربر) کجا وارد میشه که قابل خوندن نیست؟

    3- برای یادگیری این اتصال (سمت سرور و سمت اندروید) چه منبعی پیشنهاد میکنید؟
    با سلام
    برای داشتن یک ارتباط امن باید از Web Service های Rest استفاده کنید بنابراین شما سمت برنامه گوشی به رمز های دیتابیس نیازی نخواهید داشت چون در سمت سرور نگهداری میشوند.
    و اینکه حالا در سرور با چه امنیتی کار میکنید بستگی به زبانی که کار میکنید دارد خوب اگر در PHP باشید وب سرویس های شما و اگر از MySql استفاده کرده باشید که می توانید از رمزهایی که HASH شده اند توسط خود پی اچ پی ادمین استفاده کنید و پیاده سازی امنیت اطلاعات شما سمت سرور انجام خواهد شد البته اگر برنامه هایی به غیر از شبکه های اجتماعی بخواهید بنویسید وگرنه در این دست برنامه ها امنیت یکه پله بالاتر از بقیه برنامه هاست .
    ونکاتی که خیلی مهم هستند ..
    ۱- سعی کنید حتما از کتابخانه های موجود در سمت اندروید برای اتصال استفاده کنید.(Volley ,RetroFit).
    2- حتما برای جلوگیری از SQL Injection (که یکی از راههای اسنیفینگ هست) از به کار بردن الگوریتم های Query های برنامه تون به صورت مستقیم در اندروید برای عملیاتهای CUID(create,update,insert,delete) پرهیز کنید و بجای اونها از SP(Stored Procedure) ها ویا UDF(User Define Function) ها برای هرکاری تو دیتابیس سمت سرور استفاده کنید.البته اگر وب سرویسها را خودتون مینویسید.
    3- سعی کنید اگر از PHP استفاده میکنید برای پایگاه داده حتما از MySQL ویا MongoDB ویا PostgreSQL استفاده کنید از استفاده SQLServer در PHP پرهیز کنید والبته وب سرور شما هم بهتره که حتما تحت لینوکس باشه.
    4- اگر هم اطلاعات خیلی مهمی ندارید و نمخواهید این دردسرهای وب سرور و وب سرویس نوشتن را داشته باشید میتونید به راحتی بایکی از این شرکتها که در زمینه خدمات ابری و دیتابیس های آنلاین فعالیت دارند کار کنید و همه این داستانها را بسپارید به اونها و شما فقط به سمت برنامه خودتون فکر کنید.
    5- اگر سمت برنامه اندروید به الگوریتم های خاصی برای رمزنگاری احتیاج داشتید فقط باید از NDK استفاده کنید و الگوریتم های رمزنگاری را با c ویا ++c بنویسید که زمانی هم که برنامه شما دی کامپایل بشه سورس های c و ++c اصلا استخراج نمیشوند اگر هم بشوند اگر هم بشوند قابل استفاده نیستند حتی از JDX فایل هم که بعضی ابزارها میتونند استخراج کنن نمیتوان استفاده کرد.
    6- خوب البته نوشتن یک الگوریتم رمزنگاری کار هرکسی نیست مخصوصا در c ویا ++c ولی به هر حال اگر خواستید اینکار را هم بکنید حتما سعی کنید که از الگوریتم های ریاضی که امروزه تو اینترنت خیلی هست برای اینکار استفاده نکنید! سعی کنید الگوریتمی که مینویسید تلفیقی چند از الگوریتم ها که شامل کلیدهای متقارن و الگوهای مخفی کردن کلیدها و پنهان سازی داده ها و همچنین از بردارهای بیتی وساخت یک الگوریتم با استفاده از اطلاعات سخت افزاری محل اجرای برنامه بهره ببرید.! برای شروع هم در آخر یکسری کتاب معرفی خواهم کرد.
    7- در سمت اندروید هم میتوانید اطلاعاتی که لازم دارید هم به صورت encrypt شده به سمت وب سرور ارسال کنید فقط باید از یک الگوریتم که برای برنامه c که دربالا به آن اشاره کردم استفاده نکنید و البته سمت سرور هم باید قابلیت decrypt کردن وجود داشته باشه .
    در آخر هم باز به طور ۱۰۰ درصد نمی تونید از اطلاعات مراقبت کنید ولی هرکدوم از این روشها برای سخت تر کردن کار مهندسی های معکوس بر روی اطلاعات هستند.
    کتابهایی که خدمتت دوستان ارائه میکنم بیشتر جنبه های تئوری دارند ولی به هر حال پایه و اساس برای نوشتن الگوریتم های رمز نگاری هستند.
    و همچنین باید این پیش نیارها را داشته باشید تا بتونید از مطالب این کتابها استفاده بهینه داشته باشید.
    1- تسلط به ساختمان داده ها.
    2- تسلط و داشتن فکر الگوریتم نویسی و الگوریتم های بیتی و وکتور های بیتی.
    3- تسلط به یکی از زبانهای C ویا ++C و اگرهم درزمینه نوشتن اکسپلویت ها و اسنیفینگ بخواهید متبحر بشید که حتما باید زبان Perl را از بر باشید.
    4- برای اندروید هم که باید JNI(Java NAtive Interface) را خوب بشناسید.
    5- آشنایی با اسمبلی هم که فوق العاده ست خوب چون سخت هستش تا همون بخش کار با مبناهای باینری و هگزادسیمال تبدیلات این مبناها تسلط داشته باشید هم کفایت میکنه.
    6- ودر آخر ریاضیات هم حتما لازمه کار هست نه خیلی ریاضیات مهندسی ولی به هرحال لازم هست.
    تذکر مهم!!!! استفاده نابجا از اطلاعات این کتابها هم کلا به عهده خوانندگان محترم می باشد.!!!
    ۱- کتاب علم رمزنگاری و هنر تحلیل رمز MD5 انشارات ناقوس
    ۲- زمزنگاری (مشبکه و مبنا) انتشارات ناقوس
    ۳- مفاهیم رمزنگاری ناقوس
    ۴- تست نفوذ با Back Trak در لینوکس ناقوس
    ۵- الگوریتم های ژنتیک و کاربرد آن ناقوس
    6- تست نفوذ و حمله دفاع با SQL Injection انتشارات پندار پارس
    7- مفاهیم امنیت در نرم افزار انتشارات ناقوس
    8- ریاضیات در مهندسی پیشرفته انتشارات دانشگاه خواجه نصیرالدین طوسی
    9- نظریه کدگذاری و کد گشایی دانشگاه خواجه نصیرالدین طوسی
    10- اعداد تصادفی و مقادیر تصادفی دانشگاه خواجه نصیرالدین طوسی
    11- احتمال ، نظریه اطلاع و کد گذاری دانشگاه خواجه نصیرالدین طوسی
    12- مبانی آنالیز عددی دانشگاه خواجه نصیرالدین طوسی
    13- توابع ویژه در ریاضیات مهندسی دانشگاه خواجه نصیرالدین طوسی

    البته دوستان توجه کنند که من کتابهایی که مطالعه کردم را برای شما نوشتم احتمالا کتابهای بهتر هم هستند و اینکه این کتابها خیلی هاشون تالیف هستند تا ترجمه منبع اصلی به هرحال مطمن باشید مطالعه این کتابها خالی از لطف نیست حداقل خیلی بهتر از غرق شدن در اطلاعات نامفهوم و بی اعتبار دنیای اینترنت البته در برخی از سایت ها هست.
    دلیل اش هم ساده هست معمولا کسانی که دست قدرتمندی در نوشتن اینگونه ابزارها دارند به ندرت از شون اطلاعات درز پیدا میکنه والبته اونهایی هم که درز پیدا میکنه الگوریتم هایی هستند که توسط برنامه نویس های دیگه مهار شدند.
    موفق و پیروز باشید.
    آخرین ویرایش به وسیله farhad_shiri_ex : جمعه 21 اردیبهشت 1397 در 13:20 عصر

  3. #3

    نقل قول: اتصال امن به دیتابیس

    عالی ممنون از پاسخ مفیدتون.

    نقل قول نوشته شده توسط farhad_shiri_ex مشاهده تاپیک
    ...
    و اینکه حالا در سرور با چه امنیتی کار میکنید بستگی به زبانی که کار میکنید دارد خوب اگر در PHP باشید وب سرویس های شما و اگر از MySql استفاده کرده باشید که می توانید از رمزهایی که HASH شده اند توسط خود پی اچ پی ادمین استفاده کنید و پیاده سازی امنیت اطلاعات شما سمت سرور انجام خواهد شد البته اگر برنامه هایی به غیر از شبکه های اجتماعی بخواهید بنویسید وگرنه در این دست برنامه ها امنیت یکه پله بالاتر از بقیه برنامه هاست.
    چطور میشه نفوذ به وب سرویس (زبان PHP) رو سخت تر کرد؟ وب سرویس به هیچ وجه قابل دسترس نیست؟ یعنی نمیشه به فایل دسترسی پیدا کرد و اونو دیکامپایل کرد؟ اگه این امکان وجود داره استفاده از رمزهای Hashشده هم بی فایده ست.

    جلوگیری از نفوذ به وب سرویس فقط توسط سرور قابل ایجاد هست؟ راهی برای مخفی کردن «یوزر و پسورد دیتابیس» در وب سرویس وجود داره؟ منظورم اینه که هنر برنامه نویس در مخفی کردن پسورد توی وب سرویس چیه؟

  4. #4

    نقل قول: اتصال امن به دیتابیس

    نقل قول نوشته شده توسط mb1372 مشاهده تاپیک
    عالی ممنون از پاسخ مفیدتون.



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

    جلوگیری از نفوذ به وب سرویس فقط توسط سرور قابل ایجاد هست؟ راهی برای مخفی کردن «یوزر و پسورد دیتابیس» در وب سرویس وجود داره؟ منظورم اینه که هنر برنامه نویس در مخفی کردن پسورد توی وب سرویس چیه؟
    عرض کردم که شما سورس های وب سرویس تون روی سرور لینوکسی ویا ویندوزی قرار میدید که نفوذ به این سرورها به این راحتی و کار هرکسی نیست!!
    برای دریافت هم که شما دارید توسط رشته های json ویا xml توسط پروتکل http اطلاعات را از پایگاه داده دریافت میکنید و پروسه کنترل هویت هم در سمت سرور هست یعنی شما با درخواست هایی که ارسال میکنید نیازی ندارید که نام کاربری و رمز پایگاه داده را ارسال کنید.
    حالا این وسط یک هکر میتونه با اسنیفینگ این اطلاعات را استخراج کنه! ( البته نه هر هکری چون امروزه مبینیم که طرف داره مثلا روی هک اجتماعی تلگرام کار میکنه کوچکترین دانش فنی برنامه نویسی نداره به خودش میگه هکر کلاه سیاه !!!)
    خوب شما هم کلی روش دارید تا جلوی attack های اسنیفینگ را بگیرید یکی از راه ها استفاده از الگوریتم رمزنگاری داده هاست. یکی دیگه روش نوشتن تدافعی کوئری ها برای جلوگیری از SQL Injection هست راه بعدی استفاده از NDK برای محافظت از لایه امنیتی برنامه های جاوا هست و خیلی روشهای دیگه که باید توسط تیم راه اندازی برنامه انجام بشن.
    مثلا رمز نگاری داده های حساس که رد و بدل میکنید با استفاده از الگوریتم های که به زبان ++c میشه نوشت.
    یا ایزوله کردن کوئری هایی که سمت سرور می فرستید استفاده نکردن از یک اسکریپت کوئری به صورت باز شکستن کوئری ها بین چند استور پروسیجر و فانکشن و استفاده از اونها در سمت سرور.
    ایزوله کردن URL هایی که از سمت برنامه به سرور ارسال میکنید مثلا استفاده از عبارت های باقاعده برای جلوگیری از درج کوئری های تزریقی به آدرس URL شما .
    البته این کار خیلی هم راحت نیست به تجربه نیاز داره و ممارست و پیگیری های مستمر به هرحال بحث امنیت به قدری گسترده است که خودش یک تخصص جداگانه حساب میاد اگر در برنامه تون اطلاعات حساس دارید حتما با یک متخصص امنیت مشورت داشته باشید
    البته می تونید درباره SQL Injection Attack and Defensive ویا درباره اکسپلویت ها و ابزارهای اسنیفینگ و یا درباره هک های لینوکسی مطالعه داشته باشید به هرحال برای محافظت و امنیت باید متوجه باشید که چطوری اطلاعات هک می شوند تا بتونید از تکنیکهای تدافعی در برنامه خودتون استفاده کنید

تاپیک های مشابه

  1. آموزش: اتصال treeview به دیتابیس با زیر شاخه های بینهایت
    نوشته شده توسط abadanboy در بخش ASP.NET Web Forms
    پاسخ: 42
    آخرین پست: پنج شنبه 07 بهمن 1389, 11:26 صبح
  2. مشکل در اتصال gridview به دیتابیس به صورت دستی
    نوشته شده توسط sheida در بخش C#‎‎
    پاسخ: 1
    آخرین پست: پنج شنبه 17 آبان 1386, 03:21 صبح
  3. آموزش: اتصال treeview به دیتابیس با زیر شاخه ها
    نوشته شده توسط amir_pro در بخش C#‎‎
    پاسخ: 2
    آخرین پست: سه شنبه 08 آبان 1386, 22:17 عصر
  4. اتصال داینامیک به دیتابیس
    نوشته شده توسط MBeigy در بخش VB.NET
    پاسخ: 3
    آخرین پست: یک شنبه 22 خرداد 1384, 20:43 عصر
  5. اتصال ناموفق به دیتابیس
    نوشته شده توسط faramarz_s در بخش PHP
    پاسخ: 4
    آخرین پست: جمعه 23 مرداد 1383, 18:17 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •