Resumen
- RFC 5147 define fragmentos para posiciones y rangos de líneas o caracteres en entidades MIME
text/plain. - El cliente interpreta el fragmento después de recuperar la representación; el servidor no lo usa para resolver el recurso.
- Una posición empieza en cero y marca un límite de longitud nula, no el texto de una cláusula.
- Los caracteres se cuentan tras decodificar y no coinciden necesariamente con bytes ni con grafemas visibles.
- Cada final de línea reconocido cuenta como un carácter aunque se represente con CRLF, LF, CR u otra convención.
- Una posición que excede la longitud se ajusta al final, por lo que el procesamiento puede “funcionar” sin hallar el pasaje.
- Una sintaxis inválida o un rango invertido se ignoran; el cliente no debe adivinar una reparación.
lengthymd5son controles opcionales sobre la entidad MIME una vez retiradas las codificaciones de transporte.- Los clientes pueden ignorar esos controles y un cambio de charset puede inutilizarlos o volver dudosa la transcodificación.
- MD5 no aporta firma, identidad del editor ni resistencia moderna a colisiones, aunque detecte cambios accidentales.
- Mostrar solo el fragmento puede ocultar reservas, contexto o el dominio de seguridad y facilitar una lectura engañosa.
- Una prueba decisoria necesita revisión inmutable, bytes, decodificación, contexto, procedencia y autorización independientes.
El error no rompió nada
La automatización esperaba una señal binaria. Si el documento respondía y el visor encontraba la línea, el control se marcaba como cumplido. Esa definición de éxito no incluía la pregunta esencial: ¿la línea localizada contenía todavía la obligación que había aprobado el abogado?
RFC 5147 no asigna nombres semánticos a párrafos. Define coordenadas. line=240,246 identifica un rango de líneas de la entidad recuperada en ese momento. La inserción de material anterior desplaza la referencia sin volverla inválida. La disponibilidad del documento, la validez sintáctica del fragmento y la continuidad de significado son estados separados.
Esta es la clase de fallo que sobrevive a los indicadores convencionales. HTTP devuelve éxito. El contenido es text/plain. El fragmento está bien formado. El visor desplaza la página. La decisión, sin embargo, se apoya en otra frase.
El origen entrega una representación, no valida el fragmento
Los fragmentos URI se aplican localmente. La parte posterior a # no participa en la resolución que obtiene la representación. Después de recibirla, el cliente usa el tipo de medio para decidir qué gramática interpretar.
La separación permite que un cliente antiguo abra el archivo completo aunque no conozca RFC 5147. Es una ventaja de despliegue, pero crea una ambigüedad operacional. “El enlace abre” no significa “el subrecurso fue localizado”. El servidor tampoco puede certificar por sus registros que el usuario vio el rango, porque el fragmento no se envía como parte de la recuperación.
Una cadena probatoria debe registrar el resultado de cada capa: URI resuelto, representación y validadores, tipo de medio, charset, entidad decodificada, reglas de finales de línea, fragmento interpretado, rango resultante y presentación. Mezclarlas en un estado verde elimina la causa cuando dos lectores discrepan.
Contar caracteres exige escoger una realidad
RFC 5147 diferencia cuatro formas: posición de carácter, rango de caracteres, posición de línea y rango de líneas. Las posiciones son límites sin longitud. Los rangos cubren el espacio entre límites. La posición cero está antes del primer elemento.
El recuento ocurre sobre caracteres, no octetos. UTF-8 puede usar varios octetos. UTF-16 introduce otras reglas y puede llevar una marca de orden de bytes que no se cuenta como carácter. Además, lo que una persona percibe como una letra puede usar un punto de código precompuesto o una base con diacrítico separado.
La especificación permite indicar el charset en el control de integridad porque esa elección modifica el recuento y la representación binaria. Sin ese dato, una transformación de archivo puede conservar la apariencia y cambiar la coordenada.
Los finales de línea exponen la misma frontera. El formato de Internet usa normalmente CRLF, mientras que sistemas y protocolos pueden presentar LF, CR, NEL u otras secuencias. Cada final reconocido debe contar como un solo carácter. Eso exige que el intérprete conozca el contexto en el que trabaja.
El límite final no es una confirmación
Cuando una posición es mayor que el tamaño real, RFC 5147 la lleva a la última posición disponible. Es un comportamiento definido, no un comprobante de existencia.
Un expediente puede reducirse después de una política de retención. Una referencia a la línea 900 aterriza al final del archivo abreviado. Si el producto solo mide “sin excepción”, registra un falso éxito. Debe emitir una señal específica de ajuste fuera de rango y bloquear cualquier decisión que dependiera del pasaje original.
Los rangos abiertos amplían el problema. Una ausencia en el primer extremo significa “desde el principio”; una ausencia en el segundo significa “hasta el final”. Si la entidad crece, la selección crece. El URI no conserva el tamaño que vio su creador.
El estándar sí prohíbe improvisar ante errores. Un rango con posiciones mal ordenadas se ignora. Un fragmento con sintaxis inválida también se ignora, y el cliente no debe corregirlo o adivinarlo. Esta regla protege contra interpretaciones ocultas, pero la interfaz debe distinguir con claridad el documento abierto del fragmento aplicado.
La integridad opcional tiene tres límites
El primer límite es de cobertura. length y md5 describen la entidad MIME completa después de retirar las codificaciones de contenido o transferencia. No vinculan de manera independiente el rango seleccionado ni su contexto semántico.
El segundo límite es de implementación. Los clientes no están obligados a tratar los controles y pueden ignorarlos. Si un cliente compatible detecta un cambio, debería evitar interpretar el fragmento y puede avisar al usuario. Distintos productos pueden tomar decisiones distintas frente al mismo URI.
El tercero es criptográfico y de autoridad. La longitud es deliberadamente débil. MD5 fue definido como huella de 128 bits, pero RFC 6151 concluye que no debe usarse cuando se necesita resistencia a colisiones y que no es aceptable para firmas digitales. Una coincidencia no identifica a quien publicó el archivo ni demuestra que esa persona podía emitir una norma.
El charset complica incluso la comparación. Si el fragmento declara uno diferente del recuperado, el cliente no debe usar el control. Puede transcodificar primero, pero el propio RFC advierte que se pueden perder o normalizar caracteres. Un digest no elimina la necesidad de registrar el proceso que produjo los bytes.
El tipo de medio decide si la gramática existe
La misma cadena posterior a # no tiene significado universal. Para RFC 5147, la representación debe ser text/plain. En contextos que no entregan un tipo fiable, el agente infiere. El documento llama inherentemente poco fiable a esa situación.
Un URI file: puede abrir una copia local con finales diferentes. FTP u otros entornos pueden omitir metadatos. Una extensión de nombre puede inducir al visor a tratar como texto algo que no tiene ese contrato. Por eso la evidencia debe preservar el tipo declarado y el tipo efectivo, no solo el nombre del archivo.
La referencia de IANA confirma que el mecanismo está documentado para text/plain. No demuestra que un navegador lo implemente, que un producto enseñe las advertencias o que un archivo concreto cumpla las reglas. La asignación y la ejecución son pruebas de capas distintas.
Un recorte correcto todavía puede engañar
RFC 5147 advierte que las diferencias entre clientes pueden crear malentendidos similares al spoofing o phishing. Una interfaz que muestra únicamente el rango puede ocultar texto legal cercano. También puede extraer material parecido a una señal de confianza y colocarlo en otro marco visual.
Aquí no hace falta falsificar el documento. Basta con controlar el encuadre. La autenticidad del archivo y la honestidad de la presentación no son la misma propiedad.
Un sistema de evidencia debe guardar el documento completo o una revisión inmutable, el texto exacto seleccionado, contexto suficiente, los validadores de respuesta, charset, hash decodificado, política de líneas, resultado del rango, versión del cliente y hora. La firma del emisor, su cargo y la política aplicable requieren comprobantes adicionales.
Fuentes
- RFC 5147, HTML
- RFC 5147, texto
- Ficha del RFC Editor
- Ficha de IETF Datatracker
- Historial del documento
- Búsqueda de erratas de RFC 5147
- RFC 6838: especificación de tipos de medios
- RFC 2046: tipos MIME
- RFC 3986: sintaxis genérica de URI
- RFC 3987: identificadores internacionalizados
- RFC 3629: UTF-8
- RFC 1321: MD5
- RFC 6151: consideraciones de seguridad de MD5
- RFC 9110: semántica HTTP
- RFC 8089: esquema URI file
- Registro IANA de tipos de medios
- W3C Media Fragments URI 1.0
- Minimum Initial Specification, Localized Future Decision, and Voluntary Adoption
- On Reality Layers, Symbolic Power, and Why Clarity Feels So Hostile
- Running-Code Primacy
Informe para miembros
Contexto ampliado del perfil
Inicia sesión con el nivel de membresía adecuado para desbloquear el informe completo y las notas de las fuentes.
Solo para Strategic Circle
Strategic Circle
Abierto a todos los lectores. Desbloquea informes de perfil después de unirte e iniciar sesión.
Únete a Strategic CircleSolo para Leadership Alliance
Leadership Alliance
Para propietarios y directivos cualificados de activos de propiedad intelectual; inicia sesión para desbloquear los informes de la alianza.
Unirse a Leadership Alliance
