Π‘ΡŠΠ·Π΄Π°Ρ‚Π΅Π»ΡΡ‚ Π½Π° C ++ ΠΊΡ€ΠΈΡ‚ΠΈΠΊΡƒΠ²Π° Π½Π°Π»Π°Π³Π°Π½Π΅Ρ‚ΠΎ Π½Π° бСзопасни Π΅Π·ΠΈΡ†ΠΈ Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅

Bjarne Stroustrup, ΡΡŠΠ·Π΄Π°Ρ‚Π΅Π»ΡΡ‚ Π½Π° Π΅Π·ΠΈΠΊΠ° C++, ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π° Π²ΡŠΠ·Ρ€Π°ΠΆΠ΅Π½ΠΈΡ срСщу Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΡ‚Π° Π½Π° Π΄ΠΎΠΊΠ»Π°Π΄Π° Π½Π° NSA, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π° Π½Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈΡ‚Π΅ Π΄Π° сС ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π°Ρ‚ ΠΎΡ‚ Π΅Π·ΠΈΡ†ΠΈΡ‚Π΅ Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ ΠΊΠ°Ρ‚ΠΎ C ΠΈ C++, ΠΊΠΎΠΈΡ‚ΠΎ оставят ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, Π² ΠΏΠΎΠ»Π·Π° Π½Π° Π΅Π·ΠΈΡ†ΠΈΡ‚Π΅ ​​като C#, Go, Java, Ruby, Rust ΠΈ Swift, ΠΊΠΎΠΈΡ‚ΠΎ осигуряват Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° ΠΈΠ»ΠΈ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π·Π° бСзопасност Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅.

Π‘ΠΏΠΎΡ€Π΅Π΄ Бтрауструп Π·Π°Ρ‰ΠΈΡ‚Π΅Π½ΠΈΡ‚Π΅ Π΅Π·ΠΈΡ†ΠΈ, спомСнати Π² Π΄ΠΎΠΊΠ»Π°Π΄Π° Π½Π° NSA, Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ Π½Π΅ ΠΏΡ€Π΅Π²ΡŠΠ·Ρ…ΠΎΠΆΠ΄Π°Ρ‚ C++ Π² прилоТСнията, ΠΊΠΎΠΈΡ‚ΠΎ са Π²Π°ΠΆΠ½ΠΈ ΠΎΡ‚ Π½Π΅Π³ΠΎΠ²Π° Π³Π»Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ°. По-спСциално, основнитС ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΠΊΠΈ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° C++ (C++ Core Guidelines), Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π΅Π½ΠΈ ΠΏΡ€Π΅Π· послСднитС Π³ΠΎΠ΄ΠΈΠ½ΠΈ, ΠΎΠ±Ρ…Π²Π°Ρ‰Π°Ρ‚ бСзопасни ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ ΠΈ прСдписват ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° инструмСнти, ΠΊΠΎΠΈΡ‚ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°Ρ‚ бСзопасна Ρ€Π°Π±ΠΎΡ‚Π° с Ρ‚ΠΈΠΏΠΎΠ²Π΅ ΠΈ рСсурси. Π’ΠΎΠ²Π° оставя Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ изискват Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° строги Π³Π°Ρ€Π°Π½Ρ†ΠΈΠΈ Π·Π° сигурност, Π΄Π° ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Ρ‚ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ стари ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°.

Бтрауструп вярва, Ρ‡Π΅ Π΅Π΄ΠΈΠ½ Π΄ΠΎΠ±ΡŠΡ€ статичСн Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€, ΠΊΠΎΠΉΡ‚ΠΎ слСдва основнитС насоки Π½Π° C++, ΠΌΠΎΠΆΠ΅ Π΄Π° осигури Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈΡ‚Π΅ Π³Π°Ρ€Π°Π½Ρ†ΠΈΠΈ Π·Π° бСзопасността Π½Π° C++ ΠΊΠΎΠ΄Π° Π½Π° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΏΠΎ-ниска Ρ†Π΅Π½Π° ΠΎΡ‚ ΠΌΠΈΠ³Ρ€ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ към Π½ΠΎΠ²ΠΈ Π·Π°Ρ‰ΠΈΡ‚Π΅Π½ΠΈ Π΅Π·ΠΈΡ†ΠΈ Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅. НапримСр ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ ΠΎΡ‚ основнитС насоки Π²Π΅Ρ‡Π΅ са Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈ Π² статичния Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ ΠΈ ΠΏΡ€ΠΎΡ„ΠΈΠ»Π° Π·Π° бСзопасност Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈ Π² Microsoft Visual Studio. Някои ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΠΊΠΈ ΡΡŠΡ‰ΠΎ са Π²Π·Π΅Ρ‚ΠΈ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ Π² статичния Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ Clang tidy.

Π”ΠΎΠΊΠ»Π°Π΄ΡŠΡ‚ Π½Π° NSA ΡΡŠΡ‰ΠΎ бСшС ΠΊΡ€ΠΈΡ‚ΠΈΠΊΡƒΠ²Π°Π½, Ρ‡Π΅ сС фокусира само Π²ΡŠΡ€Ρ…Ρƒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈΡ‚Π΅ с ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, ΠΊΠ°Ρ‚ΠΎ пропуска ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ с Π΅Π·ΠΈΠΊΠ° Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅, ΠΊΠΎΠΈΡ‚ΠΎ засягат сигурността ΠΈ надСТдността. Straustrup Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π° сигурността ΠΊΠ°Ρ‚ΠΎ ΠΏΠΎ-ΡˆΠΈΡ€ΠΎΠΊΠ° концСпция, Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈΡ‚Π΅ аспСкти Π½Π° която ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ постигнати Ρ‡Ρ€Π΅Π· комбинация ΠΎΡ‚ стил Π½Π° ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ статични Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΈ. Π—Π° Π΄Π° сС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π° Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π°, ΠΊΠΎΠΈΡ‚ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°Ρ‚ бСзопасността Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° с Ρ‚ΠΈΠΏΠΎΠ²Π΅ ΠΈ рСсурси, сС ΠΏΡ€Π΅Π΄Π»Π°Π³Π° Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π°Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ Π² ΠΊΠΎΠ΄Π° ΠΈ ΠΎΠΏΡ†ΠΈΠΈΡ‚Π΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π°.

Π’ прилоТСния, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ производитСлността Π΅ ΠΏΠΎ-Π²Π°ΠΆΠ½Π° ΠΎΡ‚ сигурността, Ρ‚ΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ позволява сСлСктивно ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°Ρ‚ сигурност само Ρ‚Π°ΠΌ, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ°. Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ‚Π΅ Π·Π° сигурност ΡΡŠΡ‰ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚ Π½Π° части, ΠΊΠ°Ρ‚ΠΎ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π°ΠΏΠΎΡ‡Π²Π°Π½Π΅ с ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΠΎΠ±Ρ…Π²Π°Ρ‚ ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π° инициализация ΠΈ слСд Ρ‚ΠΎΠ²Π° постСпСнно Π°Π΄Π°ΠΏΡ‚ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄Π° към ΠΏΠΎ-строги изисквания.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€