martes, 8 de junio de 2010

¿Qué son las vulnerabilidades SQLi?

Una vulnerabilidad SQLi es una vulnerabilidad por inyección de SQL.

Básicamente, lo que significa, es que alguien puede meter información inesperada en las cajas de texto de tus formularios HTML (input) y que, si no es bien tratada por tu programación, podría llegar a introducir o leer información de la base de datos.

Casi siempre se intenta utilizar, esta vulnerabilidad, para lograr entrar con un usuario autorizado en la zona privada de tu web.

Se supone que el contenido de los campos "password" de los formularios serán "pegados" en tu programación para formar una SQL, que luego será lanzada contra la base de datos para saber si un usuario está autorizado o no. Alguien puede intentar poner un "password" "trampa" que haga que esa consulta SQL construida siempre sea cierta aunque no se sepa realmente la "password".

Si la programación (esto es cosa vuestra) no está bien realizada, podría ocurrir que cualquiera sin saber la contraseña entrase en esa zona privada.

Simplemente, échale una ojeada al código que construye esas SQL o comprueba que las "password" introducidas no tengan espacios en blanco, o comillas simples, o comillas dobles, o un igual (suelen ser los caracteres que se utilizan para hacer inyección SQL).

Aprenda Web Services en 20 minutos

Aprenda WS (Web Services) en 20 minutos ;-) La primera unidad didáctica no la facturo.

Para desarrollar un WS sólo es necesario un servidor web y una tecnología para desarrollarlo. En teoría se podría desarrollar con C (como un CGI) o con PHP, pero es complicado hacerlo.

Digamos que lo más natural/lógico es desarrollarlo en JAVA y publicarlo en un servidor J2EE: un Tomcat, un JBoss, un SJSAS, un WebLogic, etc.

Antes de desarrollarlo habría que seleccionar también una implementación (podría ser Apache AXIS1, Apache AXIS2, Apache CXF, SUN Metro, etc.)

También si se va a utilizar (esto es muy común y todos las implementaciones anteriores lo permiten) el API estándar JAX-WS.

Luego, crear un WS es tan "sencillo" (evito la lógica de negocio) como crear un interface JAVA:
package com.organizacion.webservice.personasactual;

@WebService(name="PersonasActualService")
public interface PersonasActualService {

@WebMethod(action = "validarContrasenaAdministrativa")
@WebResult(name = "contrasenaAdministrativaValidada")
public int validarContrasenaAdministrativa(@WebParam(name="nipPersona") int nipPersona, @WebParam(name="contrasena") String contrasena);

}
y la clase JAVA que lo implementa:
package com.organizacion.webservice.personasactual;

@WebService(endpointInterface="com.organizacion.webservice.personasactual.PersonasActualService")
public class PersonasActualServiceImpl implements PersonasActualService {

public int validarContrasenaAdministrativa(int nipPersona, String contrasena) {
int contrasenaAdministrativaValidada = -1;
//TODO: lógica de negocio
return contrasenaAdministrativaValidada;
}

}
Empaquetamos en un WAR y lo desplegamos en el servidor de aplicaciones.

Esto que parece muy sencillo... realmente lo es, lo que no quiere decir que no requiera esfuerzo/tiempo hacer toda la lógica de negocio y montar lo necesario (la estructura) para crear el primer WS.

sábado, 5 de junio de 2010

¿Qué motiva a los trabajadores?

He encontrado un artículo sobre la "motivación de los trabajadores", que es un tema que subyace en toda filosofía de "crear buenos ambientes en el trabajo":

http://www.infoq.com/news/2010/02/what-really-motivates

Lo que dice el artículo es que, el reconocimiento ya no es el factor más importante, sino que lo más importante es sentir el progreso (el avance).

"En los días en que, los trabajadores, tienen la sensación que están avanzando en sus puestos de trabajo, o cuando reciben el apoyo que les ayuda a superar los obstáculos, sus emociones son más positivas y su impulso hacia el éxito está en su "pico más alto". Sin embargo, en los días en que sienten que están "girando ruedas", o encontrando obstáculos para el logro, su estado de ánimo y su motivación son más bajos."

Los pequeños avances son el factor de motivación por excelencia. Aun así, el estudio en que se basa el artículo señala que el reconocimiento es un factor de motivación muy valioso.

El Top-ten de los factores motivadores son:

1. Logros
2. Posibilidad de crecimiento
3. El trabajo en sí mismo
4. Reconocimiento
5. Promoción
6. La supervisión técnica
7. Responsabilidad
8. Relaciones con los compañeros
9. Relaciones con los subordinados
10. Salario

Creatividad en el trabajo

Algunos modelos de negocio se sostienen en la creatividad. Pero las empresas no son creativas, los creativos son sus empleados. Los creativos necesitan de sus "musas", así que las empresas deben estimular a sus empleados para que estas "musas" aparezcan.

Estas empresas deben invertir en I+D+i+c (siendo la última c=creatividad). Un ejemplo de empresa de este tipo es una famosa empresa aragonesa: Imaginarium. Google podría estar cerca de este modelo, pero no es exactamente "su modelo".

Otros modelos, en las antípodas de los anteriores, deben intentar que lo que aparezcan no sean las "musas", pero las "musarañas", entre sus empleados.

La Administración, en general, está más cerca de este segundo modelo que del primero. No es necesario que invirtamos en (I)nvestigación, ni en (i)nnovación, ni en (c)reatividad para sacar adelante nuestro (D)esarrollo. Aunque, si queremos intentarlo, no seré yo quien diga que no...

Os recomiendo este vídeo sobre "El poder del tiempo libre" (con subtítulos en castellano y donde se menciona a Google y a otras empresas que tienen fórmulas del tipo 20% Google):

http://www.ted.com/talks/lang/spa/stefan_sagmeister_the_power_of_time_off.html

Más sobre cómo se trabaja en Google 1, 2 y 3 (en el 2 es donde se habla del 20% Google):

http://www.youtube.com/watch?v=q6XNkFzaDGY&feature=related
http://www.youtube.com/watch?v=P7PPGt7HbWE&feature=related
http://www.youtube.com/watch?v=h6ML1e0-LAk&feature=related

Otro donde se cuenta cómo es un día de trabajo en la sede central de Google:

http://www.youtube.com/watch?v=Mb57aaM1JfU&feature=related

Ahora uno muy divertido sobre posiblemente, el "peor" trabajo del mundo:

http://www.youtube.com/watch?v=Q4BZPxu33Ww

El cliente es una parte más de nuestro equipo

Esta claro que el cliente es una parte más de nuestro equipo, pero esto lo hemos impuesto nosotros, nuestra metodología, y no él. Aquí es donde surgen los problemas.

¿Cómo implicamos, comprometemos podríamos decir mejor, al cliente como un actor más en el -su- proyecto? Con imaginación, diría yo.

Debemos tratar de convencerles que son la parte más interesada en conseguir que el proyecto tenga éxito y que esto pasa por participar a lo largo de toda la vida del mismo.

Quizá en un primer momento recoja este testigo con ilusión, pero si no sabemos "mantener las brasas encendidas" esta ilusión se irá apagando. El cliente acabará pensando: "sólo estoy perdiendo tiempo en metodologías, tareas, jergas extrañas (scrum, sprint, backlog,...), etc. que no entiendo y estos tipos listos además quieren que me haga responsable de probar el producto porque ellos realmente no lo están haciendo".

Yo creo que tengo la solución: si queremos implicar al cliente nosotros debemos hacer "exquisitamente" bien nuestra parte del trabajo. Entregar sólo funcionalidades testadas con minuciosidad, con tanta minuciosidad que podamos permitirnos el lujo de incluir "fallos" controlados para verificar que el cliente se los encontrará en sus pruebas y nos los reportará, que nosotros resolveremos increíblemente rápido (al minuto de haberlos reportados) y que, además, le felicitemos por ello. El reconocimiento es la clave.

¿Qué os parecería recompensar, económicamente o de alguna otra forma, al cliente cada X problemas encontrados en su fase de prueba? Realmente todos estaremos consiguiendo una ventaja en ello, ¿no?

OpenData y el desafío de los datos abiertos y enlazados

Hace unas semanas, el Gobierno Vasco, se presentó en el Tecnimap 2010 (Zaragoza) el portal:

http://opendata.euskadi.net

Se trata de una iniciativa que tiene como objetivo el exponer los datos públicos que obran en poder de la Administración, para que puedan ser utilizados por terceros. Claro, todos aquellos datos no sujetos a restricciones de privacidad, seguridad o propiedad.

Esta iniciativa, de liberar la información que posee la Administración, no es nueva. Todos conocemos el portal http://data.gov (promovido por el propio presidente de los EE.UU. Barack Obama) o el portal británico http://data.gov.uk (promovido por Tim Berners-Lee).

Hablado de Tim, en una reciente presentación de los TED 2009, Berners-Lee dio una charla muy interesante sobre el tema:

http://www.ted.com/talks/lang/spa/tim_berners_lee_the_year_open_data_went_worldwide.html

También, en la Expo 2010 sobre Gobierno 2.0 Tim vuelve a hablar de lo mismo, convirtiéndose "de facto" en el promotor de esta tendencia. Primero enlazó documentos y ahora pretende enlazar datos. Está presentación es tan apasionante como la anterior:

http://www.youtube.com/watch?v=ga1aSJXCFe0&feature=PlayList&p=C92663271D02C277&playnext_from=PL&index=23

Primero fue el software abierto y ahora la tendencia es: "abrir los datos".

Hace poco, un proyecto aragonés (más concretamente, 4 amigos de Zaragoza) se ha llevado un premio en el desafío de datos abiertos con una aplicación para móviles.

http://www.dndzgz.com/web/index.html

Se basa en datos "abiertos" que publica ¿el propio Ayuntamiento de Zaragoza? sobre los autobuses (dónde están las paradas), bizi, wifi y tranvía. Quieren ampliar las categorías, poco a poco...

lunes, 22 de marzo de 2010

Publicado Flex SDK 4 y el nuevo Flash Builder 4

Con el inicio de la primavera ha florecido, por fin, la tan esperada versión 4 del kit de desarrollo para Flex de Adobe. Ya podemos descargar, desde hoy mismo, los productos anunciados desde la siguiente URL:

http://opensource.adobe.com/wiki/display/flexsdk/Download+Flex+4

En unos días, veré el esfuerzo que tengo que realizar para proporcionaros la traducción del SDK al español, aunque es posible que Adobe incorpore esta localización ya de serie.

NOTA: el nuevo SDK incorpora ya de serie la localización al español, entre otras. Ha ampliado la lista de localizaciones disponibles a las siguientes: da_DK, de_DE, en_US, es_ES, fi_FI, fr_FR, it_IT, ja_JP, ko_KR, nb_NO, nl_NL, pt_BR, ru_RU, sv_SE, zh_CN y zh_tw. Mis artículos anteriores, sobre el tema de localización del SDK, podrán servir a catalanes, gallegos y vascos para localizar este kit de desarrollo ¡Suerte!

Podéis probar, también, el entorno de desarrollo Flash Builder 4 (la nueva versión que sustituye al Flex Builder) durante unos 60 días, antes de decidir si queréis comprarlo o no:

http://www.adobe.com/products/flex/

lunes, 15 de marzo de 2010

Redes sociales como herramienta de comunicación empresarial

Últimamente, por los foros por los que me muevo, no dejo de escuchar peticiones sobre el uso que se puede dar de las redes sociales en ambientes profesionales.

No se trata de establecer vínculos lúdicos entre los profesionales que participan de un proyecto común. Tampoco se trata de hacer uso de redes para profesionales existentes, tipo Linked-in o Xing, sino de convertir estas herramientas en herramientas de uso cotidiano, con el fin de salvar distancias o de crear comunidades dentro de una organización.

En nuestro departamento de TI también estamos buscando algo parecido. Realmente llevamos una época "larga" en la búsqueda de esa herramienta. Incluso hemos creado un proyecto (una hoja de ruta, quizá sería más propio para definir lo que estamos haciendo) que nos ayude a saber qué es realmente lo que queremos y para qué lo queremos.

Tengo la sensación (al menos a nosotros nos pasa) que estamos buscando más de una herramienta, para cubrir necesidades distintas, y esto puede confundirnos: algo que nos ayude en la gestión/organización de los documentos que generamos, algo que nos ayude a guardar el conocimiento no estrictamente asociado a los proyectos, algo que nos ayude en la gestión de los proyectos, algo que nos ayude a socializar a las personas que forma parte de un proyecto (a todos los "stakeholders"), algo que nos ayude en la gestión de los desarrollos, algo que nos ayude en la gestión de las incidencias y algo que nos ayude a localizar fácilmente toda esta información.

Yo creo que esta herramienta (super-cojonuda) no existe, o será muy cara, o muy difícil de encontrar, o muy complicada de usar, ...

La idea de mantener 7 u 8 herramientas, para cubrir todo este abanico de necesidades, creo que, puede ser contraproducente y representar más una desventaja que una ayuda.

La única posibilidad que veo es: encontrar un par (como mucho tres) de herramientas que den solución al máximo número de necesidades (o a las necesidades más importantes/críticas), que tengan un equilibrio entre potencia y sencillez de uso y que se puedan conectar entre ellas (incluso que se puedan conectar con otras herramientas corporativas).

Yo apuesto por: alfresco y una de estas:

http://openatrium.com
http://www.clockingit.com
http://www.teambox.com
http://www.fengoffice.com

Echadle un vistazo a los dos primeros enlaces, que tienen muy buena pinta.

sábado, 13 de marzo de 2010

El componente Flex Data Visualization es ahora open source

Adobe ha anunciado recientemente la disponibilidad del nuevo componente Data Visualization. Este componente ahora es ya una parte más del libre (free) y open source kit de desarrollo de Flex.

Este componente proporciona el Grid de datos Avanzado, el Grid de datos OLAP y las librerías para gráficas (charts). Desde ahora, ya no será necesario contar con la licencia de Flex Builder Professional para hacer uso de ellos.

En mi opinión, era imprescindible contar con unas librerías "oficiales" y potentes para la generación de gráficas dentro del kit de desarrollo, así que éste anuncio refuerza más la defensa que siempre he hecho de esta tecnología.

Esto, junto el apoyo que Flash está teniendo (salvo por Apple y ya sabemos lo que motiva a Apple en su no apoyo a Flash) por la comunidad, pone en serios aprietos a otras tecnologías cuya finalidad es el desarrollo de aplicaciones enriquecidas (RIA).

Un ejemplo de una tecnología, con posibilidades, que no está pasando por su mejor momento es Silverlight de Microsoft. ¿Anunciaremos próximamente el "descase en paz" Silverlight? Tal vez, tal vez,...

Ver más en:

http://opensource.adobe.com/wiki/display/flexsdk/flexsdk_announcements

Desde luego una gran noticia para los "amantes" del desarrollo Flex.

viernes, 5 de febrero de 2010

Pivot resulta interesante

Sigo en la búsqueda de la tecnología perfecta que me ayude a desarrollar aplicaciones enriquecidas para la web y escritorio. Quiero tener sólo que pensar en qué funcionalidades quiero para mi aplicativo y que la tecnología me facilite el desarrollo de estas funcionalidades, al menos que no represente un inconveniente.

En esta búsqueda he probado, en mi última etapa de "buscador" de tecnologías RIA, GWT (el kit de desarrollo de Google) y Apache Pivot.

Del primero ya os he hablado en algún artículo anterior y tengo que decir que, salvando no pocas dificultades, y, a medida que aparecen nuevas revisiones, la experiencia es muy agradecida. Aunque con GWT sólo conseguiré desarrollar aplicaciones para la web, dando al usuario la misma sensación que cuando utiliza los aplicativos "cloud" de esta compañía.

Con Apache Pivot la experiencia me sorprendió. Apache recientemente ha otorgado a esta tecnología su graduación oficial (ya va por la versión 1.4). No dedicándole mucho tiempo conseguí poner en marcha una sencilla aplicación, que se ejecuta como un applet Java en el navegador. Eso sí, tengo que decir, que de forma muy primitiva: no hay un entorno de desarrollo que nos ayude con el desarrollo de una aplicación Pivot.

El trabajo con Pivot consiste en editar el código fuente, compilar y ejecutar (a la vieja usanza). Tampoco es sencillo de depurar el aplicativo. El lenguaje es muy mejorable (parece pensado por una persona que tenía prisa por terminar) y le faltan bastantes cosas por pulir. Si JavaFX no tuviese el recorrido deseado (esto ya depende de ORACLE) sí que veo a Pivot como una tecnología que, con tiempo, puede recoger el testigo JAVA/RIA.

viernes, 22 de enero de 2010

El epitafio de Sun

Ayer la Unión Europea contestó de forma oficial (y afirmativa) a la adquisición de Sun por parte de Oracle. Parece que Oracle se ha comprometido a mantener viva, o a ayudar a mantener, de alguna forma, MySQL.

Era uno de los últimos escollos que tenían que salvar.

James Gosling, uno de los creadores del lenguaje Java en los inicios de los 90, ha publicado en su blog la siguiente nota: http://blogs.sun.com/jag/entry/so_long_old_friend

La nota viene acompañada con un dibujo que ya se está repitiendo hoy en cantidad de foros técnicos: Tux y Duke abrazados sobre la lápida de Sun, con parte de lo que fue su eslogan hace unos años "The Network is the... computer".

Sun una empresa ejemplar. Sun vaya ejemplar de empresa.

viernes, 8 de enero de 2010

Flex 3.5 y locale es_ES... por fin, Flex 3.5 en español!

Recientemente, se ha liberado una nueva versión -la 3.5- de este kit de desarrollo de aplicaciones enriquecidas de Adobe. La liberación ha pasado con más pena que gloria.

En la página principal del site de referencia http://opensource.adobe.com, en su sección de novedades, no aparece la noticia y tampoco me ha resultado sencillo encontrar la relación de cambios que incorpora este nuevo producto.

En los foros tecnológicos tampoco se ha destacado demasiado al respecto de esta presentación, quizá todos estemos a la espera de que se libere, por fin, la nueva versión 4 (Gumbo) todavía en Beta 2.

Aún con todo esto... yo he procedido a localizar al español el nuevo kit de desarrollo, que tampoco añadía ningún string nuevo a localizar realmente.

En el siguiente enlace FLEXSDK35-framework-locale-es_ES.zip
os dejo un .zip que podéis descomprimir en el directorio de vuestro Flex SDK 3.5 (primero creáis un directorio "es_ES" dentro del directorio "frameworks/locale" y luego copiáis allí los tres ficheros .swc que os dejo dentro del .zip) y simplemente añadiendo la siguiente opción al compilador "-locale es_ES" tendréis resuelto el asunto... al menos, el asunto español ;-)

También podéis modificar el fichero /frameworks/flex-config.xml para activar esta localización como la localización por defecto de vuestras compilaciones (es sencillo encontrar el lugar).

También podemos activar esta localización en el Flex Builder 3.0.2, que realmente utiliza un SDK que viene dentro del directorio "sdks" donde esté instalado este impresionante entorno de desarrollo.

Os dejo las versiones anteriores de estas "localizaciones" en: