خالق C ++ از تحمیل زبان های برنامه نویسی ایمن انتقاد کرد

بیارن استروستروپ، خالق زبان C++، اعتراضاتی را به نتیجه‌گیری گزارش NSA منتشر کرده است که در آن توصیه می‌شود سازمان‌ها از زبان‌های برنامه‌نویسی مانند C و C++ که مدیریت حافظه را به توسعه‌دهنده واگذار می‌کنند، به نفع زبان‌ها دور شوند. مواردی مانند C#، Go، Java، Ruby، Rust و Swift که مدیریت خودکار حافظه را ارائه می دهند یا بررسی های ایمنی حافظه را در زمان کامپایل انجام می دهند.

به گفته Stroustrup، زبان‌های امن ذکر شده در گزارش NSA در واقع در برنامه‌هایی که از دیدگاه او مهم هستند، برتر از C++ نیستند. به طور خاص، توصیه‌های اساسی برای استفاده از C++ (C++ Core Guidelines) که در سال‌های اخیر توسعه یافته‌اند، روش‌های برنامه‌نویسی ایمن را پوشش می‌دهند و استفاده از ابزارهایی را تجویز می‌کنند که کار ایمن با انواع و منابع را تضمین می‌کنند. با این حال، توسعه دهندگانی که به چنین ضمانت های امنیتی سختگیرانه ای نیاز ندارند، این امکان را دارند که به استفاده از روش های توسعه قدیمی ادامه دهند.

استروستروپ معتقد است که یک تحلیلگر استاتیک خوب که از دستورالعمل‌های هسته C++ پیروی می‌کند، می‌تواند تضمین‌های لازم را برای ایمنی کد C++ با هزینه‌ی قابل‌توجهی کمتر از مهاجرت به زبان‌های برنامه‌نویسی امن جدید ارائه دهد. به عنوان مثال، بیشتر دستورالعمل‌های اصلی قبلاً در تحلیلگر استاتیک و مشخصات ایمنی حافظه موجود در Microsoft Visual Studio پیاده‌سازی شده‌اند. برخی از توصیه ها نیز در آنالایزر استاتیک مرتب Clang در نظر گرفته شده است.

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

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

منبع: opennet.ru

اضافه کردن نظر