Pergunta

Eu procurei no google para um significado de representação canônica e virou-se documentos que são inteiramente muito enigmática. Alguém pode fornecer uma explicação rápida de representação canônica e também quais são algumas vulnerabilidades típicas em sites para ataques representação canônica?

Foi útil?

Solução

canonicalisation é o processo pelo qual você toma uma entrada, como um nome de arquivo, ou uma corda, e transformá-lo em uma representação padrão.

Por exemplo, se sua aplicação web só permite o acesso a arquivos em C: \ websites \ mydomain em seguida, normalmente qualquer entrada referindo-se a nomes de arquivos é canonicalised a ser, um caminho físico direto, ao invés de um que usa caminhos relativos. Se você queria abrir C: \ websites \ mydomain \ Example \ example.txt uma entrada para essa função pode ser exemplo \ example.txt. É difícil descobrir se este vai para fora dos limites do seu web site, então a função canonicalisation iria olhar para o diretório e mudança aplicação que caminho relativo para um físico, C: \ websites \ mydomain \ exemplo \ example.txt. Esta é, obviamente, mais fácil de verificar como você simplesmente fazer uma String de comparação sobre o início do caminho do arquivo.

Para HTML entradas você tomar entradas como% 20 e canonicalise-los por unencoding, de modo que este se transformaria em um espaço. Esta é uma boa idéia de como o número de diferentes formas de codificação são numerosos, meios canonicalisation você verifique a string decodificada somente, em vez de tentar cobrir todas as variações de codificação.

Basicamente você está tomando de entrada que é logicamente equivalente e convertê-los em um formulário padrão que você pode então agir.

Outras dicas

A seguinte explicação é do "STIG Application Security e Desenvolvimento" encontrado aqui :

3.11 Canonical Representação surgem problemas representação canônica quando o nome de um recurso é usado para controlar o acesso de recursos. tem vários métodos de representar nomes de recursos em um sistema de computador. Uma aplicação depender exclusivamente de um nome do recurso para controle de acesso pode incorretamente fazer um controle de acesso decisão se o nome é especificado em um formato não reconhecido.

Por exemplo, no Windows, notepad.exe pode ser representado pela seguinte arquivo e combinações de nome de caminho:

C: \ Windows \ System32 \ notepad.exe

% SystemRoot% \ System32 \ notepad.exe

\ \ C: \ Windows \ System32 \ notepad.exe

\ Host \ c $ \ Windows \ system32 \ notepad.exe

Um aplicativo que tenta restringir acesso ao arquivo com base unicamente no caminho do arquivo eo nome pode indevidamente conceder ou negar acesso. O mesmo problema pode aplicar-se a outros recursos nomeados em um sistema, tal como um equipamento e de soft-links, URL, tubulação, ação, diretório, nome do dispositivo, ou dentro de dados ficheiros, se a codificação alternativo mecanismos são usados ??com os dados.

A seguintes itens podem indicar potencial questões de representação canônicos em um aplicativo:

• O controle de acesso decisões com base em um nome de recurso.

• A falha em reduzir um nome de recurso para sua forma canônica antes do uso.

Em fim de minimizar canónica questões de representação no aplicação, implementar a seguinte procedimentos:

• Não confie apenas em nomes de recursos para controle de acesso.

• Se usando nomes de recursos para controlar acesso, validar os nomes para garantir eles estão no formato adequado; rejeitar todos os nomes não cabendo o em boas condições critério.

• Use com base sistema operacional mecanismos de controlo de acesso, tal como permissões e ACLs.

meios canonicalisation reduzindo os dados recebidos para sua forma mais simples, ele é usado para validação de entrada.

Canonical (eu acho) significa que a entrada do console é "comportamento típico". Não-canônicos significa que a entrada é não-padrão e requer conhecimentos especiais, tais como o comportamento de entrada de "vi" no Linux.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top