Problema
¿Cómo podemos evitar la transformación maliciosa de nuestras URL y la descarga de imágenes de alta resolución?
Solución
Si le preocupa la manipulación de URL o la descarga de imágenes de alta resolución, haga lo siguiente:
Configuración del conjunto de reglas para alterar la sintaxis de la URL
Utilice un conjunto de reglas configurado en el servidor para modificar la sintaxis de las URL de los clientes. Las URL pueden usar un formato que es menos obvio como una solicitud dinámica con parámetros que pueden ser cambiados.
Esencialmente, si se puede cambiar una llamada de imagen desde la sintaxis típica del Servidor de imagen de Scene7 que tiene este aspecto:
http:///is/image//?
a algo que parece más estático:
http:///is/image///.jpg
Es menos obvio que hay parámetros que pueden ser modificados en la solicitud de URL para cambiar la respuesta. De hecho, debería ser posible configurar un conjunto de reglas para que cualquier solicitud que no pase por este formato o mecanismo sea rechazada.
Ofuscación de URL
El contenido de toda la parte modificadora de la cadena de solicitud, incluyendo el sufijo de bloqueo opcional, puede oscurecerse aplicando la codificación base64 estándar. El servidor intenta decodificar si el attribute::RequestObfuscation está activado. Si la decodificación da error, la solicitud se rechaza. Si se aplican tanto el bloqueo de solicitud como la ofuscación de solicitud, el sufijo de bloqueo debe generarse y añadirse antes de la codificación base64.
Ejemplo http://server/myTemplate?$txt=my text string&$img=myImage
codifica a:
http://server/myTemplate?dHh0PW15IHRleHQgc3RyaW5nJiRpbWc9bXlJbWFnZQ==
Para generar esta codificación, puede utilizar un sitio web como el siguiente: http://www.base64encode.org/
Cualquier ocurrencia de '=', '&', y '%' en las cadenas de valor debe ser evitada usando la codificación '%xx', antes de que la petición sea ofuscada. De lo contrario, no es necesario codificar con HTTP la parte de la solicitud de los modificadores antes o después de la ofuscación, incluso si se aplica el bloqueo de solicitud, ya que la codificación base64 es segura para la transmisión http.
http://microsite.omniture.com/t2/help/en_US/s7/is_ir_api/index.html#Request_Obfuscation
III. Bloqueo de solicitudes
Para reducir la posibilidad de manipular las solicitudes, se proporciona una sencilla facilidad de bloqueo.
Si se establece el attribute::RequestLock, se debe añadir un valor de bloqueo a la solicitud, en forma de &xxxx, siendo xxxx un valor hexadecimal de cuatro dígitos. Este valor hexadecimal se genera utilizando un algoritmo de aglomeración simple aplicado a la parte de los modificadores de la solicitud (después del símbolo '?' que separa la ruta URL de los modificadores). Esto debe hacerse después de que la solicitud esté completamente codificada en HTTP, pero antes de que sea (opcionalmente) ofuscada. Después de la desobturación de la solicitud, el servidor utilizará el mismo algoritmo de aglomeración en la cadena del modificador (excluidos los últimos 5 caracteres, que contienen el valor de bloqueo). Si la clave generada no coincide con el bloqueo, la solicitud se rechaza.
http://microsite.omniture.com/t2/help/en_US/s7/is_ir_api/index.html#Request_Locking