2009-07-22 10 views

Respuesta

8

Canonicalización es el proceso mediante el cual se toma una entrada, como un nombre de archivo o una cadena, y se convierte en una representación estándar.

Por ejemplo, si su aplicación web solo permite el acceso a archivos en C: \ sites \ mydomain, normalmente cualquier entrada que haga referencia a nombres de archivos se canonicaliza como una ruta física directa, en lugar de una que usa rutas relativas. Si desea abrir C: \ sites \ mydomain \ example \ example.txt, una entrada en esa función puede ser example \ example.txt. Es difícil determinar si esto va más allá de los límites de su sitio web, por lo que la función de canonización mirará el directorio de la aplicación y cambiará esa ruta relativa en una ruta física, C: \ sites \ mydomain \ example \ example.txt. Obviamente, es más fácil de verificar ya que simplemente hace una comparación de cadenas al comienzo de la ruta del archivo.

Para entradas HTML, toma entradas como% 20 y las canonicaliza mediante la descodificación, por lo que esto se convertiría en un espacio. Esta es una buena idea, ya que la cantidad de formas diferentes de codificación es numerosa, la canonización significa que solo verificará la cadena descodificada, en lugar de tratar de cubrir todas las variaciones de codificación.

Básicamente está tomando una entrada que es lógicamente equivalente y las convierte a un formulario estándar sobre el que puede actuar.

+0

potencialmente en un campo de entrada podría intentar y hacer un ataque de inyección sql o XSS posible para eludir la sanitización de cadena normal? – predhme

+1

El saneamiento es diferente. En general, un ataque de inyección SQL no va a usar codificación, por lo que no es un problema de canonización. XSS puede ser, depende de lo que hagas. Si está codificando toda la entrada antes de enviarla, entonces no, no lo está. Sin embargo, si intenta hacer una lista blanca, o peor aún una lista negra de ciertas partes de una cadena, primero canonicalizar la cadena primero porque, por ejemplo,

-4

Canonical (creo) significa que la entrada de la consola es "comportamiento típico". No canónico significa que la entrada no es estándar y requiere un conocimiento especial, como el comportamiento de entrada de "vi" en Linux.

+0

Pero, ¿cómo se aplica eso a los sitios web y ser vulnerable? – predhme

+0

Consulte la respuesta de blowdart para obtener una definición de canonical –

+0

Mi respuesta no entra en conflicto en absoluto con la respuesta de Blowdarts, excepto que podría explicarlo en una oración. Para los programadores, la eficiencia es la clave. – djangofan

3

La siguiente explicación es de la "seguridad de las aplicaciones y Desarrollo STIG" encontrado here:

3,11 representación canónica surgen problemas representación canónica cuando el nombre de un recurso se utiliza para el acceso a recursos control. Hay métodos múltiples de representar nombres de recursos en un sistema informático. Una aplicación que se basa únicamente en un nombre de recurso para controlar el acceso puede tomar una decisión de control de acceso incorrectamente si el nombre se especifica en un formato no reconocido.

Por ejemplo, en Windows, notepad.exe puede representado por la siguiente archivo y combinaciones de nombre de ruta:

C: \ Windows \ System32 \ notepad.exe

% SystemRoot% \ notepad.exe system32 \

\ \ C: \ Windows \ system32 \ notepad.exe

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

Una aplicación que intente restringir el acceso al archivo basado únicamente en la ruta y el nombre del archivo puede otorgar o denegar el acceso incorrectamente .El mismo problema se aplique a otros recursos nombrados en un sistema, tales como hardware y soft-enlaces, URL, tuberías, acción, directorio, nombre del dispositivo, o dentro de los datos archivos, si la codificación alternativo mecanismos son usado con los datos.

Los siguientes artículos pueden indicar posibles problemas representación canónica en una aplicación :

• Control de acceso decisiones basadas en un nombre de recurso.

• No se redujo el nombre de un recurso a su forma canónica antes de su uso.

En fin de minimizar canónicas cuestiones de representación en la aplicación , poner en práctica los procedimientos siguientes:

• No se base únicamente en nombres de recursos para controlar el acceso.

• Si usa nombres de recursos para controlar el acceso , valide los nombres para asegurar que estén en el formato correcto; rechazar todos los nombres no se ajustan a los criterios de conocidos.

• Utilice mecanismos de control de acceso basados ​​en el sistema operativo como permisos y ACL.

0

Canonicalización significa reducir los datos recibidos a su forma más simple, se utiliza para la validación de entrada.

Cuestiones relacionadas