Caráter nulo - Null character

O caractere nulo (também terminador nulo ) é um caractere de controle com valor zero. Ele está presente em muitos conjuntos de caracteres , incluindo aqueles definidos pelos códigos Baudot e ITA2 , ISO / IEC 646 (ou ASCII ), o código de controle C0 , o Conjunto de caracteres codificados universal (ou Unicode ) e EBCDIC . Ele está disponível em quase todas as linguagens de programação convencionais . Geralmente é abreviado como NUL (ou NULL, embora em alguns contextos esse termo seja usado para o ponteiro nulo , um objeto diferente). Em códigos de 8 bits, é conhecido como byte nulo .

O significado original desse caractere era como NOP - quando enviado a uma impressora ou terminal , ele não faz nada (alguns terminais, no entanto, exibem-no incorretamente como espaço ). Quando as teleimpressoras eletromecânicas eram usadas como dispositivos de saída de computador, um ou mais caracteres nulos eram enviados no final de cada linha impressa para permitir que o mecanismo retornasse à primeira posição de impressão na próxima linha. Na fita perfurada , o caractere é representado sem nenhum orifício, portanto, uma nova fita não perfurada é inicialmente preenchida com caracteres nulos e, muitas vezes, o texto pode ser "inserido" em um espaço reservado de caracteres nulos perfurando os novos caracteres na fita os nulos.

Hoje, o caractere tem muito mais significado em C e seus derivados e em muitos formatos de dados, onde serve como um caractere reservado usado para significar o final de uma string , geralmente chamado de string terminada em nulo . Isso permite que a string tenha qualquer comprimento com apenas a sobrecarga de um byte; a alternativa de armazenar uma contagem requer um limite de comprimento de string de 255 ou uma sobrecarga de mais de um byte (há outras vantagens / desvantagens descritas no artigo de string terminado em nulo ).

Representação

O caractere nulo é frequentemente representado como a sequência de escape \0 no código-fonte , literais de string ou constantes de caractere. Em muitas linguagens ( como C , que introduziu essa notação), esta não é uma seqüência de escape separada, mas uma seqüência de escape octal com um único dígito octal 0; como consequência, \0não deve ser seguido por nenhum dos dígitos 0até 7; caso contrário, é interpretado como o início de uma sequência de escape octal mais longa. Outras sequências de escape que são encontrados em uso em várias línguas são \000, \x00, \z, ou \u0000. Um caractere nulo pode ser colocado em um URL com o código de porcentagem %00 .

A capacidade de representar um caractere nulo nem sempre significa que a string resultante será interpretada corretamente, pois muitos programas consideram o nulo como o final da string. Portanto, a capacidade de digitá-lo (no caso de entrada não verificada do usuário ) cria uma vulnerabilidade conhecida como injeção de bytes nulos e pode levar a explorações de segurança.

Na notação circunflexa, o caractere nulo é ^@. Em alguns teclados, pode-se inserir um caractere nulo mantendo pressionado Ctrle pressionando @(em layouts dos EUA, apenas Ctrl+ 2funcionará com frequência, não há necessidade de ⇧ Shiftobter o sinal @).

Na documentação, o caractere nulo às vezes é representado como um símbolo de largura em um único contendo as letras "NUL". Em Unicode , há um caractere com um glifo correspondente para representação visual do caractere nulo, "símbolo para nulo", U + 2400 (␀) - não deve ser confundido com o caractere nulo real, U + 0000.

Codificação

Em todos os conjuntos de caracteres modernos, o caractere nulo tem um valor de ponto de código igual a zero. Na maioria das codificações, isso é traduzido em uma única unidade de código com valor zero. Por exemplo, em UTF-8 é um único byte zero. No entanto, em UTF-8 modificado, o caractere nulo é codificado como dois bytes: 0xC0, 0x80. Isso permite que o byte com o valor zero, que agora não é usado para nenhum caractere, seja usado como um terminador de string.

Problemas

Algumas pessoas cujo nome é Null tiveram problemas com sistemas de computador.

Referências

links externos

  • Injeção de Byte Nulo Seção de Ataque de Byte Nulo Classificação WASC
  • Introdução ao Poison Null Byte Introdução ao Nullify 9
  • Ataque de Byte