¿Qué significa representación canónica y su potencial vulnerabilidad a los sitios web
-
19-09-2019 - |
Pregunta
He buscado en Google para un sentido de la representación canónica y subió los documentos que son totalmente demasiado críptica. ¿Alguien puede proporcionar una explicación rápida de la representación canónica y también lo son algunas vulnerabilidades típicas en los sitios web a los ataques representación canónica?
Solución
Canonicalisation es el proceso mediante el cual se toma una entrada, como por ejemplo un nombre de archivo o una cadena, y convertirla en una representación estándar.
Por ejemplo, si su aplicación web sólo permite el acceso a los archivos en C: \ webs \ midominio entonces típicamente cualquier entrada en referencia a los nombres de archivo se canonicalised ser una ruta física, directa, en lugar de uno que utiliza rutas relativas. Si quisieras abrir C: \ webs \ dominio \ ejemplo \ example.txt una entrada en función de que pueden ser ejemplo \ example.txt. Es difícil averiguar si esto se sale de los límites de su sitio web, por lo que la función de canonicalisation se vería en el directorio de la aplicación y cambiar el camino relativo a una física, C: \ webs \ dominio \ ejemplo \ example.txt. Esto es obviamente más fácil comprobar que sólo tiene que hacer una comparación de cadenas en el inicio de la ruta del archivo.
Para las entradas HTML se toma como entradas y 20% canonicalise les unencoding, por lo que esto se convertiría en un espacio. Esta es una buena idea ya que el número de diferentes formas de codificación son numerosos, canonicalisation significa que comprobaría la cadena descodificada solamente, en lugar de tratar de cubrir todas las variaciones de codificación.
Básicamente, usted está tomando de entrada que es lógicamente equivalente y convirtiéndolos a un formato estándar que luego se puede actuar.
Otros consejos
La siguiente explicación es de la "seguridad de las aplicaciones y Desarrollo STIG" que se encuentra aquí :
3,11 representación canónica surgen problemas de representación canónica cuando el nombre de un recurso se utiliza para control de acceso a los recursos. Existen múltiples métodos de representación de nombres de recursos en un sistema informático. Una aplicación confiar únicamente en una nombre de recurso para controlar el acceso de mayo incorrectamente realizar un control de acceso decisión si se especifica el nombre de un formato no reconocido.
Por ejemplo, en Windows, puede ser notepad.exe representado por la siguiente archivo y nombre de la ruta combinaciones:
C: \ Windows \ System32 \ notepad.exe
% SystemRoot% \ System32 \ notepad.exe
\ \ C: \ Windows \ System32 \ notepad.exe
\ Host \ c $ \ Windows \ system32 \ notepad.exe
Una aplicación que intenta restringir el acceso al archivo basado únicamente en el presentar ruta y el nombre de manera inadecuada puede conceder o denegar el acceso. El mismo problema puede aplicarse a otros recursos con nombre de un sistema, tal como un hardware y soft-enlaces, URL, tubería, compartir directorio, nombre del dispositivo, o dentro de los datos archivos, si la codificación alternativo mecanismos se utilizan con los datos.
La siguientes elementos pueden indicar el potencial cuestiones representación canónica en una aplicación:
• El control de acceso decisiones sobre la base de un nombre de recurso.
• Si no se reduce a un nombre de recurso su forma canónica antes de su uso.
En Para reducir al mínimo canónica cuestiones de representación en el aplicación, aplicar el siguiente procedimientos:
• No confiar únicamente en nombres de recursos para controlar el acceso.
• Si el uso de nombres de recursos para controlar acceso, validar los nombres de asegurar que están en el formato adecuado; rechazar todos los nombres de no ajustarse al bien conocido criterios.
• Uso operativo basado en el sistema mecanismos de control de acceso, tales como permisos y ACL.
Canonicalisation significa reducir los datos recibidos a su forma más simple, se utiliza para la validación de entrada.
Canonical (creo) significa que la consola de entrada es "comportamiento típico". No canónica significa que la entrada no es estándar y no requiere conocimientos especiales, tales como el comportamiento de entrada de "vi" en Linux.