Mostrando entradas con la etiqueta OWASP. Mostrar todas las entradas
Mostrando entradas con la etiqueta OWASP. Mostrar todas las entradas

domingo, 7 de agosto de 2011

Uso ESAPI en JSP


Buenas noches, les comparto algunos ejemplos de como utilizar ESAPI en los jsp.  Saludos.

En los JSP se harán los imports de ESAPI y esto va al inicio del jsp.

<%@page import="org.owasp.esapi.ESAPI" %>

Lo siguiente es encontrar el contexto de la solicitud con

String context = request.getContextPath();

En el head del jsp indicaremos la ubicación de los siguientes js: log4js.js, esapi.js, ESAPI_Standard_en_US.properties.js, Base.esapi.properties.js.

<!-- esapi4js dependencies -->
<script type="text/javascript" language="JavaScript" src="<%=context%>/esapi4js/lib/log4js.js"></script>
<!-- esapi4js core -->
<script type="text/javascript" language="JavaScript" src="<%=context%>/esapi4js/esapi.js"></script>
<!-- esapi4js i18n resources -->
<script type="text/javascript" language="JavaScript" src="<%=context%>/esapi4js/resources/i18n/ESAPI_Standard_en_US.properties.js"></script>
<!-- esapi4js configuration -->
<script type="text/javascript" language="JavaScript" src="<%=context%>/esapi4js/resources/Base.esapi.properties.js"></script>
   
<script type="text/javascript" language="JavaScript">
   // Initialize the api
   org.owasp.esapi.ESAPI.initialize();

   // Using the logger
   $ESAPI.logger('ApplicationLogger').info(
org.owasp.esapi.Logger.EventType.EVENT_SUCCESS, 'This is a test');
</script>

En la documentación indica que deben agregarse en este orden esapi4js dependencies, esapi4js i18n resources, esapi4js configuration,  esapi4js core pero en la práctica se realizó en el siguiente orden: esapi4js dependencies,  esapi4js core, esapi4js i18n resources, esapi4js configuration
Se usara ESAPI.encode().encodeForHTML(request.getParameter(“ALGO”)) en el documento HTML mientras que en las funciones javascript se puede emplear $ESAPI.encode().encodeForHTML(“DATOS NO CONFIABLES”) o ESAPI.encode().encodeForJavaScript(“DATOS NO CONFIABLES”)

Dentro de un input existen se llama un getParameter por lo que aquí es inseguro colocarlo, utilizamos ESAPI para no permitir ataques XSS

<input type="text" name="t" value="<%=ESAPI.encoder().encodeForHTML(request.getParameter("t")==null?"":
request.getParameter("t"))%>">

En una función de JavaScript utilizamos ESAPI para usar elementos del HTML, se puede también utilizar $ESAPI.encoder().encodeForHTML(“DATOS NO CONFIABLES”) para prevenir ataques XSS

<script>
function funcion(){
      algo.innerHTML=$ESAPI.encoder().encodeForHTML(
document.myForm.t.value);
}
</script>

En cualquier parte del HTML donde se utilice alguna función JavaScript se puede incorporar ESAPI.



Nota 2:

Si permite CUALQUIER entrada no confiable de usuarios dentro de las funciones JavaScript: document.write() o eval(), aun podría ejecutarse los XSS incluso después de hacer la limpieza de estos datos usando las funciones ESAPI: encodeForJavaScript() o encodeForHTML(). La razón es que los caracteres hexadecimales escapados son convertidos de nuevo a caracteres normales en el tiempo de ejecución de estas funciones.

sábado, 6 de agosto de 2011

ESAPI4JS

Les explicare como agregar esapi4js, en otros posts les indicare mas sobre el uso de esapi para java y esapi para JavaScript.


Para el caso de JavaScript crearemos una carpeta en WebContent con el nombre de esapi4js donde agregaremos lo siguiente.

  • Dentro de esapi4js copiar esapi4js.js o esapi-compressed.js (solo alguno de los dos) estos archivos se encuentran en el directorio dist/ de esapi4js-0.1.3.zip
  • Dentro de esapi4js crear un directorio llamado lib y dentro de este copiar los archivos que se encuentran en dist/lib de esapi4js-0.1.3.zip 
  • Dentro de esapi4js crear un directorio llamado resources y dentro de este copiar los archivos que se encuentran en dist/resources de esapi4js-0.1.3.zip

Quedando una estructura similar a:

viernes, 5 de agosto de 2011

ESAPI 2.0.1

Se bajan los archivos correspondientes a la versión de Java y JavaScript. (Pagina para seleccionar entre Java, JavaScript y otros…) 

En el caso de Java se bajó la versión ESAPI-2.0.1 Distribution (zip)

En el caso de JavaScript se bajó la versión esapi4js-0.1.3.zip

Para el caso de Java configuramos el build path para agregar el jar esapi-2.0.1.jar así como las jar que vienen en la carpeta libs porque los necesita esapi para funcionar.

 
Lo siguiente es buscar los siguientes tres archivos :
  • ESAPI.properties --- esapi-2.0.1-dist\src\test\resources\esapi
  • Validation.properties --- esapi-2.0.1-dist\src\test\resources\esapi
  • ESAPI-AccessControlPolicy --- esapi-2.0.1-dist\src\test\resources\esapi

Estos tres archivos deben estar en alguna de las siguientes direcciones:
  • Crear un directorio ‘org.owasp.esapi.resources’ y colocarlos allí.
  • Colocarlos en WEB-INF\classes\.esapi\ARCHIVOS
  • Colocarlos en WEB-INF\classes\resources\ARCHIVOS
  • Colocarlos en el ‘user.come’ en mi caso se creó C:\Users\mtapia\esapi\ARCHIVOS
  • Decláralos en el classpath a los tres archivos.  

Lo siguiente es crear una clase para usar el main de JavaEncryptor para colocar en el ESAPI.properties el Encryptor.MasterKey= y el Encryptor.MasterSalt= ya que por default estos vienen vacíos y si no vienen vacíos se recomienda cambiarlos.



Estos valores que se generan con esta función los copiamos y los pegamos en el lugar que corresponde en el ESAPI.properties. Ahora crearemos otra clase para verificar que está completamente instalado ESAPI.



Si logramos ver al final lo siguiente es que quedo configurado.


jueves, 4 de agosto de 2011

ESAPI-1.4.4

Hoy les traigo un pequeño manual de como instalar y configurar ESAPI para Java.

Se baja el archivo correspondiente a la versión esapi-1.4.4 de http://code.google.com/p/owasp-esapi-java/downloads/list. Se descomprime el .zip quedando una estructura similar a:

 

La documentación se puede bajar del siguiente enlace, solo se selecciona de acuerdo a la versión y ya en el IDE se agrega. http://owasp-esapi-java.googlecode.com/svn/trunk_doc/index.html
 
Para el caso de Java configuramos el build path para agregar el jar ESAPI-1.4.4 así como los jar que vienen en la carpeta libs/required/… porque los necesita esapi para funcionar. Lo siguiente es buscar los siguientes tres archivos :
  • antisamy-esapi.xml --- ESAPI-1.4.4\configuration 
  • ESAPI.properties --- ESAPI-1.4.4\configuration
  • keystore --- ESAPI-1.4.4\configuration
Estos tres archivos deben estar en alguna de las siguientes direcciones:
  • Crear un directorio ‘org.owasp.esapi.resources’ y colocarlos allí.
  • Colocarlos en WEB-INF\classes\.esapi\ARCHIVOS
  • Colocarlos en WEB-INF\classes\resources\ARCHIVOS
  • Colocarlos en el ‘user.come’ en mi caso se creó C:\Users\mtapia\esapi\ARCHIVOS
  • Decláralos en el classpath a los tres archivos. 
Ahora crearemos otra clase para verificar que está completamente instalado ESAPI.


·         Si logramos ver al final lo anterior es que quedo configurado.


      Saludos y buenas noches.