Resumen de la novena conferencia de OWASP Spain Chapter Meeting Barcelona, 12 de junio de 2015

Cómo cada año esta conferencia no te deja indiferente, un mundo que nunca descansa. El de la seguridad online.

Lo bueno de esta jornada fue la presentación de ideas sobre el desarrollo y el testing, y la necesidad de mejorar las metodologías de la aplicación de la misma.

Un cambio necesario con la continua aparición de bugs en tantas distintas áreas, que lo que llevamos del 2015 y el 2014, en la cantidad de problemas detectados ha podido ver lo expuestos que podemos estar de la noche a la mañana.

Pues aquí las distintas ponencias, vale la pena cada una de ellas.

Presentación de la jornada, lamentablemente este año no contamos con la presencia de Vicente Aguilera Díaz, que gracias a su trabajo y esfuerzo podemos disfrutar de estas charlas que difunden un excelente trabajo de la Owasp.

 

Primera ponencia (ingles):
Ashar Javed. – @soaj1664ashar.
Cat-and-Mouse Game with Sucuri’s Web Application Firewall

Una excelente demostración de lo que sigue siendo la vulnerabilidad XSS y lo presente que está a pesar de usos de herramientas como WAF CloudProxy (Programadores web preparar la pastilla para no amargase el día)

 

Segunda ponencia (No se grabó a pedido del ponente)
Marc Muntañá Vergés.
Estableciendo las tres líneas de defensa en proyectos web
Presentó un modo de presentar los problemas que surgen a la hora de una empresa / compañía al evaluar su plan de seguridad, los roles de los departamentos, como también los de los jefes de los mismos, presentando 3 capas.


Tercera ponencia
Fabio Cerullo. – @fcerullo. CEO y Fundador de Cycubix.
Desarrollo Rápido y Seguro de Aplicaciones. ¿Es posible tener las dos cosas?

En esta ponencia comenzamos a abordar el problema de la forma de desarrollar y la necesidad de hacer el Testing y el cómo hacerlo, que etapas implica, en que parte del desarrollo y que metodologías se aplican como AGILE y los Sprint.

 

Cuarta ponencia
Stephen De Vries. – @stephendv

Pruebas de seguridad contínuas para DevOps
En esta ponencia se continua el análisis de la forma de desarrollar y la presentación de metodologías, acompañado de demostración de herramientas de testing, las cuales son una excelente recomendación para cualquier desarrollador sea para el área que sea, el visionado de estas para mejorar la forma de trabajo donde el Testing forme parte de la aplicación desde su nacimiento.

 

Quinta ponencia
Miguel Ángel Hernández Ruíz. – @miguelangelher
Abuse Cases – from scratch to the hack

Muy buena ponencia donde se demuestra que el cambio continuo a veces hace olvidar la fuente. Muestra errores en sistemas que sólo implementan controles a nivel usuario capa final, con JS y nos olvidamos de que hay un servidor detrás para poder comprobar valores.

Este tema se trata hace años, pero supongo que la comodidad del JS y el AJAX hace que dejen el control de los valores a la simple capa de presentación de datos.

 

Sexta ponencia
Marc Rivero López. – @Seifreed , Senior eCrime. Deloitte.
APT, Ataque y defensa en entorno hostil

Una ponencia que no se puede perder nadie, un poco de la realidad que vivimos en este mundo de la informática, las estrategias de seguridad, sus versiones cinematográficas y todo!

Se plantea como se ataca y como deberíamos tener una empresa lista para la defensa y lo más importante la prevención de ataques futuros.
Como siempre Marc, le puso el punto de ánimo y sacó una sonrisa a pesar de llevar horas ya de conferencias!

 

Mesa redonda (ponentes e invitados) y cierre de la jornada

Buen resumen de la jornada y una excelente charla sobre temas variados que se presentan cada día, aunque la respuesta casi siempre es la misma «es lo que toca y si queremos comodidad para delante».

Como resumen de cierre la verdad que me sorprendió los cambios a los que nos enfrentamos cada día y como se está abordando más seriamente la forma de desarrollar en las empresas, ya que cada una implemente o no es un tema, pero como cliente de un software no te puedes dejar colar un BUG sin Testing real.

Espero que el material sea del agrado de todos, cosa difícil, pero lo intento.
El uso que se le de a este conocimiento es responsabilidad de quien lo use.

Como siempre recuerden que en la web de la OWASP pueden ver mas contenidos, acceder a materiales y mas cosas.

https://www.owasp.org/index.php/Spain/Chapter_Meeting

 

Mi desafortunado encuentro con Nic.ar (Nic Argentina)

Mi desafortunado encuentro con Nic.ar (Nic Argentina) – Actualizado

nicar

Increíblemente una Organización Gubernamental que usan todos los argentinos, ha perdido toda mi confianza y creo que todos los argentinos deberían también perderla.

Todo comenzó con un dominio del cual me llego el aviso de vencimiento el día 12-01-2014 por lo cual dije el domingo lo renuevo (19-01-2014).

O grave error el domingo iluso de mi, voy al flamante panel de control de Nic.ar y para mi sorpresa mi dominio ya no existe en mi listado, bueno me empecé a preocupar, ya que tengo varios dominios .com.ar vamos como este mismo de mi blog, bien decido chequear el correo y a mi ver tengo un hermoso mail del flamante sistema nuevo de nic.ar diciéndome que ya libere mi dominio (linda joda no..?) Pues si, así por la cara el flamante código fuente con sus respectivos crons me liberaron un dominio (AFANARON EN CRIOLLO).

Comenzó la lluvia de mail, llamadas, mensajes de facebook, tweets, nada, todo sin respuesta, aun con ilusión miro la empresa contratada para gestionar los tickets de las incidencias para ver si alguien miro la mía, nada silencio absoluto, por ende más dudas sobre que lo que paso, hay mano negra, vudú ¿? Nada, sigo llamando, mandando tweets, mas mensajes de Facebook, y nadie reacciona es como estar en pause, Nic.ar no existe en soporte, hoy después de llamar por 30 minutos, y logre que alguien me atienda, sí señor, siiiiiii una voz detrás de un PC con un flamante panel de control de administración… PARA NADA, con la mejor intención probo de ayudarme pero nada, limitado, es soporte para cosas normales, me dicen… Pero me reconoce que la liberación se auto gestiono sola entre las 12:00 y las 12:02. Pero que no puede hacer nada, vamos que es mi culpa y que debo ejecutar la Regla11, ya que todos los seres humanos vivimos en Capital Federal, si señor que grandes que son, que me presente en las oficinas de Juncal que seguro me ayudan.
Mi sensación de frustración, de estafado seguían aumentando, pero la persona con la que hablaba no tenía nada de culpa, le solicite un mail de algún programador de VHS, perdón de PHP, o de sistemas para poder exponer mi problema y lo intento conseguir, solo perdí un poco más de tiempo mientras le decían que no.

Bien momento TAGS: NIC.AR NO SIRVE, NIC.AR ESTA MAL DESARROLLADO, NIC.AR TE ROBA DOMINIOS, NIC.AR DA UN MAL SERVICIO, NIC.AR ME TOMA EL PELO. Google hace lo tuyo por favor!!!

Bueno, como toda empresa del gobierno no me da opciones más que joderme y maldecir a su gran madre y a los genios detrás del desarrollo, seguramente su software esta auditado por 5 compañías de seguridad, tienen una ISO 9000 18000 21000 y que se yo, procesos etc, no no tienen nada de esto, es mas esta palabra le debe sonar a chino, “OWASP”.

Eso si el panel de control flamante es lindo.

Bueno lo malo, es que hoy fui yo, pero esto le puede pasar a todos los señores que tengan com.ar registrados.

Trate de ver si podía solicitar hacerles una reclamación por su sistema, o un método de gestión por su mal desarrollo, como debería ser, pobre la telefonista otra vez le hablaba en chino.

Viva Tato Bores y su maquina de picar boludos!

Actualización de mi aventura (25-01-2014) Nic.ar Recuperando la confianza…

Luego de haber comenzado una campaña de conciencia en la red y mucho mensaje por todas las redes sociales y mi idea no era dejar de hacerlo hasta que alguien me escuche, o morir de viejo mientras hacia mi control + V con mi mensaje de amor de dominios.

Tuve la suerte de que en algún lado cayo me mensaje y fui escuchado, es mas hasta reconocieron que sucedió un fallo (A todos nos puede pasar…)
Tengo nuevamente mi dominio a mi nombre bueno eso parece a esperar unos días hasta que el dns este desplegado y andando.

NIC-Argentina

 

Seguramente van muy presionados con la cantidad de trabajo y eso creo que todos debemos reconocerlos y encima es un servicio gratis, mientras que en todo el mundo se paga por los dominios,  Ojala el estado aumente el presupuesto para aun mejorar mas el sistema de Nic.ar.

Pues espero no tener que repetir otra entrada como esta, la verdad que me amargó mas que nada por la impotencia de no poder contactar con nadie y se nota que se debería aumentar el personal, y quien dice algún día cobrar un poco no..? A ver si así aun puede mejorar un poco mas.

Trabajando con DateTime en PHP 5.3

Trabajando con DateTime en PHP 5.3

Aunque no escribo mucho sobre programación esta vez tocó.

Estoy trabajando actualmente con un proyecto personal, donde me ha tocado preparar sistema de fechas para reservas.

Si bien nunca me gustó como PHP trabaja las fechas; «que si unix time stamp, que si str, que si ingles que la mar en coche».
Me pregunté si tanto hablar de OOP en PHP no tendrá una clase «digna» de trabajo con fechas…

Y casi la tienen, creo que aun la pueden mejorar, pulir y hacerla más completa, pero al menos con lo que hay, se puede trabajar con un estándar más o menos preciso.

Las primeras críticas que me llovieron fueron las cantidades de NEW pero si quiero que los datos se interrelaciones bien, sin problemas, debo usar la base de ejemplos que esta online (php.net).

A mi ver me parce totalmente valido, donde un lenguaje una simple $variable puede ser un array o un fichero o una clase, no creo que por los news sea preocupante.

Lo bueno de todo esto es que al final para mi, lo han simplificado mucho el modo de trabajar, de poder recorrer las fechas con un simple bucle, aunque para ello hay que definir cosas previas.

Lo que use:

Clase DateTime (http://php.net/manual/es/class.datetime.php)
Clase DateInterval (http://www.php.net/manual/es/class.dateinterval.php)
Clase DatePeriod (http://www.php.net/manual/es/class.dateperiod.php)

Una aclaración el código que muestro es a ejemplo para aprender a utilizarlo no es el más pulido ni optimizado, lo que intento es que puedas amigarte con estas hermosas clases y su potenciales.

Es más me fui encontrando cosas que a mi entender no son lo mejor, pero bueno andan. ( :-/ )

Dejare un txt con el código para que lo puedan descargar.

Defino que trabajo en castellano y otras cosas:

setlocale(LC_ALL,»es_ES@euro»,»es_ES»,»esp»);

Lo primero crear una fecha

$init = new DateTime(«2013-09-17 00:00»); // Fecha de inicio
$end = new DateTime(«2014-09-30 23:59»); // Fecha Final (Atención a este detalle 23:59)

Bien, comienza lo lindo, los intervalos, que son? Pues es un modo de recorrer la fecha por el periodo definido en mi caso el primero es el de un mes

$interval = new DateInterval(‘P1M’); // Intervalo de un mes para el bucle

Y ahora otro new, que seria el periodo, esto hace falta para el foreach, por asi decirlo 😉

$daterange = new DatePeriod($init, $interval ,$end); //Bien esto creara algo que recorrer, pueden ver que las fechas son Fecha inicio – Intervalo de tiempo por el cual saltar – Fecha tope.

Y ahora el foreach

foreach($daterange as $date) { // Iré mes a mes

Dentro del foreach quiero recorrer cada mes con sus correspondientes días. Acá es donde me encontré un problema básico, quería saber según el día que tengo, cual es su último día, en el caso de septiembre es el 30, pensé con mi ilusión que existía algo, pero es en pecl así simplifique lo que pude.

$str_mes = «1-«.$date->format(«m-Y»); // Y nos pasamos a los string =( Como $date es el mes actual, pues de aqui consigo el primero de mes.

Creo una nueva fecha

$fin_mes = new Datetime($str_mes); // En este caso seria 1-09-2013

Y mi truco para obtener el fin de mes!!!

$fin_mes ->add(new DateInterval(‘P1M’)); // A la fecha le agrego un mes! (P1M)
$fin_mes ->sub(new DateInterval(‘P1D’)); // A la fecha le resto un dia!

Y wala! tengo el 30-09-2013, pero me encontré una sorpresa con el bucle, al amigo le gustan los datos totales para recorrerlo, parece ser que si no tienes las 23 horas, mas los 59 minutos y sus 59 segundos el día no es 30!
Ser o no ser, pues tranquilos, se lo agregamos!

Al principio pensé que pasaría un día mas por el tiempo, pero no, no se suma!

$fin_mes ->add(new DateInterval(‘PT23H59M59S’)); // Arreglo para que cuente el 30/31 (raro no?)

Ahora ya tengo mi fecha lista! A recorrerla según vamos necesitando.

Creo mi nuevo intervalo de un día P1D

$intervalo_dias = new DateInterval(‘P1D’);

Bueno, necesito controlar los meses:

$control_mes = $date->format(«m-Y»); // Mes actual mas año! para poder recorrer
$control_init_mes = $init->format(«m-Y»); // Mes de inicio del bucle
$control_end_mes = $end->format(«m-Y»); // Mes de final de bucle

Imprimo nombre del mes:

echo «<br/>».strftime(«%B», strtotime($date->format(«y-m-d»))).»<br /><br />»;

Bueno mi control de movimiento para el futuro bucle que recorrerá el mes

Algo que pongo en este caso y es muy útil, lo pongo a modo debug, pero para calcular cosas es lo más importante.
Calcular la diferencia entre dos fechas, $date ->diff($fin_mes); (http://php.net/manual/en/datetime.diff.php)
Defino 3 segmentos para hacer el bucle, fecha inicial, entre inicio y final, fecha final.
Esto lo hago porque no siempre empezaremos desde el día 1 y terminaremos el día 30/31

// Fecha inicial hasta fin de ese mes
if($control_init_mes == $control_mes) {
$dias_final_mes = $date ->diff($fin_mes); // Diferencia entre día de venta inicial y final de mes
echo «Días hasta el final del mes: «.$dias_final_mes->format(‘%r%a’).»<br /><br />»; // Simple debug
$dias_venta = new DatePeriod($init, $intervalo_dias,$fin_mes); //rango dentro del mes
}
//Fecha final, debo obtener el 1 de mes
else if($control_end_mes == $control_mes) {
// Genero fecha 1 de mes
$str_mes_fin = «1-«.$date->format(«m-Y»); // mas texto!
$dia_pri_fin_promo = new Datetime($str_mes_fin); // Fecha al día 1 de el ultimo mes
$dias_hasta_mes = $dia_pri_fin_promo ->diff($end); // Diferencia entre ultimo día de $end y el primero de ese mes
echo «Días hasta final de la promo: «.$dias_hasta_mes->format(‘%r%a’).»<br /><br />»; // Otro simple debug
$dias_venta = new DatePeriod($dia_pri_fin_promo, $intervalo_dias,$end); //Rango dentro del ultimo mes
} else {
// Meses que hay entre INICIO y FIN
$str_inicio_mes = «1-«.$date->format(«m-Y»);
$dia_inicio_mes = new Datetime($str_inicio_mes);
$dias_venta = new DatePeriod($dia_inicio_mes, $intervalo_dias,$fin_mes); //rango dentro del mes
}

// Muestro en pantalla la salida
foreach($dias_venta as $dias){
echo $dias->format(«d-m-Y»).»<br/>»;
}

}

?>
</pre>
</body>

Bien con esto no pretendo más que dar simples ideas y nociones de uso de esta excelente clase y sus clases amigas!

Un detalle interesante que me encontré a la hora de estar haciendo pruebas!
Usando diff y la salida con signo – para saber si era un valor negativo me encontré con que el valor 0 y -0 son cosas distintas,
Me quede flipando con lo cuántico de esto jijijiij

2013-09-13 00:00 diff 2013-09-13 18:19 => 0
2013-09-14 00:00 diff 2013-09-13 18:19 => -0
next -1 ….

Descargar txt del ejemplo: http://poisonclub.g1.re/ejemplo-date-time-php.txt
Saludos!

Owasp PHP Security Project, una muy buena noticia para los programadores en PHP

Nace el proyecto de seguridad para PHP desde la OWASP.
OWASP

Aun está en pañales, pero es una excelente noticia para todos los programadores de PHP, seguramente cuando cobre más fuerza tendremos una excelente herramienta para poder dar un poco mas de control a nuestros proyectos.

Enlace del proyecto:

https://www.owasp.org/index.php/OWASP_PHP_Security_Project

https://github.com/owasp/phpsec/

Otro tema que encontré, el top 5 en PHP de seguridad! a disfrutarlo.

https://www.owasp.org/index.php/PHP_Top_5