Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.

Temas - Destructor.cs

Páginas: [1] 2
1
Debates y Reviews / Vulnerabilidades de TCP/IP
« en: Junio 25, 2019, 06:00:08 pm »

Buenas, en este artículo voy a escribir acerca de vulnerabilidades propias del modelo TCP/IP.

Recordemos que el modelo TCP/IP es un modelo de 5 capas: Capa de Aplicación, Capa de Transporte, Capa de Red, Capa de Enlace y la Capa Física.

La capa de aplicación utiliza los servicios de la capa de transporte, la capa de transporte los servicios de la capa de red, la de red los de la capa de enlace, y la capa de enlace los de la capa física.

Empezaré por vulnerabilidades propias de la capa de transporte, capa cuya función es lograr comunicar procesos de distintos hosts. En esta capa funcionan, principalmente, dos protocolos: TCP y UDP. A los mensajes enviados en esta capa se les denomina segmentos.

TCP, a diferencia de UDP, fue diseñado orientado a conexíón, esto significa que previo al envío de mensajes se debe establecer una conexión entre los dos procesos que se comunicarán. Para ello, cuando un proceso corriendo en una IP y en un puerto, se quiere conectar con otro proceso en otra IP y puerto, le envía un segmento con una flag conocida como SYN, la cual se utiliza para iniciar una conexión. En ese momento, el proceso servidor (el que recibe el intento de conexión), almacena la información necesaria para establecer una conexión con el proceso cliente (principalmente IP del cliente, puerto y el número de secuencia inicial) y le envía al cliente un segmento con la flag SYN ACK. Cuando el cliente recibe dicho segmento, almacena la información del servidor (principalmente el número de secuencia del proceso servidor) y responde con un segmento ACK.

Con estos tres segmentos (dos desde el cliente al servidor, y uno del servidor al cliente) queda establecida la conexión TCP. El problema es, ¿qué pasa si el cliente no envía el último ACK? En ese caso el servidor no "crea" la conexión, pero aún así tiene en su memoria la IP, el puerto y el número de secuencia del cliente. Un ataque que se aprovecha de esto se conoce como SYN flooding.

Los ataques de SYN flooding se basan en que el atacante le envía muchos segmentos SYN a un servidor, pero nunca un ACK, logrando que el servidor dé un error de memoria y, por lo tanto, quede fuera de servicio.

Una contramedida muy simple es que el servidor no guarde en memoria mas de una cierta cantidad de SYN's de una misma IP. Esto funcionaría si el atacante enviara segmentos con una misma IP pero, como vamos a ver más adelante, el atacante puede enviar segmentos TCP con otra IP que no sea la suya.

Pero, si el atacante puede enviar segmentos TCP con otra IP, ¿qué le impide hacerse pasar por mi en una conexión que tengo establecida?
Esto es una pregunta interesante, imaginemos que me estoy comunicando con otro proceso enviando segmentos TCP, ¿el atacante podría enviarle también segmentos TCP a ese proceso haciéndose pasar por mi?
Esto no es tan así, debido al ya mencionado número de secuencia. Para hacerse pasar por un cliente en una conexión establecida, el atacante debe enviar segmentos TCP al proceso servidor con la IP del cliente, el puerto del cliente (no son dificiles de obtener) pero también el número de secuencia del cliente, el cual no es sencillo de obtener si el cliente utiliza un número de secuencia aleatorio cada vez que comienza una conexión.

Ahora, ¿si UDP no utiliza números de secuencia, me puedo hacer pasar por otro proceso enviando segmentos UDP? La respuesta es sí.

Esto de hacerse pasar por otro (en este caso, otro proceso), se conoce como spoofing. El tema es que hacerse pasar por otro proceso no sirve de mucho, a no ser que dicho proceso y el servidor tengan una conexión abierta (el proceso servidor podría pedirle al proceso cliente que se identifique con alguna password, pero en una conexión abierta el cliente ya dió la password por lo tanto si me hago pasar por él, cuando esa conexión está abierta, sí puedo sacar ventaja), para lo cual necesitaría predecir el número de secuencia, que normalmente no es sencillo.

Ahora, ¿cómo es eso que puedo enviar segmentos utilizando la IP de otra pc?
Esto es un problema de diseño del protocolo IP, el cuál funciona en la capa de red, que es la capa encargada de lograr comunicar distintos hosts. Observemos que cada host puede tener mas de un proceso corriendo, no es lo mismo comunicar hosts que comunicar procesos. Los mensajes intercambiados en la capa de red son llamados datagramas.

Es importante entender bien el concepto de capas, y como cada una utiliza los servicios de la capa inferior. La capa de transporte asume que la capa de red sabe comunicar hosts, entonces para enviar un mensaje de un proceso a otro, crea un segmento con el puerto de origen, el puerto de destino y dicho mensaje. Luego, le dice a la capa de red: "Envía este segmento desde esta IP hasta esta otra IP" (comunicación entre hosts). Entonces la capa de red crea un datagrama, con la IP de origen, la IP de destino y en su payload lleva el segmento creado por la capa de transporte.

Volviendo al problema original, el protocolo IP no fue pensado para evitar spoofing. Cada host simplemente puede enviar un datagrama hacia otra dirección IP, y en el "campo" que indica la dirección de origen, poner otra IP que no sea la suya. Esto es muy importante, no se puede garantizar una relación IP <-> máquina, ni siquiera una relación IP <-> empresa.

IPSec soluciona este problema (hablaré de esto en próximas publicaciones) pero, aunque es obligatorio de implementar en IPv6, NO es obligatorio utilizarlo (una lástima).

Siguiendo la lógica anterior, la capa de red recibe un segmento y entonces crea un datagrama con la IP de origen, IP de destino y el segmento en su payload.

¿Qué hace con dicho datagrama?, en nuestras casas normalmente se lo enviamos al gateway (ese router que nos conecta con Internet), pero básicamente se lo enviamos a un dispositivo de capa 3 (router o host) al cual estamos conectados directamente (en la misma LAN). ¿Cómo sabemos a cual dispositivo de capa 3? utilizando tablas de ruteo, que nos indican a qué dispositivo enviarle el datagrama para que pueda llegar a su destino.

Las tablas de ruteo nos dicen a qué IP le tenemos que enviar el datagrama que tenemos, esa IP no es la misma que la IP de destino, es la IP de lo que se llama el next-hop: un dispositivo al cual estamos conectados físicamente (por un cable, o por wifi), y que sabe cómo llegar a la IP destino del datagrama.

Resumiendo, tenemos un datagrama con la IP de origen, IP de destino, y se lo tenemos que enviar a otra dirección IP, ¿cómo hacemos?. La capa inferior (capa de enlace), provee los servicios para comunicar dos equipos en la misma LAN utilizando las direcciones MAC en lugar de las direcciones IP. Por lo tanto, sólo nos falta la dirección MAC que corresponde a la dirección IP a la cual le vamos a enviar el datagrama, para eso es que se utiliza ARP (En IPv4). ARP es un protocolo que actualiza la tabla ARP local (tabla que asocia IP's con MAC's).

Básicamente ARP funciona de la siguiente manera:
1) Tengo una IP de la cual no conozco su MAC, envío una ARP QUERY de dicha IP a todos los dispositivos de la LAN (la precondición es que dicha IP sea de algún dispositivo de la red local)
2) Si me llega una ARP QUERY preguntando por una IP que es mia, le envío un ARP REPLY al dispositivo que preguntó, con mi MAC y mi IP
3) Cuando me llega el ARP REPLY actualizo mi tabla ARP


El problema es que históricamente se ha implementado de la siguiente manera:
1)  Tengo una IP de la cual no conozco su MAC, envío una ARP QUERY de dicha IP a todos los dispositivos de la LAN (la precondición es que dicha IP sea de algún dispositivo de la red local)
2) Si me llega una ARP QUERY preguntando por una IP que es la mia, le envío un ARP REPLY a TODOS los dispositivos de la LAN, con mi MAC y mi IP
3) Si me llega un ARP REPLY, aunque no haya hecho yo el ARP QUERY, aprovecho y actualizo mi tabla ARP

Otra vez hay problemas de spoofing, cualquier atacante puede enviar continuamente ARP REPLIES, con la IP de otro y su MAC, logrando que los dispositivos de su LAN contengan en sus tablas ARP la asociación (IP - MAC) incorrecta.

Observación: Las entradas de las tablas ARP tienen un tiempo de validez, cada tanto se "olvidan", por eso el atacante tiene que realizar continuamente ARP REPLIES.

¿Consecuenicas?
Algo tan obvio como Man-In-The-Middle o incluso denegación de servicio. ¿Denegación de servicio? Sí, observemos que todo datagrama IP que fuera para el dispositivo victima (el que tiene en realidad dicha IP), me va a llegar a mí, por lo tanto pierde conexión a internet.

¿Soluciones?
1) Configurar las tablas ARP estáticas en la LAN
2) Cifrar las capas superiores: Si se cifran las capas superiores todo lo que el atacante reciba (que en realidad era para mi), no lo va a poder entender porque está cifrado. No soluciona la denegación de servicio.
3) Algunos dispositivos, al recibir un ARP REPLY, si tenían en su tabla ARP otra MAC asociada a dicha IP, le envían una consulta a la MAC vieja

Cualquier pregunta a las órdenes
He intentado no entrar en detalles muy técnicos propios del modelo TCP/IP, pero cualquier duda no tengo problemas en responder

Saludos


2
BrowserStack es un servicio en la nube que te permite ver los sitios web y depurarlos como si estuvieras en las plataformas reales que te interesa probar. Es una solución muy profesional para el que no quiere perder detalle de cómo se verá un sitio en diversos navegadores y sistemas operativos.

El núcleo de BrowserStack está realizado en decenas de máquinas virtuales con diversas configuraciones y con navegadores diferentes que te permiten probar las cosas de manera absolutamente real y trabajar con las webs en directo, interactuando de manera idéntica a como lo realizarías con el navegador y sistema real.

La clave del servicio es la palabra "real". No se trata de emuladores que te muestran una interfaz y funcionalidades, dimensiones de pantalla, etc. imitando las del sistema que quieres probar. Lo que tienes aquí es el propio sistema, virtualizado en la nube, al que puedes acceder, ver el resultado de la renderización del documento e interaccionar para probar la web trabajando con ella en vivo con el sistema operativo y el navegador de cada sistema que te interese probar.

A través de la aplicación puedes acceder de manera instantánea, sin que tengas que configurar nada, a decenas de navegadores de ordenadores de escritorio y dispositivos. Con ello te ahorras tener esos sistemas en tu poder físicamente, o te ahorras el tiempo, espacio en disco, recursos de máquina para virtualizarlos en tu ordenador.

Además tiene varias "fórmulas" en las que puedes probar el sitio web, interaccionando en directo (Live), probar automatismos y testing funcional como los que haces con Selenium y también  para que te entregue simplemente los screenshots de aquellos dispositivos o sistemas que necesites.

La herramienta es fantástica sobre el papel y merece la pena probarla (tienen trial gratuito), pero debemos admitir que su único defecto es el precio. La verdad, todo depende del partido que le podamos sacar, pero en principio puede resultar un poco caro para algunos desarrolladores independientes. Pero siempre puedes contrartarlo el mes que lo necesites y dejar de pagarlo en los meses que no lo uses, aprovechando las ventajas de los servicios de Cloud Computing.

Para más información de esta herramienta imprescindible para el testing de sitios web, puedes ir a la propia página del producto:

https://www.browserstack.com

3
 Hack es un lenguaje de programación para el desarrollo web creado por los desarrolladores de Facebook que tiene una pinta excelente por diversos motivos. Primero porque se basa en la sintaxis de PHP, facilitando su adopción a los desarrolladores que ya tienen una amplia experiencia en ese lenguaje. Segundo porque mejora algunas carencias de PHP que el equipo de Facebook considera importantes de solucionar para mejorar la productividad de los programadores. Tercero, porque se ejecuta sobre una máquina virtual que permite un rendimiento mucho mayor de los sitios web.

Si eres de los impacientes, visita http://hacklang.org/

Hack es un lenguaje que se parece tanto a PHP como hasta para hacernos entender que es el propio lenguaje, pero que tiene una serie de añadidos que facilitan el desarrollo y evitan pérdidas de tiempo derivadas de problemas comunes con PHP. El cambio más representativo es la incorporación de tipado estático, característica de los lenguajes fuertemente tipados. Sin embargo, tampoco abandona el tipado dinámico, característica de PHP, por lo que podríamos decir que tiene un "tipado gradual".

Pero además agrega otras cosas como la parametrización de clases, para que al crear instancias de éstas puedas definir el tipos que vas a usar dentro sus atributos o parámetros de los métodos. Tipos primitivos a los que le agrega la posibilidad de tener el valor null, colecciones, closures, Shapes, soporte para asincronía, etc.

Está optimizado porque Hack se ejecuta sobre una máquina virtual llamada HHVML, la cual es también compatible con PHP. El lenguaje ha sido liberado como open source, por lo que cualquier interesado lo puede usar sin problemas.

Máquina virtual HHVM

Pero lo más interesante a mi juicio es la incorporación de HHVM que es una máquina virtual de código abierto que está diseñada para ejecutar programas escritos en Hack y PHP. HHVM implementa lo que llaman compilación Just-in-time, lo que permite que las facilidades de desarrollo de Hack o PHP bajo HHVM sean exactamente las mismas que si trabajas con PHP tradicional.

Para usar Hack requieres necesariamente de pasar por esa máquina virtual. Pero si te estás preguntando ¿para qué quiero una máquina virtual para ejecutar PHP? tienes que saber que con PHP también ganarás. Esto es gracias al JIT Compiler, que es un módulo que compila el código PHP directamente a C++. En resumen, es un código binario que podrá aumentar sensiblemente el desempeño del intérprete común de PHP.

Según comentan, esta máquina virtual es capaz de ejecutar casi todo el código PHP, excepto algunas partes obsoletas y otras que deliberadamente han dejado fuera. Dicen que HHVM es capaz de ejecutar sin problemas los 20 frameworks PHP más populares en Github.

Conclusión

La verdad es que, lejos de reinventar la rueda, los creadores de Hack han tenido buenas ideas que pueden servir de utilidad a los que se decidan a adoptarlo como lenguaje. Permitiendo además que todos los creadores de código en PHP tengan una rapidísima adaptación y mejoras en el trabajo del día a día.

Pero sobre todo, el hecho de liberar la máquina virtual para aumentar el rendimiento de los sitios web desarrollados en PHP, y hacer que ésta sea compatible tanto con Hack como con PHP es un punto que estratégicamente dice mucho a favor del lenguaje y que entendemos que va a mover en masa a la comunidad a probarla e implantarla dentro de sus servidores web.

Lógicamente, debemos seguir de cerca este lenguaje, que tiene muy buen comienzo y excelente filosofía. Hace escasas 24 de su liberación y quizás sea un poco pronto para adoptarlo, hasta ver la respuesta que la comunidad y confirmar si su compatibilidad es tan grande como ha sido anunciada. Pero en breve creo que podremos aprovecharnos de estas herramientas, que consideramos como un aliado para PHP, el lenguaje Web más extendido.

Fuente: desarrolloweb.com

4
Dudas y pedidos generales / [SOLUCIONADO] Limpiar el disco
« en: Marzo 12, 2014, 08:49:23 pm »
Mi problema es el siguiente, según tengo entendido los archivos en si no se borran, simplemente son como suplantados, es por eso mismo que se puede utilizar recuperadores de archivos.

Lo que yo quisiera es eliminar todos esos datos suplantados, no los actuales, los viejos que una vez borre elinarlos permanentemente

Espero que me puedan ayudar
Saludos
Destructor

5
Back-end / Mejores prácticas en PHP
« en: Diciembre 19, 2013, 08:19:51 pm »

Navegando por la web me encontré con una página muy interesante para mejorar la prática en PHP. Si bien PHP posee una gran variedad de características que al final pueden mejorar el tiempo de desarrollo, estas pueden generar un código no muy agradable y que además puede estar lleno de lineas que afecten el rendimiento o la seguridad de nuestra aplicación.

PHP Best Practices da recomendaciones para las tareas más comunes dentro de este lenguaje y así evitar dichos problemas:

    Almacenamiento de claves
    Acceso a MySQL
    Utilizar ” ó ‘
    Memcached
    Regex
    Envío de email
    Validaciones
    Sanitización de HTML
    UTF-8

Personalmente creo que es de mucha ayuda, y me pareció explendido.
Espero que le sea a útil a toda la comunidad

Dejo aquí el link de la web: https://phpbestpractices.org 

6
Cualquiera que ande dando vueltas por internet e investigando habrá escuchado alguna que otra vez algo llamado Progrmacion Orientada a Aspectos y en su intento por aprender de que se tratara tendría como resultado dolor de cabeza, ya que la documentación que hay sobre el tema es muy poco entendible! (y mas para gente de mi edad)

Aún asi, yo he seguido investigando y he encontrado un gran tutorial para iniciarse, el cual estaba en ingles y hoy me he decidido a compartirlo con la comunidad, dandome la molestia de traducirlo para ustedes

Espero que sea de gran ayuda para todos:

Introduccion:

AOP (Programacion orientada a aspectos en ingles) es una extención de PECL que nos da la posibilidad de usar Programación Orientada a Aspectos en PHP, sin la necesidad de compilar o realizar algun otro paso intermedio antes de publicar tu código.

La extención AOP esta diseñada para ser la manera mas facil en la que podemos pensar a la hora de incluir Programacion Orientada a Aspectos en PHP

La POA tiene como objetivo permitir la separacion de funcionalidades transversales (caché, logs, seguridad, memoria, etc)


 Tutorial basico:

Mira la siguiente clase:

Código: (php) [Seleccionar]
<?php
    
class MyServices
    
{
       public function 
doAdminStuff1 ()
       {
          
//some stuff only the admin should do
          
echo "Calling doAdminStuff1";
       }

       public function 
doAdminStuff2 ()
       {
          
//some stuff only the admin should do
          
echo "Calling doAdminStuff2";
       }
    }
?>

Ahora quieres que tu código sea seguro, solo quieres que los administradores puedan llamar a los metodos doAdmin.

¿Qué soluciones existen?
 -Añadir algo de codigo para chequear credenciales dentro de tu clase. Lo malo es que va a ensuciar tu código y tu servicio se va a volver menos legible
-Deja la responsabilidad de chequear las credenciales a los usuarios cuando se requiera. El punto negativo es que vas duplicar tu código del lado del cliente si tienes que llamar al servicio de diferentes lugares
-Agrega una especie de proxy el cual chequearía las credenciales antes de llamar al servicio actual. El lado negativo es que tendrías que escribir código extra, agregando otra clase en la parte superior del servicio!

Mas aún, estas soluciones suelen incrementar su complejidad a medida que agregas mas funcionalidades tranversales!

Aquí es donde la POA entra en juego dandote la posiblidad de decirle a PHP que haga algunas acciones extras a la vez que llama a los metodos de nuestro servicio

Primero escribiremos el código el cual verificará si somos capaces de llamar al servicio del administrador
Código: (php) [Seleccionar]
<?php
    
function adviceForDoAdmin ()
    {
       if ((! isset(
$_SESSION['user_type'])) || ($_SESSION['user_type'] !== 'admin')) {
          throw new 
Exception('Sorry, you should be an admin to do this');
       }
    }
<?
El código es simple, verifica si hay algo que nos diga si el usuario que esta intentando acceder al servicio es un administrador! Seguramente a la hora de verifcar usted haga uso de un código mas complejo, aún asi, este sirve para esta pequeña demostración!

Ahora simplemente usaremos la extención para que ejecute este código antes de intentar ejecutar cualquier método de nuestro servicio
Código: (php) [Seleccionar]
<?php
    aop_add_before
('MyServices->doAdmin*()''adviceForDoAdmin'); 
?>

Ahora cada vez que intentemos ejecutar un método de nuestro servicio, AOP hará que se ejecute la funcion para verificar si en verdad es un administrador!

¿No es realmente simple?
Ahora probemos nuestro servicio:

Código: (php) [Seleccionar]
<?php
    
//session is started and we added the above examples to configure MyServices & basicAdminChecker

    
$services = new MyServices();
    try {
       
$services->doAdminStuff1();//will raise an exception as nothing in the current session tells us we are an admin
    
} catch (Exception $e) {
       echo 
"You cannot access the service, you're not an admin";
    }

    
$_SESSION['user_type'] = 'admin';//again, this is ugly for the sake of the example

    
try {
       
$service->doAdminStuff1();
       
$service->doAdminStuff2();
    } catch (
Exception $e) {
       
//nothing will be caught here, we are an admin
    
}
?>

Extraido y traducido de: https://github.com/AOP-PHP/AOP/wiki

7
Ideas y Sugerencias / Sugiere un nuevo servicio para Underc0de
« en: Agosto 02, 2013, 07:31:35 pm »
Bueno, como pueden ver los recursos han crecido, hoy en dia contamos con el pequeño "centro de descargas" de nuestras tools (http://underc0de.org/tools.html), la galeria de wallpapers (http://underc0de.org/galeria.html), la coleccion de shells (http://underc0de.com/shells/) y la biblioteca (http://underc0de.com/biblioteca/). Además, dentro de poco se lanzaran algunos otros que ya estan en sus etapas finales, asique invito a todos a estar atentos!

Para continuar con nuestro crecimiento Underc0de les invita a sugerir un nuevo recurso del cual me haré cargo y prometo hacerlo lo mas rápido posible!
Espero que en realidad se inspiren
Saludos a toda la comunidad

8
Bueno amigos, ahora que tengo tiempo empezare a postear mas en la comunidad!
Para hoy les traigo algo basico pero que ayuda mucho a los que recien se inician

La mayoria de las paginas webs modernas (por no decir todas) estan centradas gracias a un container!

¿Que es un container?
Un container es un div, el cual contiene toda la pagina web, lo que caracteriza al container es que lo que hace es centrar la pagina web, ubicarse en el centro lo que ocaciona que al cambiar de resoluciones la web se mantenga en el centro con una medida fija

Primero que nada vamos a crear una web simple, con un fondo gris:
Código: (html5) [Seleccionar]
<html>
   <head>
         <title>Prueba</title>
          <style>@import url("CSS/Estilo.css");</style>
    </head>
    <body bgcolor="#e9e9eb">
           <div id="container">
            </div>
     </body>
</html>
Lo que hacemos es simple, creamos una pagina HTML, con un fondo gris, una div con id container y llamamos a un archivo CSS el cual contendra el estilo
En el archivo Estilo.css que se encuentra en la carpeta CSS escribiremos el siguiente:
Código: (CSS) [Seleccionar]
#container{
    position: relative;
    margin-right: auto;
    margin-left: auto;
    top: 50px;
    background-color: white;
    width: 800px;
    height: 700px;
}

En el archivo css lo que hacemos es simple, a la div container le agregamos algunos estilos. Las primeras tres lineas de codigo son las que hacen que la div se encuentre en el centro. Luego le agregamos un top para que tenga separacion con la parte superior, le damos un fondo blanco para distinguirlo y un width y un height (cada uno le asigna lo que quiera) que serian el ancho y la altura en px!

Podemos ver el resultado en la siguiente imagen:


y si achicamos el zoom:


Lamentablemente no se puede distinguir mucho el fondo en la pagina de underc0de, igual lo pueden hacer con cualquier editor de texto
Pueden probar colocando formularios dentro del container o lo que quieran
Espero que le sirva a toda la comunidad
Un saludo

9
Dudas y pedidos generales / [SOLUCIONADO] Problemas al instalar apache
« en: Julio 16, 2013, 08:10:32 pm »
El otro dia me decidi a instalar apache en mi pc, hacia tiempo atras lo habia logrado pero ya que le daba poco uso lo desinstale!
Hace pocos meses formatié la pc y le cambie el SO. Hoy me decidi a instalarlo ya que lo necesito y en la instalacion me aparecio esto:



Lo desinstale y lo volvi a instalar un par de veces y siempre lo mismo. El resultado de esto es que me instala apache, pero cuando lo voy a iniciar me sale un cartel que dice "the requested operation has failed" sin ningun tipo de informacion adicional ni nada!

Trabajo con windows 7, lo que esta tapado en rojo es mi IP PRIVADA, no la pública

Desde ya, muchisimas gracias por su ayuda!
Saludos
Destructor

10
Off Topic / (No apto para fracasados)
« en: Julio 14, 2013, 08:13:02 pm »
Bueno amigos, el otro dia en facebook me he encontrado con este video. La verdad está MUY bueno, creo que sirve de inspiracion para muchos asique me gustaria compartirlos con ustedes...


11
 

Flipclock es una biblioteca javascript para la implementación de distintos relojes, contadores o alarmas en nuestro proyecto web.

Especialmente útil para el lanzamiento de nuevos productos o eventos, Flipclock logra de manera ágil y sencilla llamar la atención de nuestros usuarios sobre la llegada de alguna novedad.

Este proyecto que requiere jQuery 1.7 o superior y prefixfree.js, se puede personalizar utilizando hojas de estilo, y dispone de una sintaxis sencilla que permite su aprovechamiento por casi cualquier desarrollador web.

Por si fuera poco, Flipclock ofrece completa documentación, características y ejemplos desde la página web oficial del proyecto.

Interesados pueden acceder a más información y descarga de Flipclock desde flipclockjs.com.

12
Seguridad web y en servidores / [ACLARACION] Tipos de servidores
« en: Mayo 27, 2013, 05:36:50 pm »
Hola a toda la comunidad
Hoy les traje una aclaracion sobre los tipos de servidores ya que he visto que hay muchisima confusión! sobre todo entre los VPN y los Cloud Server...
Para ello me he tomado la molestia de diseñar una simple imagen, que con un pequeño texto les dejarán las cosas muchisimo mas claras...

Primero la imagen:




Por si no queda claro una brevisima explicacion:

Un servidor VPS (Virtual Private Server) es una porción de un servidor dedicado. Esto quiere decir que aunque parezca que está sobre un servidor dedicado para usted, está utilizando sólo una parte de un servidor compartido con otros clientes.

Entre un VPS y un grid hay muchas diferencias, pero entre un grid y un cloud, la única diferencia obvia es que el cloud debiera contar al menos con 2 clusters de nodos independientes, algo que muchos proveedores no están ofreciendo aún y hablan de "cloud" cuando en realidad son "grid", lamentablemente no todos publican información técnica detallada de su infraestructura.

13
Ideas y Sugerencias / [PROPUESTA] Taller de Linux
« en: Mayo 15, 2013, 01:50:26 pm »
Simplemente quise proponer la idea de que alguien hiciera un taller de linux, enseñando lo basico, caracteristicas, ventajas, una breve introduccion, como manejar la consola, para que sirve esta, instalacion de programas, etc!

14
Back-end / Anti CSRF
« en: Mayo 01, 2013, 10:14:15 pm »
Bueno, aqui les traigo una manera muy facil de evitar ataques CSRF con la utilización de los llamados "tokens" en PHP!
El formulario donde se crea y se envia el token seria el siguiente:
Código: (php) [Seleccionar]
<html>
   <head><title>Formulario</title></head>
   <body>
        <?php> $_SESSION["token"] = md5(uniqid(mt_rand(), true));  //creamos el token aleatoriamente y lo guardamos en la sesión
        echo '<form name="formulario" action="receptor.php?token=' . $_SESSION["token"] . '" method="post">' ?>
//abrimos la etiqueta form, le damos un name, le ponemos que enviaremos los datos por post, y aprovechamos para mandar el token por GET
                 <input type="text" value="Ingrese algo" name="dato">
        </form>
   </body>
</html>

Con ese codigo ademas de enviar el dato del campo por POST, creamos un token el cual guardamos en la sesion, y el mismo token lo usamos para enviarlo por GET. En la siguiente pagina, comprobaremos el token recibido por GET con el token guardado en la sesion, ademas recibiremos lo que nos envio e imprimiremos el dato recibido en pantalla:

Código: (php) [Seleccionar]
<html>
   <head> <title> Receptor </title> </head>
   <body>
        <?php
             $dato 
$_POST["dato"];
             
$token1 $_GET["token"];
             
$token2 $_SESSION["token"];
             if (
$token1 == $token2){
                    echo 
$dato;
             }else{
                    echo 
'¿Que intentas hacer?';
            }
       
?>

   </body>
</html>

15
E-Zines / Nueva entrega HDMagazine Nº 6
« en: Abril 23, 2013, 08:52:24 pm »


La revista HDMagazine ha cumplido como de costumbre, y a casi un mes de su anterior revista a expuesto la nueva entrega.

Nos comenta Eugenia Bahit, arquitecta de software, docente en diversas tecnologías y una de las fundadoras de este proyecto de formación que esta nueva edición al igual que los mejores perfumes, viene en frasco pequeño y lo dice porque aunque se ha reducido ligeramente el número de artículos respecto a la versión anterior, la calidad de los mismos no deja lugar a dudas.

La sexta edición de Hackers & Developers Magazine nombre en código "Faraon" continua con el manual de ArchLinux al que se le suma la instalación y configuración de un entorno LEMP, siendo Ngnix y MariaDB (un fork 100% GPL de MySQL) las principales estrellas.

Además se integran una serie de artículos sobre administración de sistemas GNU/Linux pero, orientados a programadores y se está preparando una serie de artículos dedicada a la programación orientada a administradores de sistemas.

Otros de los artículos más destacados de esta sexta edición, son:
la guía para distribución de aplicaciones y paquetes Python a través del repositorio oficial PyPI (http://pypi.python.org)
la presentación de una excelente herramienta online para crear y compartir desde diagramas de clases y otros diagramas UML hasta Mockups!
y una completa guía sobre refactoring que será publicada en dos partes (la primera en esta edición).

Descarga en: http://hdmagazine.org/ o https://mega.co.nz/#!olgn3ayb!ITKt3Ek-dNctimpyJ9KjKmdVqxEonLtgPd0m32SHCl4


Referencias: desarrolloweb.com

16
Android / Bitdefender lanza un antivirus gratuito para Android
« en: Abril 13, 2013, 09:10:48 pm »
Bitdefender Antivirus Free llega a Google Play. Bitdefender lanza su antivirus gratis para Android para proteger nuestros terminales de todo tipo de amenazas.

El principal argumento de los desarrolladores para que instalemos su app es el prácticamente nulo consumo de batería que han conseguido, a pesar de que la protección se ejecuta en segundo plano continuamente.
El precio que tiene que pagar para ser tan ligera es la falta de opciones. Bitdefender Antivirus Free opta por ofrecer una sola opción y centrarse en ella: un escáner de malware para tener nuestro smartphone Android siempre protegido.



Si queremos ese grado de protección extra, Bitdefender cuenta con otras aplicaciones de seguirdad, todas ellas gratuitas: Safebox, Parental Control, Anti-Theft, entre otras.

Descarga: http://bitdefender-antivirus-free.softonic.com/android

17
Base de Datos / Introduccion a NoSQL
« en: Febrero 15, 2013, 01:45:53 pm »
Las bases de datos NoSQL no pretenden reemplazar a las relacionales únicamente son otra opción de almacenamiento de datos. Cabe destacar que su arquitectura distribuida, flexibilidad en su estructura, escalabilidad y el manejo de enormes cantidades de datos son algunas de las características por las cuales se han vuelto cada vez más populares.

El término NoSQL (“not only SQL”) fue utilizado por primera vez en 1998 para referirse a una base de datos (BD) de código abierto que no ofrecía una interfaz SQL pero sí utilizaba el modelo relacional y, fue en el 2009 que Eric Evans retomó el término cuando Johan Oskarsson quiso organizar un evento en San Francisco para discutir el tema de las bases de datos distribuidas de código abierto; este tipo de BD suelen no proveer garantías ACID, término que hace referencia al conjunto de características necesarias para que ciertas instrucciones se consideren como una transacción.

ACID es un acrónimo de Atomicity, Consistency, Isolation y Durability que en español es Atomicidad, Consistencia, Aislamiento y Durabilidad.

El primer concepto es la propiedad que asegura que todas las operaciones hayan sido terminadas (commit). La consistencia es cuando se asegura que solo se inicien transacciones que se puedan terminar, es decir, se pasará de un estado válido a otro válido sin “romper” con reglas o directrices que afecten la integridad de la BD.

El aislamiento es la propiedad que verifica que una operación no afecte a otras, siendo que dos transacciones ejecutadas al mismo tiempo sean completamente independientes sin afectar a alguna otra que se encuentre en ejecución.

Y por último la durabilidad se refiere a que una vez realizada la operación ésta persista y exista sin importar los fallos del sistema.

La característica más importante de NoSQL es que no impone una estructura de datos en forma de tabla y relaciones entre las mismas, es decir debemos olvidarnos de un esquema rígido y sin cambios, en este caso es más flexible ya que permite almacenar información de forma clave-valor (Cassandra, Riak, etc), documentos (CouchDB, MongoDB, BaseX, etc), mapeo de columnas o grafos (Neo4j, InfoGrid, HyperGraphDB, etc).

Actualmente las BD de tipo NoSQL han tomado mayor popularidad debido a que son utilizadas por las principales redes sociales como Facebook y Twitter por mencionar algunas, ¿y a qué se debe esto?, principalmente porque pueden manipular grandes cantidades de datos de una forma muy rápida y están preparadas para escalarse horizontalmente sin perder rendimiento alguno.

La escalabilidad es un término utilizado para referirse a la propiedad de aumentar la capacidad de trabajo o tamaño de un sistema sin que sea comprometida su funcionamiento y calidad, lo cual puede ser de manera vertical u horizontal. El primero se refiere a actualizaciones o modernización de los componentes que ya existen y el segundo, a cuando se aumenta el número de componentes; para el caso de NoSQL podemos incrementar el número de nodos.

¿Cuando se debe utilizar una base de datos NoSQL?

Aunque tenemos ventajas con NoSQL no debemos intentar reemplazar las bases de datos relacionales ya que dependiendo de las necesidades del proyecto es aquella que debemos utilizar o en algunos casos ambas; a continuación te planteo ejemplos reales para que quede más claro este punto.

Punto de venta. Para este sistema se requieren vínculos comprador-venta, costos, historiales, facturación, etc, por lo que no sería posible eliminar las relaciones y tampoco es necesario cambiar la estructura de nuestras tablas. En conclusión, NoSQL no es una opción.

Control escolar. De la misma manera que la anterior contamos relaciones alumnomaterias, maestro-grupos entre otros, por lo que NoSQL tampoco sería una opción.

Red Social. Es una aplicación de gran escala, lectura/escritura de enormes cantidades, servicio a millones de usuario, información cambiante; cabe mencionar que pueden existir relaciones usuario-usuario, siendo posible almacenar cierta información en NoSQL y otra en SQL.

Referencias: hdmagazine

18
Zona Webmaster / [HERRAMIENTA] El mejor editor web
« en: Febrero 14, 2013, 11:06:06 pm »
Hola underc0der, hoy les traigo lo que es para mi, el mejor editor web actual! Sin mucho mas que decir comenzemos:



Komodo Edit es un editor multilenguaje especialmente pensado para programadores de sitios o aplicaciones web.

Con él, puedes programar con total libertad dejando que el editor, por sí solo, se encargue de diferenciar por colores los comandos de cada una de tus líneas. Además, incorpora un sistema de auto completado para mejorar la velocidad de tu escritura.

Incluye un validador de sintaxis, funciones para trabajar con pestañas, clasificar proyectos e incluye las herramientas de edición necesarias para buscar, reemplazar, cortar y pegar cadenas de caracteres.

Como lenguajes, es capaz de identificar y colorear comandos de Ajax, CSS, HTML, JavaScripty XML; Perl, PHP, Python, Ruby y Tcl.

DESCARGA: http://www.activestate.com/komodo-edit

19
Off Topic / La Mona Lisa en CSS
« en: Febrero 14, 2013, 08:48:33 pm »
¿Quién dijo que la programacion no es un arte? CSS es uno de los lenguajes de programacion mas convenientes para dar estilo a una web, sin embargo, cuando este lenguaje no se esta usando en ninguna web, hay personas que se dedican a crear objetos con el, desde figuras geometricas, hasta uno de los cuadros mas famosos del mundo: La Mona Lisa...

Jay Salvat parece ser el "da Vinci" del siglo XXI, y ha creado la mismisima Mona Lisa con sombras de CSS como un ejercicio de experimentacion. La Mona Lisa, que esta creada gracias a mas de 7500 lineas de codigo ha llamado rapidamente la atencion de desarrolladores y diseñadores web!

Sin mucho mas que decir les dejo aqui la gran obra de arte: http://codepen.io/jaysalvat/pen/HaqBf

20
Bueno comunidad de underc0de, hoy les traigo un post publicado hace ya un tiempo por softonic que me parece sumamente interesanteee! La verdad es que si publico el post por aca pierde parte del diseño y no queda muy bieen, asique les dejo el link por aca:

http://onsoftware.softonic.com/programas-lineas-codigo

Espero que les gustee el post, comenten que les parecio! Saludos atodoos

Páginas: [1] 2