Escape Characters con StringEscapeUtils de Apache Commons

¡Saludos!, aquí estoy de regreso para hablarles de Escape Characters utilizando Apache Commons y esperando les guste. Iniciamos . . . 

Alguna vez te habrás topado con la librería de Apache Commons, quizá cuando agregaste alguna otra librería a tu proyecto que necesitaba de ella, o cuando se presentó un error de librerías cuando agregaste dos librerías que la usaban y había conflictos por versiones, o ambigüedades de clases, o la viste en algún proyecto al que llegaste. Cualquiera que fuera el caso habrás escuchado de ella ya que es muy usada y famosa y si no, pues hoy será la primera vez y quizá te enamores de ella aunque sólo te presente un poco de lo que puedes hacer con Commons.

Commons es un proyecto de Apache el cuál está enfocado en todos los aspectos de componentes reusables  de Java. Prácticamente lo que hace es extender al lenguaje con Apis muy finas que se basan en la reutilización de código en Java. ¿Cuántas veces has pensado en que todo sería más fácil si ya existiera algo para resolver tu problema?, pues Apache se hizo la misma pregunta que tú y se puso a trabajar para darte ese algo que resuelve tú problema y otros más. No con esto quiero decir que Apache ya resolvió todo, y vas a encontrar la solución de todos tus problemas en Apache, pero lo que si encontrarás es lo más común como su nombre lo dice. ¿Imaginabas que alguien pudiera ahorrarte trabajo y mejor aún tuviera el respaldo de una empresa de renombre como Apache?, ahora que lo sabes porque no vas a echarle un vistazo.
No te fíes y echa un vistazo a la licencia de uso.

Ya que dí la introducción te puedo contar acerca de una de librerías de este proyecto que es Lang. Lang es un librería que provee extensiones muy necesarias para la librería java.lang de JDK SE, son muy genéricas y reutilizables para el uso diario. Dentro de ella existe un conjunto de clases que nos ayudarán con la manipulación de Strings, lo cuál usamos diariamente o ¿no?. 

En el uso diario de un String, ¿cuántas veces no haz tenido que escapar algún caracter que el lenguaje no te lo permite?, me imagino que muchas veces, a mi me pasa seguido en expresiones regulares. Java tiene su forma de escapar ciertos caracteres con \ (diagonal inversa), pero esto sólo tu lo puedes saber cuando lo estás tecleando, y en el caso de que los caracteres que necesites manipular vengan de otro lugar, ya sea de la web en un request, de una archivo, un componente swing, desde teclado en consola, etc., ¿cómo sabes que caracter escapar si tu no sabes cuales son?, bien pues para eso Apache Commons presenta una clase muy útil para escapar estos caracters. 
StringEscapeUtils nos permite escapar y des escapar caracteres en textos completos que contengan JavaScript, HTML, XML y SQL (y otros dependiendo la versión). Veámos el ejemplo.

//Escape Safe
public static String escapeXML(String escape){
  String escapeSafe = "";
  if(escape != null && escape.length() > 0){
        /*escapeXml,escapeHtml,escapeJava...*/
 escapeSafe = StringEscapeUtils.escapeXml(escape);
  }

  return escapeSafe;
}

¿En que podría usar el escape de caracteres?

  • Para escapar caracteres de código malicioso de SQL ó JavaScript que quieran intentar ejecutar desde nuestra aplicación. Inyección de SQL, XSS Cross-Site Scripting.
  • Si necesitas persistir información por ejemplo en BD y quieres guardar un script de JavaScript para después retornarlo y ejecutarlo, necesitaras escapar caracteres ya que al hacer un insert de la texto del script habrá caracteres que SQL no soporte y no te permita generar un query válido.

Esto es algo de que puedes encontrarte a diario, y que puede ayudarte a solucionarlo. ¿Tienes alguna duda, sugerencia, comentario, corrección?, no dudes en comentarlo. 

No hay comentarios

Leave a Reply

Seguidores

Google+ Followers

MarceStarlet. Con la tecnología de Blogger.