[HTML] Entidad de carácter de carácter de escape <;>: &;

En el desarrollo, se escapará la URL obtenida por javascript desde el fondo, como: http: // localhost: 8080 / Home / Index? A = 14 & amp; b = 15 & amp; c = 123, quiero convertirlo a http: / / localhost: 8080 / Inicio / Index? a = 14 & b = 15 & c = 123

Encontré una solución durante mucho tiempo en línea:

El escape se divide en escapeHTML y unescapeHTML, veamos primero la realización de las dos funciones.

código js:

/**
 * @function escapeHTML 转义html脚本 < > & " '
 * @param a -
 *            字符串
 */
escapeHTML: function(a){
    a = "" + a;
    return a.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "&apos;");;
},
/**
 * @function unescapeHTML 还原html脚本 < > & " '
 * @param a -
 *            字符串
 */
unescapeHTML: function(a){
    a = "" + a;
    return a.replace(/</g, "<").replace(/>/g, ">").replace(/&/g, "&").replace(/"/g, '"').replace(/&apos;/g, "'");
},

1. EscapeHTML convierte <> & "'en entidades de caracteres. 
Escenarios de uso: 
(1) El usuario ingresa en la página (como un cuadro de entrada) <script> alert (2); </script>, js envía el contenido al backend save 
(2) muestra que el extremo posterior de la cadena se devuelve como extremo distal; después de recibir js: 
A, utilizando escapeHTML, se convertirá en una cadena & lt; script & gt; alert (2); & lt; / script & gt; En este caso, el navegador Se puede analizar correctamente, porque después de que el navegador recibe los caracteres de la entidad, se convierte en los corchetes angulares correspondientes, etc. 
b. Sin usar escapeHTML, el navegador piensa que es el comienzo de la etiqueta html cuando ve <, y usa directamente la cadena justo ahora como un script Ejecución, esta es la vulnerabilidad xss. 

2. unescapeHTML convierte entidades de caracteres en <> & "' 
Escenario de uso: el 
backend muestra el contenido de escape en la página; por ejemplo, & lt; script & gt; alerta (2); & lt; / Después de
recibir el script & gt;  js: 
a. Si la interfaz ejecuta unescapeHTML, puede operar directamente el dom para mostrar la etiqueta en la página. 
b. Si no hay unescapeHTML en la interfaz, generará <script> alert (2); </script> tal como está, pero no se ejecutará en este momento. 

Personaje de escape: 

Consejo: la ventaja de utilizar nombres físicos en lugar de números es que los nombres son fáciles de recordar. Pero la desventaja es que es posible que el navegador no admita todos los nombres de entidad (el soporte para números de entidad es bueno).

Supongo que te gusta

Origin blog.csdn.net/u013066730/article/details/108358895
Recomendado
Clasificación