Função binary-safe

Uma função binary-safe é uma função ou operação que pode ser executada num ficheiro binário sem modificar o conteúdo do ficheiro. Isto assegura que o arquivo não seja corrompido ou mutilado pela função ou operação.

Dados binários são codificados como uma seqüência de uns e zeros (bits), mas não são formatados de nenhuma forma em particular. Os bits estão simplesmente lá, e nenhum significado está ligado a eles. A maioria dos programas, em contraste, tem códigos de formatação que atribuem certos significados a strings específicas de bits. Quando um programa é usado numa tentativa de ler um arquivo binário, o arquivo é interpretado de acordo com as regras desse programa. A menos que os códigos de formatação do programa de leitura correspondam aos códigos de formatação do programa em que o ficheiro foi escrito, a exibição não faz sentido, ou então contém uma confusão de símbolos aparentemente sem significado, além dos dados que foram despojados dos códigos de formatação.

Uma imagem como um ficheiro JPEG pode ser aberta num processador de texto, mas a imagem não aparece. Em vez disso, o lixo é exibido. Qualquer tentativa de editar e depois salvar um arquivo JPEG usando um processador de texto resultará na modificação dos dados binários, de modo que o resultado não seja mais legível pelo programa pretendido. O arquivo está, na verdade, corrompido. A edição de um arquivo de imagem JPEG usando um processador de texto é assim um exemplo de uma função que não é binary-safe.

Issues com segurança binária são frequentemente encontrados quando arquivos binários são transferidos através da Internet. Isto é especialmente verdade para arquivos grandes, o que pode causar transbordamento da memória, buffer, ou capacidade de armazenamento em um ou mais servidores. Por vezes, os ficheiros transferidos estão sujeitos a funções que retiram códigos de formatação, ou que interpretam incorrectamente certas cadeias binárias como códigos de formatação. Por exemplo, parênteses angulares podem ser falsamente interpretados como marcadores para tags HTML, ou tags desejadas podem ser perdidas na transferência de um arquivo HTML. As aspas em formato texto simples ou ASCII podem não ser lidas dessa forma por um navegador da Web. Um editor de HTML converterá aspas (") em uma cadeia de caracteres para evitar essa confusão. Um espaço extra ( ) em uma página Web aparece como uma cadeia de caracteres quando o código fonte HTML é visualizado em um editor de texto como o Bloco de Notas do Windows. Inversamente, tais cadeias de caracteres são interpretadas pelos navegadores Web como aspas e espaços, mesmo que o autor do arquivo não tenha a intenção de interpretá-los dessa forma.

Arquivos binários podem ser protegidos contra modificações indesejadas por programas. No pior dos casos, tal modificação pode resultar em perda permanente de dados devido à corrupção do arquivo. Arquivos sensíveis devem sempre ser copiados em mídia somente leitura  como um disco compacto gravável (CD-R), para que os dados originais possam ser recuperados no caso de modificações indesejadas por uma função que não seja binary-safe. Ao transferir arquivos binários para um website usando um programa de Protocolo de Transferência de Arquivos (FTP), a configuração "binário" pode ser usada para evitar modificação indesejada do conteúdo do arquivo durante o processo de transferência.