A C++ megalkotója bírálta a biztonságos programozási nyelvek előírását

Bjarne Stroustrup, a C++ nyelv megalkotója kifogásokat tett közzé az NSA jelentésének következtetéseivel szemben, amelyek azt javasolták, hogy a szervezetek a nyelvek javára lépjenek el az olyan programozási nyelvektől, mint a C és C++, amelyek a memóriakezelést a fejlesztőre bízzák. olyan, mint a C#, Go, Java, Ruby, Rust és Swift, amelyek automatikus memóriakezelést biztosítanak, vagy fordítási idejű memóriabiztonsági ellenőrzéseket hajtanak végre.

Stroustrup szerint az NSA-jelentésben említett biztonságos nyelvek valójában nem jobbak a C++-nál a számára fontos alkalmazásokban. Különösen az elmúlt években kidolgozott, a C++ használatára vonatkozó alapvető ajánlások (C++ Core Guidelines) tartalmazzák a biztonságos programozási módszereket, és olyan eszközök használatát írják elő, amelyek garantálják a típusokkal és erőforrásokkal való biztonságos munkát. Ez lehetőséget ad azoknak a fejlesztőknek, akik nem igényelnek ilyen szigorú biztonsági garanciákat, hogy továbbra is a régi fejlesztési módszereket használják.

Stroustrup úgy véli, hogy egy jó statikus elemző, amely követi a C++ Core Guidelines-t, lényegesen alacsonyabb költségek mellett nyújthatja a szükséges garanciákat a C++ kódok biztonságára, mint az új, biztonságos programozási nyelvekre való átállás. Például az alapvető irányelvek többsége már megvalósult a Microsoft Visual Studio statikus elemzőjében és memóriabiztonsági profiljában. Néhány ajánlást a Clang tidy statikus analizátor is figyelembe vesz.

Az NSA-jelentést azért is kritizálták, mert csak a memóriaproblémákra koncentrált, sok más, a biztonságot és megbízhatóságot befolyásoló programnyelvi problémát kihagyva. Stroustrup a biztonságot egy tágabb fogalomnak tekinti, amelynek különböző oldalai a kódolási stílus, a könyvtárak és a statikus analizátorok kombinációjával érhetők el. A típusokkal és erőforrásokkal való munka biztonságát biztosító szabályok beépítésének ellenőrzése érdekében javasolt megjegyzések használata a kódban és a fordítói beállításokban.

Azokban az alkalmazásokban, ahol a teljesítmény fontosabb, mint a biztonság, ez a megközelítés lehetővé teszi olyan szolgáltatások szelektív alkalmazását, amelyek csak ott garantálják a biztonságot, ahol szükség van rá. A biztonsági eszközök részlegesen is alkalmazhatók, például tartomány-ellenőrzéssel és inicializálási szabályokkal kezdjük, majd fokozatosan hozzáigazítjuk a kódot a szigorúbb követelményekhez.

Forrás: opennet.ru

Hozzászólás