htmlencode escape characters accents asp.net javascript html encoding

asp.net - escape - javascript html encode string



Apóstrofo de codificación (5)

Estoy construyendo una cadena en el servidor que se pone en una variable de JavaScript en el cliente.

¿Cuál es la mejor manera de codificar esto para evitar problemas?

ahora en el servidor estoy haciendo algo como esto:

html = html.Replace("''", "'");

pero supongo que hay una manera más elegante y menos tonta de hacer cosas como esta.


Descubrí que la biblioteca AntiXSS no podía lograr lo que estaba buscando, que era codificar el lado del servidor y decodificar en javascript.

En su lugar, utilicé Microsoft.JScript.dll que le permite:

GlobalObject.escape(string);

y en el lado del cliente en javascript:

unescape(string);


Los caracteres que necesita para escapar en un valor de cadena son la barra diagonal inversa y el carácter utilizado como delimitador de cadena.

Si los apóstrofos ('') se usan como delimitador de cadena:

html = html.Replace(@"/", @"//").Replace("''", @"/'");

Si las comillas (") se usan como delimitador de cadena:

html = html.Replace(@"/", @"//").Replace(@"""", @"/""");

Si no sabe qué delimitador se usa, o si puede cambiar en el futuro, puede escaparse de ambos:

html = html.Replace(@"/", @"//").Replace("''", @"/'").Replace(@"""", @"/""");


No estoy seguro de en qué contexto está utilizando esta cadena, pero podría ser lo que está buscando. La barra invertida es un carácter de escape y le permite usar ciertos caracteres que de otro modo no podrían estar presentes en un literal de cadena. Este es el aspecto que debería tener el código JavaScript de salida:

alert(''It/'s amazing'');

Por supuesto, podría usar la alert("It''s amazing"); en este caso particular

De todos modos, si estás construyendo código JavaScript:

html = html.Replace("''", "//'");

Por otro lado, hay otros caracteres además de apóstrofes que necesitan algún procesamiento. El uso de la Biblioteca de scripts de Microsoft Anti-Cross Site los obtendría todos a la vez.



html = html.Replace("''", "%27");