stringtranslate.com

Canonicalización

En informática , la canonicalización (a veces estandarización o normalización ) es un proceso para convertir datos que tienen más de una representación posible a una forma "estándar", "normal" o canónica . Esto se puede hacer para comparar diferentes representaciones en busca de equivalencia, contar el número de estructuras de datos distintas, mejorar la eficiencia de varios algoritmos eliminando cálculos repetidos o hacer posible imponer un orden de clasificación significativo .

Casos de uso

Nombres de archivos

En la mayoría de los casos, se puede acceder a los archivos de los sistemas de archivos a través de varios nombres de archivo . Por ejemplo, en sistemas tipo Unix/./ , la cadena " " se puede reemplazar por " /". En la biblioteca estándar C , la función realpath()realiza esta tarea. Otras operaciones realizadas por esta función para canonicalizar nombres de archivos son el manejo de /..componentes que hacen referencia a directorios principales, la simplificación de secuencias de barras múltiples, la eliminación de barras diagonales finales y la resolución de enlaces simbólicos .

La canonicalización de nombres de archivos es importante para la seguridad informática. Por ejemplo, un servidor web puede tener la restricción de que solo se C:\inetpub\wwwroot\cgi-binpuedan ejecutar archivos en el directorio cgi. Esta regla se aplica verificando que la ruta comience con C:\inetpub\wwwroot\cgi-bin\y solo luego ejecutándola. Si bien inicialmente el archivo C:\inetpub\wwwroot\cgi-bin\..\..\..\Windows\System32\cmd.exeparece estar en el directorio cgi, aprovecha el ..especificador de ruta para recorrer la jerarquía del directorio en un intento de ejecutar un archivo fuera de cgi-bin. Permitir cmd.exela ejecución sería un error causado por no canonicalizar el nombre del archivo a la representación más simple, C:\Windows\System32\cmd.exey se denomina vulnerabilidad de cruce de directorio . Con la ruta canonicalizada, queda claro que el archivo no debe ejecutarse.

Unicódigo

En Unicode , muchas letras acentuadas se pueden representar de más de una forma. Por ejemplo, é se puede representar en Unicode como el carácter Unicode U+0065 (LETRA E MINÚSCULA LATINA) seguido del carácter U+0301 (ACENTO AGUDO COMBINADO), pero también se puede representar como el carácter precompuesto U+00E9 (ACENTO AGUDO). LETRA E MINÚSCULA CON AGUDO). Esto hace que la comparación de cadenas sea más complicada, ya que se deben considerar todas las representaciones posibles de una cadena que contenga dichos glifos. Para solucionar esto, Unicode proporciona el mecanismo de equivalencia canónica . En este contexto, la canonicalización es la normalización Unicode .

Las codificaciones de ancho variable en el estándar Unicode, en particular UTF-8 , pueden generar una necesidad adicional de canonicalización en algunas situaciones. Es decir, según el estándar, en UTF-8 sólo hay una secuencia de bytes válida para cualquier carácter Unicode, [1] pero algunas secuencias de bytes no son válidas, es decir, no se pueden obtener codificando ninguna cadena de caracteres Unicode en UTF-8. Algunas implementaciones de decodificadores descuidadas pueden aceptar secuencias de bytes no válidas como entrada y producir un carácter Unicode válido como salida para dicha secuencia. Si se utiliza un decodificador de este tipo, algunos caracteres Unicode tienen efectivamente más de una secuencia de bytes correspondiente: la válida y algunas no válidas. Esto podría provocar problemas de seguridad similares al descrito en la sección anterior. Por lo tanto, si uno quiere aplicar algún filtro (por ejemplo, una expresión regular escrita en UTF-8) a cadenas UTF-8 que luego se pasarán a un decodificador que permite secuencias de bytes no válidas, se deben canonicalizar las cadenas antes de pasarlas al filtro. . En este contexto, la canonicalización es el proceso de traducir cada carácter de cadena a su única secuencia de bytes válida. Una alternativa a la canonicalización es rechazar cualquier cadena que contenga secuencias de bytes no válidas.

URL

Una URL canónica es una URL para definir la única fuente de verdad para contenido duplicado .

Uso por Google

Una URL canónica es la URL de la página que Google considera más representativa de un conjunto de páginas duplicadas de su sitio. Por ejemplo, si tiene URL para la misma página (por ejemplo https://example.com/?dress=1234y https://example.com/dresses/1234), Google elige una como canónica. Tenga en cuenta que no es necesario que las páginas sean absolutamente idénticas; Los cambios menores en la clasificación o filtrado de las páginas de la lista no hacen que la página sea única (por ejemplo, ordenar por precio o filtrar por color de artículo).

El canónico puede estar en un dominio diferente al duplicado. [2]

Internet

Con la ayuda de las URL canónicas, un motor de búsqueda sabe qué enlace debe proporcionarse en el resultado de una consulta.

Se puede utilizar un elemento de enlace canónico para definir una URL canónica.

Intranet

En las intranets predomina la búsqueda manual de información. En este caso, las URL canónicas también se pueden definir en un formato no legible por máquina. Por ejemplo en una directriz .

Varios

Las URL canónicas suelen ser las URL que se utilizan para la acción de compartir.

Dado que la URL canónica se utiliza en los resultados de búsqueda de los motores de búsqueda, en la mayoría de los casos es una página de destino .

Motores de búsqueda y SEO

En la búsqueda web y la optimización de motores de búsqueda (SEO), la canonicalización de URL se ocupa del contenido web que tiene más de una URL posible. Tener varias URL para el mismo contenido web puede causar problemas a los motores de búsqueda, específicamente a la hora de determinar qué URL debe mostrarse en los resultados de búsqueda. [3] La mayoría de los motores de búsqueda admiten el elemento de enlace canónico como una pista sobre qué URL debe tratarse como la versión verdadera. Como indicó John Mueller de Google, tener otras directivas en una página, como el elemento noindex de robots , puede dar a los motores de búsqueda señales contradictorias sobre cómo manejar la canonicalización [4].

Ejemplo:

Todas estas URL apuntan a la página de inicio de Wikipedia, pero un motor de búsqueda sólo considerará una de ellas como la forma canónica de la URL.

XML

Un documento XML canónico es, por definición, un documento XML que está en formato XML canónico, definido por la especificación Canonical XML. Brevemente, la canonicalización elimina los espacios en blanco dentro de las etiquetas, utiliza codificaciones de caracteres particulares, ordena las referencias de espacios de nombres y elimina las redundantes, elimina las declaraciones XML y DOCTYPE y transforma los URI relativos en URI absolutos.

Un ejemplo sencillo serían los siguientes dos fragmentos de XML:

  1. <node1 x='1' a="1" a="2">Data</node1    > <node2>Data</node2>
  2. <node1 a="2" x="1">Data</node1> <node2>Data</node2>

El primer ejemplo contiene espacios adicionales en la etiqueta de cierre del primer nodo. Al segundo ejemplo, que ha sido canonizado, se le han eliminado estos espacios. Tenga en cuenta que solo los espacios dentro de las etiquetas se eliminan bajo la canonicalización del W3C, no los que están entre las etiquetas.

A continuación se incluye un resumen completo de los cambios de canonicalización:

Ligüística computacional

En morfología y lexicografía , un lema es la forma canónica de un conjunto de palabras . En inglés , por ejemplo, ejecutar , ejecutar , ejecutar y ejecutar son formas del mismo lexema , por lo que podemos seleccionar una de ellas; ex. run , para representar todas las formas. Las bases de datos léxicas como Unitex utilizan este tipo de representación.

La lematización es el proceso de convertir una palabra a su forma canónica .

Ver también

Referencias

  1. ^ RFC 2279: UTF-8, un formato de transformación de ISO 10646
  2. ^ "Consolidar URL duplicadas con Canonicals | Central de búsqueda de Google".
  3. ^ Cutts, Matt (4 de enero de 2006). "Consejos SEO: canonicalización de URL". Matt Cutts: gadgets, Google y SEO . Consultado el 3 de septiembre de 2013 .
  4. ^ "La URL canonicalizada es noindex, nofollow" . Consultado el 20 de abril de 2020 .

enlaces externos