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

نام تاپیک: امنیت در برنامه های تحت شبکه

  1. #1
    کاربر دائمی آواتار mmbguide
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    منظومه شمسی
    پست
    1,146

    امنیت در برنامه های تحت شبکه

    سلام

    من یه برنامه تحت شبکه نوشتم و چندین شرکت برای ارائه بردم و به یه سوال هرگز نتونستم جواب بدم. "برای امنیتش کاری کردی؟" و جواب هم خیر بوده.

    برنامه من به زبان دات نت نوشته شده یکسری DLL به زبان C#‎ و یکسری به زبان VB.NET و بانک اطلاعاتی هم SQL هستش و در سرور قرار داره. مطابق معمول هر برنامه، مدیر برنامه میتونه سطح دسترسی تعریف کنه. برنامه بصورت سه لایه نوشته شده و شیوه ارتباط برنامه به بانک اطلاعاتی بواسطه DataSetها انجام میشه. اما در خصوص سوال شرکت ها راجع به امنیت برنامه، سوالم این هستش که منظورشون چیه؟

    امنیت بستر شبکه که فکر میکنم باید توسط کارشناس IT و بخشی توسط مدیر بانک اطلاعاتی (DBA) انجام بشه. نکته مبهم برای من اینه که از طرف من که برنامه نویس هستم باید چه اقدامی انجام بشه. عمده عملیات ها در بانک اطلاعاتی توسط StoredProcedure ها انجام میشه و من فقط پارامترها رو مقدار دهی میکنم.

    ممنون میشم دوستان کمک کنند که بتونم مفهوم امنیت رو در چنین برنامه هایی بیشتر درک کنم

  2. #2

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

    سلام
    شما میتونید استاندارد هایی که برای امنیت نرم افزار تدوین شدند رو مطالعه کنید و سعی در پیاده سازی ملزومات اونها داشته باشید
    مثلا یکی از این استاندارد ها OWASP هست (که البته برای اپلیکیشن ها تحت وب تدوین شده در اصل ، اما نکات پایه ای در اون وجود داره که در همه اپلیکیشن ها میتونه رعایت بشه) ، میتونید با مطالعه سند فارسی شده اون که در وبسایت خودش ارائه داده اطلاعاتی کسب کنید
    https://www.owasp.org/images/9/91/OW..._2_Persian.pdf

    دقت کنید همه موارد این استاندارد ، در اپلیکیشن های ویندوزی وجود ندارند ، اما موردی مثل Injection که مورد اول از لیست 10 مورد آسیب پذیری مهم در سال 2017 هست ، محدود به وب نیست و شما همه جا باید این مورد مهم رو رعایت کنید.
    موارد دیگری که میشه بهش اشاره کرد ، تامین امنیت ارتباطات کلاینت و سرور ، رمزنگاری اطلاعات حساس و مواردی از این قبیل هست.

    این فقط یکی از انواع استاندارد ها و اسنادی هست که برای تامین امنیت نرم افزار ها تدوین شده و خدمتتون معرفی کردم
    قوانین سایت برنامه نویس [ به سوالات از طریق پیام خصوصی پاسخ داده نمی شود ]

  3. #3
    کاربر دائمی آواتار mmbguide
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    منظومه شمسی
    پست
    1,146

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

    ممنون جناب آشتیانی

  4. #4

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

    نقل قول نوشته شده توسط mmbguide مشاهده تاپیک
    ممنون جناب آشتیانی
    تو برنامه نویسی سعی کنید کدهاتون مبهم کنید و بعد به سازمان بدید این مورد کمک میکنه چون رشته اتصال تون دست کسی بیفته خطر ناک هستش ولی وقتی رشته اتصال و تمام کدها مبهم کنید توسط Smart assembly که خیلی بهتر هستش اگه dll و فایل اختصاصی دارید مبهم کنید و به مشتری بدید باز بهتر هستش. اگه از قفل سخت افزاری تحت شبکه استفاده در صورت خطر رویت شد قفل میکشید و همه کاربرها از برنامه میفتن بیرون که این مورد هم خوب هستش.

  5. #5
    کاربر دائمی آواتار mmbguide
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    منظومه شمسی
    پست
    1,146

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

    البته یک تاپیک درخصوص مبهم سازی وجود داره که من هنوز نتونستم جوابی بگیرم. دلیلش هم اینه که وقتی Referenceهای مبهم شده را به پروژه اضافه میکنم برنامه با خطا مواجه میشه ولی خود برنامه با کدهای درون خودش بدرستی کار میکنه.

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

    تشکر

  6. #6

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

    نقل قول نوشته شده توسط mmbguide مشاهده تاپیک
    البته یک تاپیک درخصوص مبهم سازی وجود داره که من هنوز نتونستم جوابی بگیرم. دلیلش هم اینه که وقتی Referenceهای مبهم شده را به پروژه اضافه میکنم برنامه با خطا مواجه میشه ولی خود برنامه با کدهای درون خودش بدرستی کار میکنه.

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

    تشکر
    بله روش مبهم سازی مهم من با اسمارت اسمبلی مبهم کرد و برنامه هم پیامک میده، هم با کارت خوان ارتباط داره و هم با تلفن و تحت شبکه هم هستش ولی بدون هیچ مشکلی با همه Dll ارتباط داره و خطای هم بهم نمیده و برنامه بدون مشکل روی سیستم مشتری کار میکنه

  7. #7

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

    نقل قول نوشته شده توسط mmbguide مشاهده تاپیک
    البته یک تاپیک درخصوص مبهم سازی وجود داره که من هنوز نتونستم جوابی بگیرم. دلیلش هم اینه که وقتی Referenceهای مبهم شده را به پروژه اضافه میکنم برنامه با خطا مواجه میشه ولی خود برنامه با کدهای درون خودش بدرستی کار میکنه.

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

    تشکر
    احیانا شما اومدی تک تک dll هارو بصورت جداگانه مبهم سازی کردی؟ در این حالت احتمال خطا و اجرا نشدن برنامه خیلی زیاده، شما فقط کافیه فایل اصلی برنامه تون یعنی همون فایل exe رو توسط Smart assembly باز کنین خود smart assembly بصورت خودکار رفرنس هارو پیدا میکنه و براتون لیست میکنه

  8. #8
    کاربر دائمی آواتار mmbguide
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    منظومه شمسی
    پست
    1,146

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

    بله دقیقا. من تک تک پروژه ها (DLLها) رو مبهم کردم و بعد به پروژه اصلی به عنوان Reference اضافه کردم و در انتها پروژه اصلی رو مبهم کردم. و نکته ای که گفتید رو نمیدونستم و امتحان میکنم. ولی سوالم اینه که اگر من برای یک پروژه ای که متعلق به من نیست و نتونم DLL خودم رو جداگانه مبهم کنم پس چطوری باید اون رو به افراد دیگه ارائه کنم. ممنون

  9. #9

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

    گفتم که فقط کافیه فایل Exe رو توی smart باز کنین، فایل dll شما شناسایی میشه و میتونین داخل فایل exe اصلی مدفون (merge و یا embed) و مبهمش کنید

  10. #10
    کاربر دائمی آواتار mmbguide
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    منظومه شمسی
    پست
    1,146

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

    پیرو مطلب شماره #2:

    از اونجایی که سرور پروژه تنها به برنامه SQL مجهز شده، آیا لازمه که برای ایجاد ارتباط (امن و رمزگذاری شده) با SQL از تکنولوژی و یا شیوه خاصی مثل WCF استفاده بشه و یا به تنهایی بین برنامه نوشته شده در دات نت و SQL میشه الزامات ASVS (آنهایی که برای WinForm ممکن هست) رو پیاده سازی کرد؟ ممنون اگر توضیح بدید

  11. #11
    کاربر دائمی آواتار mmbguide
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    منظومه شمسی
    پست
    1,146

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

    نقل قول نوشته شده توسط mr.sirwan مشاهده تاپیک
    گفتم که فقط کافیه فایل Exe رو توی smart باز کنین، فایل dll شما شناسایی میشه و میتونین داخل فایل exe اصلی مدفون (merge و یا embed) و مبهمش کنید
    البته منظورم این هستش که من به سفارش یک برنامه نویس یک DLL براش آماده کردم و قرار از این فایل استفاده کنه و من هم میخوام DLL رو مبهم سازی کنم، ایا برای استفاده کننده دوم مشکلی پیش نمیاد. برای این مشکل راه حل چیه؟ ممنون

  12. #12

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

    نقل قول نوشته شده توسط mmbguide مشاهده تاپیک
    البته منظورم این هستش که من به سفارش یک برنامه نویس یک DLL براش آماده کردم و قرار از این فایل استفاده کنه و من هم میخوام DLL رو مبهم سازی کنم، ایا برای استفاده کننده دوم مشکلی پیش نمیاد. برای این مشکل راه حل چیه؟ ممنون
    سر مبهم سازی فایل Dll و استفاده ازش تو کدنویسی هنگام کدنویسی نه با مشکلی برخورد نمیکنید من خودم تمام کلاس و دستورات کاریم مبهم کردم و به پروژه ام دادم و دستورات ام میزدم میامد و کار میکرد ولی با نرم افزار که سورس میزدم ببینم کد درست حسابی بهم نشان نمیداد یعنی همه چیز نشان داد جز کدهای خودم ولی تو کدنویسی مشکلی نبود. راحت کد صدا میکردم و استفاده بدون مشکل خیالت راحت مبهم کنی بدی باز میتونه استفاده کنه ولی کدش نمیتونه ببینه چی هستش

  13. #13
    کاربر دائمی آواتار ASKaffash
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    2,427

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

    سلام
    برای تامین امنیت باید کارهای ذیل را انجام دهید :
    - حتما Access Modifier ها را صحیح انتخاب کنید ترجیحا private , internal ( در غیر اینصورت با Obfuscate شدن هم قابل نفوذ است) همچنین استفاده از dll بعلت استفاده از member های public و protected یک دردسر امنیتی است اگر لازم است بعضی از کلاس های مهم را sealed کنید
    - حتما با حمله Injection مقابله کنید به خصوص کارکتر سینگل کوتیشن در تکست باکس ها
    - حتما ConnetionString را Encrypt کنید
    - باید حتما با ابزار مناسب برنامه را Obfuscate کنید (اگر از internal و private استفاده کرده باشید نتیجه obfuscate خیلی مناسب تر است)
    - در صورت مقدور hash فایل اجرایی را درون برنامه کنترل کنید

  14. #14

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

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

    در مورد پست شماره 10:
    اصولا ارتباط مستقیم نرم افزار کلاینت با دیتابیس سرور راه حل خوبی نیست ، و بهتر هست نرم افزار کلاینت با یک سرویس در ارتباط باشه و نهایتا سرویس درخواست های کلاینت ها رو پاسخ بده و از طرفی سرویس با دیتابیس سرور در ارتباط باشه (البته که ارتباط سرویس و دیتابیس سرور هم باید محافظت شده باشه همونطور که بالاتر عرض شد)
    جستجو با این کلید واژه ها میتونه کمک کنه
    Encrypted Connections to the Database Engine
    Configure SSL encryption in SQL Server

    موفق باشید
    قوانین سایت برنامه نویس [ به سوالات از طریق پیام خصوصی پاسخ داده نمی شود ]

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

  1. سوال: روش آپلود کردن سایت بر روی هاست و مدیریت محتوای سایت...
    نوشته شده توسط vahid1993 در بخش طراحی وب (Web Design)
    پاسخ: 1
    آخرین پست: جمعه 07 خرداد 1395, 19:48 عصر
  2. پاسخ: 3
    آخرین پست: چهارشنبه 02 اردیبهشت 1394, 12:02 عصر
  3. سوال: تشخیص سیستم مدیریت سایت ها و تغییر آدرس ورود به مدیریت CMS ها
    نوشته شده توسط iconsco در بخش توسعه وب (Web Development)
    پاسخ: 5
    آخرین پست: شنبه 20 خرداد 1391, 19:12 عصر
  4. سوال: مگر 8 بیت یک بایت نمی شود پس چگونه در این الگوریتم تعداد بیت ها یک بایت میشوند؟
    نوشته شده توسط complexcoding در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 2
    آخرین پست: دوشنبه 14 فروردین 1391, 15:21 عصر

برچسب های این تاپیک

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

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