Унсафе Руст вам даје већу контролу над меморијом. Научите како да радите са небезбедним Руст-ом и разумете инхерентне ризике повезане са његовом употребом.
Гаранције безбедности меморије су једна од Руст-ових продајних тачака; међутим, Руст није имун на грешке и рањивости. Како Руст-ова провера задуживања спроводи модел власништва, постоји благи компромис у времену компилације током безбедносних провера.
Руст пружа функционалност за заобилажење безбедносних провера у функцији која се зове „Небезбедна рђа“ која вам омогућава да избегнете ове безбедносне провере у сврху перформанси. Унсафе Руст је моћан алат за писање ефикасног системског софтвера ниског нивоа са Руст-ом.
Разумевање Унсафе Руст
Унсафе Руст је скуп функција које можете да користите да бисте заобишли Руст-ове безбедносне гаранције у замену за већу контролу над меморијом. Небезбедне Руст карактеристике укључују необрађене показиваче, небезбедне функције и несигурне особине.
Сврха несигурног Руста је да омогући програмерима могућност писања системског кода ниског нивоа без жртвовања перформанси. Можете директно приступити меморијским ресурсима и манипулисати њима и повећати перформансе ваше апликације помоћу небезбедног Руста.
Унсафе Руст је посебно згодан у развоју оперативног система, мрежном програмирању и развоју игара, где су перформансе критичне. У овим контекстима, биће вам потребна прецизна контрола над распоредом меморије програма и понашањем кода. Унсафе Руст вам омогућава да то постигнете обезбеђивањем апстракција ниског нивоа за имплементацију сложених алгоритама и структура података.
Рад са Унсафе Руст
Небезбедни блокови пружају функционалност за коришћење небезбедних Руст функција. Користићете несигурно кључна реч за дефинисање несигурних блокова који садрже важећи Руст код.
Ево како можете да користите небезбедни блок за директан приступ меморији ради модификације вредности:
фнглавни() {
дозволитимут к = 10;несигурно {
дозволити сирово = &мут Икс као *мути32;
*сир = 20;
}
принтлн!(„к је сада {}“, Икс);
}
Тхе Икс променљива је променљив цео број. У несигурно блок, необрађени показивач на Икс додељује нову вредност Икс. Код у несигурно блок је важећи, али није безбедан и није био у несигурном блоку; програм пада.
Поред тога, можете дефинисати небезбедне функције додавањем несигурно кључна реч пре фн кључну реч у декларацијама ваших функција.
несигурнофнобављање_небезбедне_операције() {
// Ваш небезбедан код овде
}
Требаће вам небезбедни блок да бисте позвали небезбедне функције у другим деловима вашег програма.
фнглавни() {
несигурно {
перформ_унсафе_оператион();
}
}
Означавање функција са несигурно кључна реч не значи да је функција сама по себи опасна. То указује да функција садржи код који захтева додатни опрез у коришћењу.
Ризици повезани са коришћењем небезбедног Руста
Неправилна употреба небезбедног Руста може довести до грешака у меморији, трка у подацима и других безбедносних пропуста. Због тога је кључно разумети ризике док следите најбоље праксе повезане са небезбедним Руст-ом за писање безбедног и ефикасног кода.
Главни ризик повезан са небезбедним Руст-ом је потенцијал грешака у вези са меморијом које могу довести до пада, безбедносних рањивости и недефинисаног понашања кода.
Грешке у меморији настају када програм покуша да ненормално приступи меморији; програм се на крају руши или се понаша непредвидиво.
Трке података настају када две или више програмских нити приступају истом делу меморије истовремено и на најмање једна од нити мења вредност у меморији, узрокујући тиме да се програм понаша неочекивано.
Можете покренути преливање бафера неправилним коришћењем небезбедног Руста. До преливања бафера долази када програм упише податке иза краја бафера. Прекорачење бафера може довести до пада програма или дозволити нападачима да изврше произвољан код.
Још једна рањивост је употреба без употребе (УАФ) која се јавља када програм приступи меморији након де-алокације вредности. УАФ може проузроковати да се програм понаша непредвидиво и потенцијално уведе безбедносне пропусте.
Због ових рањивости, када радите са несигурним Руст-ом, неопходно је дубоко разуме Рустово власништво и како модел позајмљивања функционише у Русту уз поштовање најбољих пракси.
Рустово управљање меморијом је флексибилно
Рустов модел власништва аутоматски управља меморијом, смањујући ризик од грешака у вези са меморијом. Позајмљивање омогућава да више променљивих приступи истим меморијским ресурсима без сукоба истовремено.
Руст-ово управљање меморијом пружа флексибилност, сигурност и перформансе потребне за развој модерног софтвера, чинећи Руст моћним алатом за писање ефикасног и поузданог кода.