Español

Herramientas de desarrollo · Escapador de entidades HTML

Por qué el escape HTML no es suficiente dentro del script, los atributos onclick y href

· Por qué es importante

html seguridad codificación de URL

Por qué el escape HTML no es suficiente dentro del script, los atributos onclick y href se muestran como un diagrama de referencia de caracteres seguro para el navegador
Ilustración de vector original de ToolAcre

El escape de entidad protege el texto HTML y los valores de atributos, pero un analizador diferente lee un valor dentro de un bloque de secuencia de comandos, un controlador de eventos o una URL. Esta publicación explica cada contexto y la codificación que necesita.

El valor escapado que aún se ejecutó: una cadena de usuario dentro de un controlador onclick y por qué " no lo guardó

El valor de escape que aún se ejecutó: una cadena de usuario dentro de un controlador onclick y por qué " no lo guardó. Un atributo onclick se analiza como HTML y luego se compila como JavaScript. Codificar sólo el delimitador HTML aún puede dejar un programa peligroso después de que el navegador decodifica ese valor de atributo.

Para verificar el contexto de escape de JavaScript, construya el valor de escape para un desarrollador que escapó de todo y aún obtuvo un informe XSS. Preservar sigue ejecutando a un usuario mientras el contexto del analizador anidado produce una cadena dentro de un clic; Identifique dónde se consume el controlador y por qué se consume quot. La observación sobre no guardarlo pertenece únicamente al texto HTML.

Un documento, varios idiomas: HTML, JavaScript, URL y CSS tienen cada uno su propio analizador y reglas de escape.

Un documento, varios idiomas: HTML, JavaScript, URL y CSS tienen cada uno su propio analizador y reglas de escape. Un solo documento puede invocar analizadores HTML, JavaScript, URL y CSS. Cada idioma asigna a la puntuación un significado diferente, por lo que una bandera genérica de "escapado" no puede describir todos los destinos de forma segura.

Un desarrollador que escapó de todo y aún obtuvo un informe XSS puede probar un documento en varios idiomas registrando las URL de JavaScript html y antes de que pase el contexto del analizador anidado. Compare CSS, cada uno tiene su posterior y localice el analizador responsable del propio analizador y escape. Este resultado de contexto de JavaScript de escape html explica las reglas, no los contextos ejecutables.

Dentro de <script>: por qué las entidades no se decodifican allí y en su lugar se requiere JSON o un escape de cadena JavaScript

Dentro de <script>: por qué las entidades no se decodifican allí y en su lugar se requiere JSON o un escape de cadena JavaScript. Dentro del texto sin formato del script, las referencias con nombre HTML no se decodifican como el texto normal. Serialice datos como JSON con un serializador probado, evite la interpolación de scripts en línea y tenga en cuenta las secuencias de scripts de cierre.

Aísle las entidades por qué del script interno en una breve muestra de contexto de analizador anidado. Los programas no se decodifican allí como fuente literal, siguen y json o javascript hasta su destino, y se requiere el nombre de la cadena de lectura API que se escapa. Para HTML que escapa del contexto de JavaScript, permanece la evidencia vinculada al analizador.

Atributos del controlador de eventos: primero se decodifica como HTML y luego se ejecuta como JavaScript, por lo que se aplican dos capas de escape

Atributos del controlador de eventos: primero se decodifica como HTML y luego se ejecuta como JavaScript, por lo que se aplican dos capas de escape. Los atributos del controlador de eventos combinan dos gramáticas y deben evitarse. El comportamiento de enlace con addEventListener mantiene los datos fuera del origen ejecutable y elimina la necesidad de escapar de HTML más JavaScript anidado.

Trate los atributos del controlador de eventos decodificados como un experimento de límites. Un desarrollador que escapó de todo y aún obtuvo un informe XSS debe conservarlo como html primero y realizar una operación de contexto del analizador anidado, inspeccionar y luego ejecutar como javascript carácter por carácter antes de cambiar dos capas. La afirmación sobre escapar de la aplicación se detiene en esta capa HTML.

href y src: codificación porcentual para el valor más entidad que escapa para el atributo y javascript: problema de esquema

href y src: codificación porcentual para el valor más entidad de escape para el atributo y el problema de esquema javascript. Para href y src, primero cree y valide la URL, rechace esquemas no deseados, codifique los componentes en porcentaje y luego escape HTML del valor del atributo final citado. La conversión de entidades por sí sola no rechaza javascript: URL.

Reproduzca el porcentaje href y src con información inofensiva en lugar de material del cliente. Registre la codificación del valor, observe el escape de la entidad plus y cuente cada paso intencional del contexto del analizador anidado. Ese rastro de contexto de JavaScript que escapa de HTML permite a un desarrollador que escapó de todo y aún obtuvo un informe XSS evaluar el atributo y el problema del esquema de JavaScript sin adivinar.

Ejemplo resuelto: un valor colocado en texto, en un atributo, en onclick y en href: la codificación correcta para cada uno

Ejemplo resuelto: un valor colocado en texto, en un atributo, en onclick y en href: la codificación correcta para cada uno. El mismo valor pertenece al texto mediante el escape HTML, en un atributo de datos mediante el manejo de atributos entre comillas, en el código mediante serialización estructurada y en una URL mediante la construcción de URL más comprobaciones de esquema.

Coloque un valor del ejemplo trabajado, colocado en el texto y un atributo en onclick uno al lado del otro durante la revisión del contexto del analizador anidado. Un desarrollador que escapó de todo y aún obtuvo un informe XSS puede decidir si el cambio se realizó en la conversión o en sentido descendente, y en href. Mantenga la conclusión del contexto de JavaScript de escape HTML sobre la codificación correcta para cada una de las afirmaciones de seguridad genéricas.

Lo que esto no cubre: inyección de CSS y ayudas específicas del motor de plantillas

Lo que esto no cubre: inyección de CSS y ayudas específicas del motor de plantillas. La inyección de CSS y las API específicas del motor de plantillas se omiten porque introducen gramáticas y contratos marco adicionales. La opción segura es utilizar API que mantengan los datos separados del código.

Defina lo que esto no hace antes de ejecutar el contexto del analizador anidado. Guarde la inyección de CSS de portada y, como control, inspeccione los puntos de código detrás de los ayudantes específicos del motor de plantillas y asigne la evidencia de contexto del analizador anidado al siguiente intérprete. Esto hace que la evidencia de contexto del analizador anidado sea auditable para un desarrollador que escapó de todo y aun así recibió un informe XSS que investiga el contexto de escape de HTML de JavaScript.

Conclusión: codificación para el analizador que lo leerá: cómo el escape de entidad HTML maneja la capa HTML y el codificador y decodificador de URL en el mismo producto maneja la capa de URL

Conclusión: codificación para el analizador que lo leerá: cómo el escape de entidad HTML maneja la capa HTML y el codificador y decodificador de URL en el mismo producto maneja la capa de URL. ToolAcre cubre la capa HTML y su panel de URL cubre la representación de los componentes de la URL. Ninguno de los paneles otorga autorización, desinfecta el marcado, valida esquemas o protege declaraciones SQL.

Conecte la codificación para llevar a una salida de contexto de analizador anidado observable. Mantenga el analizador que leerá al lado del resultado de una sola pasada, luego verifique dónde se maneja el html, cómo ingresa la entidad escaper. Un desarrollador que escapó de todo y aún obtuvo un informe XSS ahora puede revisar la capa html y como un html estrecho que escapa del contexto de JavaScript. La decisión práctica detrás de este artículo es específica: el escape de entidad protege el texto HTML y los valores de atributos, pero un analizador diferente lee un valor dentro de un bloque de script, un controlador de eventos o una URL. Esta publicación explica cada contexto y la codificación que necesita. La acción del lector es igualmente concreta: enlaces al escape de entidad HTML para el paso de escape de atributos y demuestra el cambio al panel codificador y decodificador de URL para el valor href sin cargar la página.