Suscribirse al Feed
31Jul

del.icio.us 2.0

Al fin ha salido de estado beta el nuevo estilo del famoso marcador social: delicious.com. Para el que no lo conozca, es un sitio donde guardas la URL de tus páginas favoritas y las compartes con los demás usuarios. La verdad lo uso mucho puesto que tengo muy mala memoria y se me olvidan muy facilmente los sitios que visito.

delicious captura pantalla

Bonus...

gscrot

01Oct

JavaScript para hackers

He leído una entrada de Gareth Heyes (la escribió el dia de mis cumpleaños XD), en el blog The Spanner, en donde se trata un tema que me gusta bastante: Hacking con JavaScript.

Para los que no sepan qué es JavaSript pueden hechar una ojeada en la Wikipedia, para una referencia rápida. JavaScript es un lenguaje ampliamente usado en la Web, y más aún cuando las aplicaciones Web 2.0 usan AJAX para casi todo, a tal punto que cada vez de desarrollan más FrameWorks especiales para dicha tarea.

Por tal motivo me gustaría compartir con ustedes algunas cosas interesantes, que tomo del post de Gareth Heyes, en cuanto a algunas características de JavaScript que nos ayudarán cuando estemos buscando bugs XSS, por ejemplo. Comencemos!

¿Qué puedes hacer si no es posible usar eval()?

En Javascript puedes guardar referencias a funciones nativas en vairables, de modo que puedes hacer lo siguiente:

x=eval;
x();// llamar eval

En navegadores basados en el motor Gecko también te permiten llamar la función eval así:

0['eval']('alert(/XSS/)')

Por lo que puedes hacer cosas cómo (solo usa tu imaginación):

0['ev'+'al']('alert(/XSS/)');

Trabajando con caracteres/palabras...

Javascript soporta varios tipos de codificación que te permiten representar diferentes caracteres. De esta forma, el siguiente ejemplo crea la conbinación función eval y alert:

alert('\141\154\145\162\164\050\061\051')

Ya que \141 se traduce en ‘a’ etc, cuando tienes un string en javaScript usando “” or ” puedes usar caractéres UNICODE, entonces, cuando JavaScript encuentra el caracter ‘\’ este será convertido a una letra, dependiendo de su código.

Codificación Hexadecimal también puede ser usada así:

alertString = 'a\x6cert(1)';

Puedes también usar eval para que convierta el caracter por tí, por ejemplo en siguiente código produce la letra ‘a’:

harNumber = 141;
stringQuote = "'";
backslash = "\\";
alert(eval(stringQuote + backslash + charNumber + stringQuote));

¿Cómo hacer llamadas a funciones anónimas?

JavaScript te permite invocar funciones cuando usas ‘()’, pero también puedes lo puede usar para realizar invocaciones a funciones anónimas, así:

new Function('alert(1)')();

El código de arriba crea una nueva función anónima y pasa el string ‘alert(1)’ que se incrustó en la función recién creada, lo que luego ejecuta la función. Puedes también combinar las técnicas mencionadas, usando por ejemplo codificación de caracteres en el parámetro que recibe la nueva función, de hecho, no es necesario especificar la palabra reservada ‘new’:

Function('a\x6cert(1)')();

¿Qué puedes usar como nombre de variables?

Javascript no es muy estricto en cuanto a nombres de variables, por lo que se pueden declarar variables con el caracter ‘_’, incluso ‘$’ puede ser usado como nombre de variable.

¿Cómo puedes crear un String?

Los Strings son definidos usando String(), ” y “” etc. Lo que tal vez no sepas, es que las expresiones regulares pueden también ser usadas para crear un string, como en el siguiente ejemplo:

newString = /XSS/.source;
newString = /XSS/ + '';
newString = newString[1] + newString[2] + newString[3];

Necesito usar un caracter pero no está permitido, ¿cómo le hago?

Piense alrededor del problema, en vez de intentar acceder al caractér directamente, obtenga la información de otra fuente. Supongamos que quieres el caractér dos puntos (:), es un ejemplo, y haz intentado de codificando caracteres pero no lo haz logrado... puedes entonces usar la propiedad URL para obtener ésta información. Ejemplo:

alert(document.URL.substr(4, 1));

¿Hay alguna forma de ejecutar JavaScript en CSS?

Firefox tiene unas pequeñas características que permiten una ejecución inusual de Javascript, entre ellas está la extensión CSS -moz-binding que te permite enlazar documentos XML usando CSS. Por ejemplo:

<p style=-moz-binding:
url(http://www.businessinfo.co.uk/labs/xbl/xbl.xml#xss);>
Test</p>

¿Cómo puedo usar XML con Javascript?

Firefox ahora soporta XML en el código Javascript, puedes por ejemplo incluir etiquetas de esta manera :

testXML = <s>Test XML string</s>;
alert(textXML.text());

Enlaces de interés:

21Sep

10 razones por las que Java apesta

Me he leído una entrada en JavaHispano, donde se habla de un artículo de Obie Fernandez titulado "Top 10 reasons why Java sucks ass". Y la verdad de las diez razones, pienso, 9 son estúpidas y solo una (la 6) tiene algo de sentido (al menos temporalmente). Copio y pego la entrada de JavaHispano:

Como podrás ver muchas de sus razones no tienen sentido alguno pero en mi opinión son una muestra del tipo de ideas preconcebidas existentes en el mundo del desarrollo de software contra Java. Aquí va la lista:

"1) Java tiene un compilador. Al demonio con los compiladores y su falso sentido de seguridad. Con demasiada frecuencia código malo es subido e incluso desplegado en servidores simplemente porque es compilado. En ruby no tenemos ese lujo." Si alguien entiende este punto que me lo explique. Supongo que tiene que ver con que a menudo se confía en los compiladores para que nos indiquen errores u optimicen el código mientras que en lenguajes interpretados es el programador quien realiza esa labor.

"2) Lo creadores de los frameworks Java no son desarrolladores de aplicaciones." Pone como ejemplo a los empleados de JBoss. Bueno, este punto es tan estúpido que no vale la pena debatirlo. Creo que la gran mayoría de los frameworks Java han sido creados por desarrolladores de aplicaciones buscando facilitarse la vida.

"3) La mayoría de los programadores Java son tontos". Aquí el brillante autor realiza simple estadística, dice que si hay 2 millones de programadores Java, es imposible que todos sean buenos porque el número de buenos programadores en el mundo es menor. Sin comentarios.

"4) Java está demasiado fragmentado". Por fin un buen argumento, ese sí es un problema real de Java: demasiadas opciones que confunden a los principiantes sobre el camino a seguir. Pero decir que Ruby es mejor porque solo tiene Rails me parece una tontería. Basta ver lo que paso con Twitter donde Rails no pudo con la escalabilidad y se tuvieron que crear un framework propio.

"5) Java es demasiado lento". Otra idea preconcebida que data de los tiempos de java 1.2 y 1.3; pero sobre todo un argumento muy raro para defender a Ruby que es más lento incluso que Groovy que a su vez es 30 veces más lento que Java.

"6) Java no tiene blocks ni closures". Bueno, closures los tendrá a partir de la 7,

"7) Java tiene IDEs. (...) Todos saben que los buenos programadores usan VIM o Emacs. (..). Si necesitas un IDE no sirves, punto". ¿Alguién quiere debatirlo? Si las herramientas existen, úsalas. Si te permiten desarrollar en menor tiempo y cometer menos errores, ¿por qué no?.

"8) Java tiene buen soporte para debugging. (...) Ruby tiene un soporte ridículo para debugging, lo que quiere decir que nuestro código debe ser probado y legible". Supongo que este punto es una broma.

" 9) Java genera mucho dinero para las empresas". Un buen punto a debatir, ¿hasta qué punto los intereses corporativos han ayudado o perjudicado el mundo Java? Al parecer el mundo Java tiene su mayor fuerza en los proyectos open source y en los desarrollos independientes que han moldeado en gran medida el lenguaje y la forma en que lo usamos. Por ejemplo, las empresas han apoyado EJB2 (incluyendo esos horribles EJB de entidad), JSQL, BPEL; mientras que los desarrolladores los contenedores ligeros, el ORM y el uso intensivo de POJOs. ¿Qué es lo que usamos actualmente en nuestros desarrollos?

"10) Java no tiene a DHH." DHH-> David Heinemeier Hansson, el creador de Ruby. Pues no, no lo tiene ..¿y?.

En fin, bastante encendida y llena de ideas preconcebidas esta lista. La verdad nunca he entendido porque los de Ruby siempre han criticado con tanto ahínco a Java, vamos creo que ni Microsoft y eso que es su verdadero rival, mientras que Ruby tiene un mercado un tanto distinto (más enfocado a creación de aplicaciones web 2.0, mientras que Java si bien sirve para eso obtiene sus mayores ingresos de aplicaciones empresariales -basadas en la web o no- y móviles).

La lista también está siendo debatida en Javalobby quienes han propuesto su lista por las que Ruby sucks ass.

Sin comentarios...

28May

Acerca de OpenJavaDay - OpenSolarisDay

No, esto no es un video tutorial XD... es un vídeo acerca de OpenJavaDay y OpenSolarisDay, copio y pego información:

Sun Microsystems y las Comunidades Abiertas de Java y OpenSolaris te invitan al OpenJavaDay - OpenSolarisDay, que se celebrará el próximo dÍa 31 de Mayo, en la Universidad Carlos III de Madrid (campus de Leganés), un encuentro que constituye la décima edición en España de la sesión para desarrolladores.

Concebido como un foro abierto de carácter tecnológico, reunirá a los principales expertos para que compartan las últimas novedades sobre JavaFX, NetBeans, Glassfish, OpenSolaris, OpenJDK, BPEL, OpenESB y SOA entre otras muchas.

El objetivo: hacer realidad la Era de la Participación, promovida por Sun, en el que las Tecnologías Abiertas cobran protagonismo gracias a las Comunidades que se crean en torno a ellas, dando un valor social a los usuarios, y haciendo posible la Web 2.0.

Bonita manera de hacer publicidad, no creen?

22Feb

Noticias…

© 2007 - 2008 Dezinerfolio. Todos los derechos reservados.
Powered by Wordpress. Entradas RSS