Nulová postava - Null character

Znak null (také null terminátor ) je řídicí znak s nulovou hodnotou. Je přítomen v mnoha znakových sadách , včetně těch definovaných kódy Baudot a ITA2 , ISO/IEC 646 (nebo ASCII ), řídicího kódu C0 , univerzální kódované znakové sady (nebo Unicode ) a EBCDIC . Je k dispozici téměř ve všech hlavních programovacích jazycích . Často je zkrácen jako NUL (nebo NULL, i když v některých kontextech se tento termín používá pro nulový ukazatel , jiný objekt). V 8bitových kódech je znám jako nulový bajt .

Původní význam tohoto znaku byl jako NOP - při odeslání na tiskárnu nebo terminál nedělá nic (některé terminály jej však nesprávně zobrazují jako mezeru ). Když byly jako výstupní zařízení počítače použity elektromechanické dálnopisy, byl na konci každého tištěného řádku odeslán jeden nebo více nulových znaků, aby se mechanismus mohl vrátit do první tiskové polohy na dalším řádku. Na děrné pásce je postava zastoupena bez jakýchkoli děr, takže nová neděrovaná páska je zpočátku naplněna nulovými znaky a často by mohl být text „vložen“ do vyhrazeného prostoru nulových znaků tak, že nové znaky děrujete na pásku přes nuly.

Dnes má znak mnohem větší význam v jazyce C a jeho derivátech a v mnoha datových formátech, kde slouží jako vyhrazený znak používaný k označení konce řetězce , často nazývaného řetězec zakončený nulou . To umožňuje, aby řetězec měl libovolnou délku pouze s režií jednoho bajtu; alternativa ukládání počtu vyžaduje buď omezení délky řetězce na 255, nebo režii více než jeden bajt (v článku řetězce s nulovým zakončením jsou popsány další výhody/nevýhody ).

Reprezentace

Nulový znak je často reprezentován jako úniková sekvence \0 ve zdrojovém kódu , řetězcových literálech nebo znakových konstantách. V mnoha jazycích ( například C , který zavedl tento zápis) nejde o samostatnou únikovou sekvenci, ale o osmičkovou únikovou sekvenci s jedinou osmičkovou číslicí 0; v důsledku toho \0nesmí být následováno libovolným z číslic 0prostřednictvím 7; jinak je interpretován jako začátek delší osmičkové únikové sekvence. Jiné únikové sekvence, které se nacházejí v použití v různých jazycích jsou \000, \x00, \znebo \u0000. Do adresy URL s procentuálním kódem lze vložit nulový znak %00.

Schopnost reprezentovat znak null nemusí vždy znamenat, že výsledný řetězec bude správně interpretován, protože mnoho programů bude považovat hodnotu null za konec řetězce. Možnost jej zadat (v případě nekontrolovaného vstupu uživatele ) tedy vytváří zranitelnost známou jako nulová bajtová injekce a může vést k zneužití zabezpečení.

V zápisu stříšky je nulový znak ^@. Na některých klávesnicích lze zadat nulový znak podržením Ctrla stisknutím @(na rozložení v USA bude často fungovat pouze Ctrl+ 2, ⇧ Shiftznak @ není potřeba ).

V dokumentaci je znak null někdy reprezentován jako symbol šířky jedné emise obsahující písmena „NUL“. V Unicode existuje znak s odpovídajícím glyfem pro vizuální znázornění znaku null, „symbol pro null“, U+2400 (␀) - nelze zaměňovat se skutečným znakem null, U+0000.

Kódování

Ve všech moderních znakových sadách má nulový znak hodnotu bodu kódu nula. Ve většině kódování je to přeloženo do jediné kódové jednotky s nulovou hodnotou. Například v UTF-8 je to jeden nulový bajt. V modifikovaném UTF-8 je však znak null zakódován jako dva bajty: 0xC0, 0x80. To umožňuje bajt s hodnotou nula, který se nyní nepoužívá pro žádný znak, použít jako ukončovač řetězců.

Problémy

Někteří lidé, jejichž jméno je Null, mají problémy s počítačovými systémy.

Reference

externí odkazy

  • Null Byte Injection WASC Threat Classification Null Byte Attack section
  • Poison Null Byte Úvod Úvod do Nullify 9
  • Byte Attack