خانه / دانستنیها / چگونه بین نرم‌افزارهای متن‌باز و متن‌بسته انتخاب کنیم؟

چگونه بین نرم‌افزارهای متن‌باز و متن‌بسته انتخاب کنیم؟

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

بحث متن باز در مقابل متن بسته

در مقایسه با باز بودن و شفاف بودن نرم‌افزارهای متن‌باز، ماهیت نرم‌افزارهای متن بسته ترسناک است. کد منبع این نرم‌افزارها بسته و ناشناس است. به علاوه توسط افرادی کنترل می‌شود که پتانسیل انجام کارهای خبیثانه را هم دارند (یا حتی اگر خبیثانه هم نباشد، ممکن است ناپدید شده و کاربران خود را برای همیشه در وضعیت بدون پشتیبان رها کنند) نرم‌افزارهای اختصاصی ممکن است قیمتی داشته باشند که با بودجه شما مطابقت نداشته باشد. در آخر هم اگر اشتباهی رخ دهد، اتکا به پشتیبانی اختصاصی می‌تواند خللی در امنیت به وجود آورد.

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

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

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

۱. Fortify Source Code Analyzer

این ابزار یکی از اولین کد اسکنرهای اتوماتیک است که خیلی بیشتر از جستجوی نمونه‌های strcpy در کد کار می‌کند. این ابزار می‌تواند بیش از ۳۰ زبان را اسکن کرده و برای سازمان‌هایی که محیط‌های توسعه متنوع و تعداد زیادی برنامه در حال توسعه دارند بسیار کاراست.

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

این ابزار، یک ابزار قوی برای تحلیل زبان‌های برنامه‌نویسی و چارچوب‌های متنوع است اما در عین حال قیمت بالایی دارد.

قیمت: $$$

مخاطب هدف: سازمان‌ها و تیم‌ها

زبان هدف: C, C++, Java, JSP, .NET, ASP.NET, classic Active Server Pages (ASP), ColdFusion, PHP, Visual Basic 6, VBScript, JavaScript, PL/SQL, T-SQL, Python, Objective-C, COBOL

بهترین زمان اجرا: هر شب و هر هفته روی یک سرور build

۲. IBM Rational Appscan Source

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

قیمت: $$$

مخاطب هدف: سازمان‌ها و تیم‌ها

زبان هدف: C, C++, .NET, Java, JSP, JavaScript, ColdFusion, Classic ASP, PHP, Perl, Visual Basic 6, PL/SQL, T-SQL, COBOL

بهترین زمان اجرا: هر شب و هر هفته روی یک سرور build

۳.Findbugs

این ابزار متن‌باز برای هر تیم توسعه‌دهنده جاوا بسیار ارزشمند است. از بالا تا پایین برای اسکن باگ‌ها در کد جاوا تمرکز می‌کند. اگر به زبانی غیر از جاوا کد می‌زنید این ابزار به درد شما نمی‌خورد. این ابزار مسائل مرتبط به امنیت و کیفیت را هم در نظر می‌گیرد.

توسعه‌دهندگان می‌توانند به طور مستقیم با Findbugs کار کنند. به علاوه پلاگین‌های دارد که با بسیاری از IDE ها و سرورهای خودکار build کار می‌کند.

قیمت: صفر

مخاطب هدف: تیم‌ها و توسعه‌دهندگان

زبان هدف: جاوا

بهترین زمان اجرا: در حین کد نویسی یا روی یک سرور build

۴.Sonarqube

هرچند Sonarqube دقیقا یک ابزار تحلیل امنیتی نیست، اما می‌تواند آسیب‌پذیری‌های امنیتی را که توسط برنامه‌های دیگر کشف شده‌اند در بررسی‌های کیفی خود تجمیع نماید. نرم‌افزار با کیفیت امن است. SonarQube قابلیت‌های اضافی در اختیار قرار می‌دهد که به تیم‌ها کمک می‌کند تا مطمئن شوند که نرم‌افزارشان در حد استاندارد است.این نرم‌افزار متن‌باز می‌تواند تنظیم شده تا با انواع مختلفی از سرورهای build کار کند. این ابزار می‌تواند یافته‌های ابزارهای متن‌باز و متن‌بسته را دریافت کرده و تقابل بین نرم‌افزارهای متن‌باز در مقابل متن‌بسته را به یک بحث پرحاصل و مولد تبدیل کند.

قیمت: صفر

مخاطب هدف: سازمان‌ها و تیم‌ها

زبان هدف: ABAP, Android (Java), C, C++, CSS, Objective-C, COBOL, C#, Flex, Forms, Groovy, Java, JavaScript, Natural, PHP, PL/SQL, Swift, Visual Basic 6, Web, XML, Python

بهترین زمان اجرا: در زمان build

۵.Klockwork Insight

این ابزار در حقیقت از Nortel در سال ۲۰۰۰ به منظور تجاری سازی یکی از ابزارهای توسعه درون سازمانی خود نشات گرفته است. این ابزار مثل یک غلط یاب عمل می‌کند و آسیب‌پذیری‌ها و خطاها را در حین تایپ توسعه‌دهنده متذکر می‌شود. به علاوه جلوی لوپ بازخورد را می‌گیرد و به توسعه‌دهنده آموزش می‌دهد که آسیب‌پذیری ها را در انباره کامیت نکند. به جای اینکه یک هفته برای اسکن صبر کنید و سپس آسیب‌پذیری ‌ها را به صورت رندوم به توسعه‌دهندگان انتساب دهید، Klockwork بار خود را روی توسعه‌دهنده قرار می‌دهد تا در همان نقطه یاد گرفته و مشکل را حل کنند.

قیمت: $$

مخاطب هدف: سازمان‌ها و تیم‌ها

زبان هدف: C, C++, C#, Java

بهترین زمان اجرا: زمانی که توسعه‌دهنده کد می‌زند.

۶. Codiscope Secureassist

یکی دیگر از ابزارهای real time که توسعه‌دهنده در مرکز آن قرار دارد، SecureAssist است. این ابزار درون IDE توسعه‌دهنده یکپارچه می‌شود و آسیب‌پذیری‌ها را حین کار توسعه‌دهنده شناسایی می‌کند. به علاوه، مسائل امنیتی را شناسایی کرده و راهنمایی‌هایی در لحظه برای کمک به توسعه‌دهنده برای رفع مشکل ارائه می‌دهد. بهترین روش استفاده از آن در حین کدنویسی است به جای اینکه یک کد نوشته شده را در اختیار آن قرار دهید.

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

قیمت:$

مخاطب هدف: سازمان‌ها و تیم‌ها

زبان هدف: Java, .NET, PHP

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

جمع‌بندی:

چه بخواهید کل یک برنامه را با چکش غلتکی Fortify یا Appscan ضربه بزنید، جزئیات امنیتی را در محل با ضربه‌های نهایی چکش SonarQube وارد کنید، یا نرم‌افزار را به یک راه حل ایمن با استفاده از چکش Klockwork یا SecureAssist قالب بزنید، همگان از امنیتی که به خاطر استفاده از این ابزارها به برنامه نهایی اضافه شده است بهره‌مند خواهند شد.

منبع:

https://dzone.com/

 

درباره فروغ مهرعلیان

محقق و پژوهشگر در شرکت مشاوران نرم‌افزاری اعوان

همچنین بررسی کنید

خالق جاوا در آمازون

جیمز گاسلینگ، خالق زبان جاوا اعلام کرده که اکنون برای سرویس‌های وب آمازون کار می‌کند. …

۴ نظر

  1. با تشکر
    تیتر و متن یکم ناهمخوان اند

     
    • متوجه منظورتون نشدم.
      الان قضیه این هست که شما به یک ابزاری نیاز دارید و نمی‌دانید به سراغ ابزارهای متن‌باز یا متن بسته بروید.
      هرکسی هم توجیهی دارد که یک از این دو دسته بهتر هستند.( همانطور که در متن هم آمده است)
      اما تکیه کردن به اینکه این ابزار چون به یکی از این دو دسته تعلق دارد بهتر است صحیح نیست. با یک مثال هم این موضوع نشان داده شده است.
      الان ناهمخوانی کجاست؟

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

        راهنمای انتخاب نرم افزار امنیت کد

         
  2. ممنون مطلب مفیدی بود

     

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *