stringtranslate.com

Normalización de URI

Tipos de normalización de URI.

La normalización de URI es el proceso mediante el cual se modifican y estandarizan los URI de manera consistente. El objetivo del proceso de normalización es transformar un URI en un URI normalizado de modo que sea posible determinar si dos URI sintácticamente diferentes pueden ser equivalentes.

Los motores de búsqueda emplean la normalización de URI para clasificar correctamente las páginas que se pueden encontrar con múltiples URI y para reducir la indexación de páginas duplicadas. Los rastreadores web realizan la normalización de URI para evitar rastrear el mismo recurso más de una vez. Los navegadores web pueden realizar la normalización para determinar si se ha visitado un enlace o para determinar si una página se ha almacenado en caché . Los servidores web también pueden realizar la normalización por muchas razones (es decir, para poder interceptar más fácilmente los riesgos de seguridad que provienen de las solicitudes de los clientes, para usar solo un nombre de archivo absoluto para cada recurso almacenado en sus cachés, nombrado en archivos de registro, etc.).

Proceso de normalización

Existen varios tipos de normalización que se pueden realizar. Algunos de ellos siempre preservan la semántica y otros no.

Normalizaciones que preservan la semántica

Las siguientes normalizaciones se describen en RFC 3986 [1] para dar como resultado URI equivalentes:

http://example.com/foo%2ahttp://example.com/foo%2A
HTTP://[email protected]/Foohttp://[email protected]/Foo
http://example.com/%7Efoohttp://example.com/~foo
http://example.com/foo/./bar/baz/../quxhttp://example.com/foo/bar/qux
http://example.comhttp://example.com/
http://example.com:80/http://example.com/

Normalizaciones que generalmente preservan la semántica

Para las URI http y https, las siguientes normalizaciones enumeradas en RFC 3986 pueden dar como resultado URI equivalentes, pero los estándares no lo garantizan:

http://example.com/foohttp://example.com/foo/
Sin embargo, no hay forma de saber si un componente de ruta URI representa un directorio o no. El RFC 3986 señala que si el URI anterior redirecciona al URI posterior, eso es una indicación de que son equivalentes.

Normalizaciones que cambian la semántica

La aplicación de las siguientes normalizaciones da como resultado un URI semánticamente diferente aunque pueda referirse al mismo recurso:

http://example.com/a/index.htmlhttp://example.com/a/
http://example.com/default.asphttp://example.com/
http://example.com/bar.html#section1http://example.com/bar.html
Sin embargo, las aplicaciones AJAX utilizan con frecuencia el valor en el fragmento.
http://208.77.188.166/http://example.com/
El reemplazo inverso rara vez es seguro debido a los servidores web virtuales .
https://example.com/http://example.com/
http://example.com/foo//bar.htmlhttp://example.com/foo/bar.html
http://www.example.com/http://example.com/
http://example.com/display?lang=en&article=fredhttp://example.com/display?article=fred&lang=en
Sin embargo, el orden de los parámetros en una URI puede ser significativo (esto no está definido por el estándar) y un servidor web puede permitir que la misma variable aparezca varias veces. [9]
http://example.com/display?id=123&fakefoo=fakebarhttp://example.com/display?id=123
Tenga en cuenta que un parámetro sin un valor no es necesariamente un parámetro no utilizado.
http://example.com/display?id=&sort=ascendinghttp://example.com/display
http://example.com/display?http://example.com/display

Normalización basada en listas de URI

Se pueden desarrollar algunas reglas de normalización para sitios web específicos examinando listas de URL obtenidas de rastreos anteriores o registros de servidores web. Por ejemplo, si la URL

http://example.com/story?id=xyz

aparece en un registro de rastreo varias veces junto con

http://example.com/story_xyz

Podemos suponer que las dos URI son equivalentes y pueden normalizarse a una de las formas de URI.

Schonfeld et al. (2006) presentan una heurística denominada DustBuster para detectar reglas DUST (URI diferentes con texto similar) que se pueden aplicar a listas de URI. Demostraron que una vez que se encontraron las reglas DUST correctas y se aplicaron con un algoritmo de normalización, pudieron encontrar hasta el 68% de las URI redundantes en una lista de URI.

Véase también

Referencias

  1. ^ RFC 3986, Sección 6. Normalización y comparación
  2. ^ RFC 3986, Sección 6.2.2.1. Normalización de mayúsculas y minúsculas
  3. ^ RFC 3986, Sección 6.2.2.1. Normalización de mayúsculas y minúsculas
  4. ^ RFC 3986, Sección 6.2.2.3. Normalización de segmentos de ruta
  5. ^ RFC 3986, 5.2.4. Eliminar segmentos de puntos
  6. ^ RFC 3986, 6.2.2.3. Normalización de segmentos de ruta
  7. ^ RFC 3986, Sección 6.2.3. Normalización basada en esquemas
  8. ^ RFC 3986, Sección 6.2.3. Normalización basada en esquemas
  9. ^ "jQuery 1.4 $.param desmitificado". Ben Alman. 20 de diciembre de 2009. Consultado el 24 de agosto de 2013 .