Obsah:
Definícia - Čo znamená nebezpečný?
Nebezpečné je kľúčové slovo programovacieho jazyka C (C #), ktoré sa používa na označenie časti kódu, ktorá nie je spravovaná kódom Common Language Runtime (CLR) .NET Framework alebo nespravovaným kódom. Nebezpečné sa používa vo vyhlásení typu alebo člena alebo na špecifikovanie kódu bloku. Pri použití na špecifikáciu metódy je kontext celej metódy nebezpečný.
Nebezpečný kód poskytuje dobrú interoperabilitu s nespravovanými programovacími rozhraniami (API) alebo systémovými volaniami a slúži ako kompatibilné rozhranie pre knižnice dynamických odkazov tretích strán (DLL), ktoré vyžadujú ukazovatele na odovzdávanie parametrov. Nebezpečný kód sa môže použiť aj počas ladenia, keď si obsah procesu vyžaduje kontrolu alebo analýzu.
Techopedia vysvetľuje nebezpečenstvo
Nebezpečné údaje sa týkajú dát pridelených do pamäte, ktoré nie sú riadené CLR, ako sú napríklad úchyty alebo ukazovatele Windows pridelené novou metódou.
Nebezpečný kód označuje príkaz alebo metódu, ktorá pristupuje k nespravovanej pamäti, vrátane:
- Hovory na rozhrania API systému Windows
- Volania na komponenty rozhrania metódy komponentového modelu modelu (COM) zahŕňajúce štruktúry s ukazovateľmi alebo kódom kritickým pre výkon.
Nebezpečný kód sa primárne používa, keď operácie zahŕňajú ukazovatele a všeobecne, keď sa kód vykonáva mimo riadeného kontextu. Kompilácia nebezpečného kódu vyžaduje špecifikáciu voľby „/ nebezpečný“ pomocou príkazu kompilácie.
V plne dôveryhodných prostrediach sa na vykonávanie nebezpečného vykonávania kódu vyžaduje CLR. CLR však neoveruje nebezpečný kód. CLR podporuje nebezpečný kód na zabezpečenie priameho prístupu k nespravovanému kódu pamäte, čo je niekedy výhodné z dôvodov výkonu.
Pretože CLR zachováva typovú bezpečnosť a zabezpečenie, C # nepodporuje aritmetiku ukazovateľa v spravovanom kóde, na rozdiel od C / C ++. Nebezpečné kľúčové slovo umožňuje použitie ukazovateľa v nespravovanom kóde. Bezpečnosť však nie je zaručená, pretože sa nedodržiavajú prísne pravidlá prístupu k objektom. Napríklad možnosti prevádzky ukazovateľa nie sú poskytované v prostredí Java Runtime Environment (JRE).
Nebezpečný kód môže spôsobovať problémy so stabilitou a bezpečnosťou kvôli svojej prirodzenej komplexnej syntaxi a možnosti chýb súvisiacich s pamäťou, ako je napríklad pretečenie zásobníka, prístup a prepísanie systémovej pamäte. Mimoriadna starostlivosť pre vývojárov je rozhodujúca pre odvrátenie možných chýb alebo bezpečnostných rizík.
