Soy bastante nuevo en la codificación, así que lo copié / pegué en mi función de JavaScript y parece que no funciona.
Es posible que no esté funcionando porque ESAPI es una biblioteca a la que debe hacer referencia en una etiqueta de secuencia de comandos HTML; no es parte del javascript principal que viene con el navegador. ESAPI parece estar disponible en github , que también contiene un archivo README.md que explica cómo cargarlo en HTML . ¿Te puedes perder esa parte? Tu pregunta no dice.
Además, tenga en cuenta que debería ser
var safe = ....
no solo
safe = ....
Esto es importante en javascript. No puedes crear variables globales y contaminar el espacio de nombres global si puedes ayudarlo.
Los caracteres válidos para mis aplicaciones son solo los números [0-9] y un punto (.).
En ese caso, te sugiero que uses una expresión regular de javascript para ver si tu entrada coincide con estos caracteres y muestra un mensaje de error si no coincide. ESAPI parece ser una exageración para eso. Validar la entrada "conocida" es mucho más seguro que tratar de pensar en todas las entradas problemáticas y eliminar / transformar eso a través de una rutina de saneamiento. Haz algo como eso:
var validationRegex = new RegExp('^[0-9.]+$');
var text = document.getElementById("this").value;
if (text.match(validationRegex)) { }; // do something when text matches
No tengo mucha experiencia con javascript, por lo que es posible que desees leer cómo funcionan las expresiones regulares en javascript para volver a comprobar ese código. Tenga cuidado con el carácter de punto: fuera de [ ]
, significa "cualquier carácter excepto una nueva línea" en expresiones regulares.
Finalmente, si está enviando sus datos de campo de entrada extraídos a un servidor (asumo inteligentemente que no solo desea generar los datos a través de alert(safe)
, en cuyo caso no tendría que desinfectar En primer lugar, sería mucho mejor desinfectar los datos en el servidor, porque allí se puede confiar en el saneamiento. Si lo desinfecta en el cliente, un usuario malintencionado podría seguir enviando datos no desinfectados a su servidor.