Unsafe Rust antaa sinulle enemmän hallintaa muistiin. Opi työskentelemään vaarallisen ruosteen kanssa ja ymmärrä sen käyttöön liittyvät riskit.

Muistin turvatakuu on yksi Rustin myyntivalteista; Rust ei kuitenkaan ole immuuni bugeille ja haavoittuvuuksille. Koska Rustin lainantarkistaja pakottaa omistusmallin, kokoamisajassa on pieni kompromissi turvallisuustarkistuksen aikana.

Ruoste tarjoaa toiminnallisuuden ohittaa turvatarkastukset "Unsafe Rust"-nimisessä ominaisuudessa, jonka avulla voit välttää nämä turvatarkastukset suorituskyvyn vuoksi. Unsafe Rust on tehokas työkalu tehokkaiden, matalan tason järjestelmäohjelmistojen kirjoittamiseen Rustilla.

Turvattoman ruosteen ymmärtäminen

Unsafe Rust on joukko ominaisuuksia, joiden avulla voit ohittaa Rustin turvallisuustakuut vastineeksi paremmasta muistin hallinnasta. Vaarallisia ruosteen ominaisuuksia ovat raaka osoittimet, vaaralliset toiminnot ja vaaralliset ominaisuudet.

Epäturvallisen ruosteen tarkoitus on tarjota kehittäjille mahdollisuus kirjoittaa matalan tason järjestelmäkoodia suorituskyvystä tinkimättä. Voit käyttää ja käsitellä muistiresursseja suoraan ja lisätä sovelluksesi suorituskykyä vaarallisen ruosteen avulla.

instagram viewer

Unsafe Rust on erityisen kätevä käyttöjärjestelmien kehittämisessä, verkko-ohjelmoinnissa ja pelien kehittämisessä, missä suorituskyky on kriittinen. Näissä yhteyksissä tarvitset ohjelman muistin asettelun ja koodin käyttäytymisen tarkkaa hallintaa. Unsafe Rust antaa sinun saavuttaa tämän tarjoamalla matalan tason abstraktioita monimutkaisten algoritmien ja tietorakenteiden toteuttamiseen.

Työskentely vaarallisen ruosteen kanssa

Turvattomat lohkot tarjoavat toiminnot vaarallisten ruosteominaisuuksien käyttämiseen. Tulet käyttämään turvaton avainsana määrittää kelvollisen Rust-koodin sisältävät vaaralliset lohkot.

Näin voit käyttää vaarallista lohkoa suoran pääsyn muistiin arvon muuttamista varten:

fnpää() {
antaamut x = 10;

turvaton {
antaa raaka = &mut x kuten *muti32;
*raaka = 20;
}

println!("x on nyt {}", x);
}

The x muuttuja on muuttuva kokonaisluku. Vuonna turvaton lohko, raaka osoitin x määrittää uuden arvon x. Koodissa oleva koodi turvaton lohko on kelvollinen, mutta ei turvallinen, eikä se ollut vaarallisessa lohkossa; ohjelma kaatuu.

Lisäksi voit määrittää vaarallisia toimintoja lisäämällä turvaton avainsana ennen fn avainsana funktiomäärittelyissäsi.

turvatonfnsuorita_turvaton_toiminto() {
// Turvaton koodisi tässä
}

Tarvitset vaarallisen lohkon kutsuaksesi vaarallisia toimintoja ohjelmasi muissa osissa.

fnpää() {
turvaton {
suorita_turvaton_operaatio();
}
}

Merkintätoiminnot -painikkeella turvaton avainsana ei tarkoita, että toiminto on luonnostaan ​​vaarallinen. Se osoittaa, että toiminto sisältää koodia, joka vaatii erityistä varovaisuutta käytössä.

Vaarallisen ruosteen käyttöön liittyvät riskit

Epäturvallisen ruosteen väärä käyttö voi johtaa muistivirheisiin, datakilpailuihin ja muihin tietoturva-aukoihin. Siksi on ratkaisevan tärkeää ymmärtää riskit ja noudattaa vaaralliseen ruosteeseen liittyviä parhaita käytäntöjä turvallisen ja tehokkaan koodin kirjoittamiseksi.

Suurin vaaralliseen ruosteeseen liittyvä riski on muistiin liittyvien virheiden mahdollisuus, jotka voivat johtaa kaatumisiin, tietoturva-aukkoja ja määrittelemättömään koodikäyttäytymiseen.

Muistivirheitä ilmenee, kun ohjelma yrittää käyttää muistia epänormaalisti; ohjelma kaatuu lopulta tai käyttäytyy arvaamattomasti.

Datakilpailuja tapahtuu, kun kaksi tai useampi ohjelmasäike käyttää samaa muistia samanaikaisesti, ja klo ainakin yksi säikeistä muuttaa arvoa muistissa, mikä saa ohjelman käyttäytymään yllättäen.

Voit laukaista puskurin ylivuotoja käyttämällä väärin epäturvallista ruostetta. Puskurin ylivuoto tapahtuu, kun ohjelma kirjoittaa tietoja puskurin lopun ulkopuolelle. Puskurin ylivuoto voi aiheuttaa ohjelman kaatumisen tai antaa hyökkääjien suorittaa mielivaltaista koodia.

Toinen haavoittuvuus on UAF (use-after-free), joka ilmenee, kun ohjelma käyttää muistia arvon purkamisen jälkeen. UAF voi saada ohjelman käyttäytymään arvaamattomasti ja mahdollisesti tuomaan mukanaan tietoturva-aukkoja.

Näiden haavoittuvuuksien vuoksi työskennellessäsi vaarallisen ruosteen kanssa on tärkeää ymmärtää Rustin omistuksen ja kuinka lainausmalli toimii Rustissa parhaita käytäntöjä noudattaen.

Rustin muistinhallinta on joustavaa

Rustin omistusmalli hallitsee muistia automaattisesti, mikä vähentää muistiin liittyvien virheiden riskiä. Lainaus mahdollistaa useiden muuttujien pääsyn samoihin muistiresursseihin ilman ristiriitoja samanaikaisesti.

Rustin muistinhallinta tarjoaa joustavuutta, turvallisuutta ja suorituskykyä, joita moderniin ohjelmistokehitykseen tarvitaan, mikä tekee Rustista tehokkaan työkalun tehokkaan ja luotettavan koodin kirjoittamiseen.