Ebaturvaline rooste annab teile rohkem kontrolli mälu üle. Õppige töötama ohtliku roostega ja mõistma selle kasutamisega kaasnevaid riske.

Mälu ohutuse garantiid on üks Rusti müügiargumente; Rust pole aga vigade ja haavatavuste suhtes immuunne. Kuna Rusti laenukontrollija jõustab omandimudeli, on ohutuskontrollide ajal kompileerimisaja osas väike kompromiss.

Rooste pakub funktsioone ohutuskontrollidest mööda hiilimiseks funktsioonis nimega "Ubaturvaline rooste", mis võimaldab teil neid ohutuskontrolle jõudluse huvides vältida. Unsafe Rust on võimas tööriist tõhusa madala tasemega süsteemitarkvara kirjutamiseks Rustiga.

Ohutu rooste mõistmine

Unsafe Rust on funktsioonide komplekt, mida saate kasutada Rusti ohutusgarantiidest möödahiilimiseks vastutasuks mälu üle suurema kontrolli eest. Ebaturvalised roostefunktsioonid hõlmavad tooreid viiteid, ohtlikke funktsioone ja ohtlikke omadusi.

Ohtliku rooste eesmärk on anda arendajatele võimalus kirjutada madala tasemega süsteemikoodi ilma jõudlust ohverdamata. Saate otse mäluressurssidele juurde pääseda ja nendega manipuleerida ning ebaturvalise rooste abil oma rakenduse jõudlust suurendada.

Unsafe Rust on eriti mugav operatsioonisüsteemide arendamisel, võrgu programmeerimisel ja mängude arendamisel, kus jõudlus on kriitilise tähtsusega. Nendes kontekstides on teil vaja programmi mälu paigutuse ja koodi käitumise üle täpset kontrolli. Unsafe Rust võimaldab teil seda saavutada, pakkudes keerukate algoritmide ja andmestruktuuride rakendamiseks madala taseme abstraktsioone.

Töötamine ebaturvalise roostega

Ebaturvalised plokid pakuvad funktsionaalsust ohtlike roostefunktsioonide kasutamiseks. Sa kasutad ebaturvaline märksõna kehtivat Rust-koodi sisaldavate ebaturvaliste plokkide määratlemiseks.

Siin on, kuidas saate ebaturvalist plokki kasutada väärtuse muutmiseks mälule otseseks juurdepääsuks.

fnpeamine() {
lasemut x = 10;

ebaturvaline {
lase toores = &mut x nagu *muti32;
*toores = 20;
}

println!("x on nüüd {}", x);
}

The x muutuja on muutuv täisarv. Aastal ebaturvaline plokk, toore osuti x määrab uue väärtuse x. Kood failis ebaturvaline blokk on kehtiv, kuid mitte ohutu ega olnud ebaturvalises plokis; programm jookseb kokku.

Lisaks saate ebaturvalisi funktsioone määratleda, lisades ebaturvaline märksõna enne fn märksõna oma funktsioonide deklaratsioonides.

ebaturvalinefnsooritada_ebaturvaline_operatsioon() {
// Teie ebaturvaline kood siin
}

Ebaturvaliste funktsioonide kutsumiseks programmi muudes osades on vaja ebaturvalist plokki.

fnpeamine() {
ebaturvaline {
soorita_ebaturvaline_operatsioon();
}
}

Märgistusfunktsioonid nupuga ebaturvaline märksõna ei tähenda, et funktsioon on oma olemuselt ohtlik. See näitab, et funktsioon sisaldab koodi, mis nõuab kasutamisel erilist ettevaatust.

Ohtliku rooste kasutamisega seotud riskid

Ohtliku rooste ebaõige kasutamine võib põhjustada mälutõrkeid, andmejooksu ja muid turvaauke. Seetõttu on ülioluline mõista riske, järgides samas ebaturvalise roostega seotud parimaid tavasid turvalise ja toimiva koodi kirjutamiseks.

Ebaturvalise roostega seotud peamine risk on mäluga seotud vead, mis võivad põhjustada krahhe, turvaauke ja määratlemata koodi käitumist.

Mälu vead ilmnevad siis, kui programm üritab ebanormaalselt mälule juurde pääseda; programm jookseb lõpuks kokku või käitub ettearvamatult.

Andmejooksud tekivad siis, kui kaks või enam programmilõimi pääsevad samaaegselt juurde samale mälutükile ja kell Vähemalt üks lõimedest muudab mälus olevat väärtust, põhjustades seeläbi programmi käitumist ootamatult.

Ebaturvalise rooste ebaõige kasutamise korral võite käivitada puhvri ületäitumise. Puhvri ületäitumine ilmneb siis, kui programm kirjutab andmeid puhvri lõpust kaugemale. Puhvri ületäitumine võib põhjustada programmi krahhi või lubada ründajatel käivitada suvalist koodi.

Teine haavatavus on kasutus pärast vaba kasutamist (UAF), mis ilmneb siis, kui programm pärast väärtuse eraldamist mälule juurde pääseb. UAF võib põhjustada programmi ettearvamatu käitumise ja potentsiaalselt tekitada turvaauke.

Nende haavatavuste tõttu on ohtliku roostega töötamisel oluline põhjalikult mõista Rusti omandiõigust ja kuidas laenumudel Rustis töötab järgides samal ajal parimaid tavasid.

Rusti mäluhaldus on paindlik

Rusti omandimudel haldab mälu automaatselt, vähendades mäluga seotud vigade riski. Laenamine võimaldab mitmel muutujal ilma konfliktideta samaaegselt juurde pääseda samadele mäluressurssidele.

Rusti mäluhaldus pakub kaasaegseks tarkvaraarenduseks vajalikku paindlikkust, turvalisust ja jõudlust, muutes Rusti võimsaks tööriistaks tõhusa ja usaldusväärse koodi kirjutamiseks.