Menú

Mostrar Mensajes

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

Mostrar Mensajes Menú

Temas - Destructor.cs

#1

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:

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
#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 No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

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: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
#4
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
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: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta 
#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
<?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
<?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
<?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
<?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: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
#7
Bueno, como pueden ver los recursos han crecido, hoy en dia contamos con el pequeño "centro de descargas" de nuestras tools (No tienes permitido ver los links. Registrarse o Entrar a mi cuenta), la galeria de wallpapers (No tienes permitido ver los links. Registrarse o Entrar a mi cuenta), la coleccion de shells (No tienes permitido ver los links. Registrarse o Entrar a mi cuenta) y la biblioteca (No tienes permitido ver los links. Registrarse o Entrar a mi cuenta). 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
<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
#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
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)
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 No tienes permitido ver los links. Registrarse o Entrar a mi cuenta.
#12
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
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
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

<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

<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
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 (No tienes permitido ver los links. Registrarse o Entrar a mi cuenta)
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: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta o No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


Referencias: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
#16
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: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
#17
Base de Datos / Introduccion a NoSQL
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
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: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
#19
Off Topic / La Mona Lisa en CSS
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: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
#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:

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Espero que les gustee el post, comenten que les parecio! Saludos atodoos
#21

La web multidispositivo hace tiempo que ya está aquí, no obstante todavía existe un déficit en la comunidad de webs en español en cuanto a la aplicación de técnicas como Responsive Web Design.

Screenfly es un herramienta online desarrollada por Quicktools que nos permite visualizar un sitio en resoluciones de navegadores de escritorio, tablets, smatphones y hasta los navegadores presentes en algunos televisores y así llegar a ser consciente de algunos déficits de nuestra web.

Simplemente con introducir la URL de nuestro site o blog, esta herramienta simula de forma automática la visualización que un usuario tiene en múltiples resoluciones y dispositivos dando una idea exacta de la experiencia que estamos ofreciendo a nuestros usuarios.

Además de lo anterior el equipo de Quicktools también dispone de una aplicación web llamada Wires con la que ayudar a construir wireframes directamente desde el navegador si necesidad de plug-ins, aplicaciones de Flash.....

Screenfly y Wires están disponible de forma gratuita para cualquier webmaster interesado, sin necesidad de registro previo o descarga de software.

Interesados pueden acceder ya a Screenfly desde No tienes permitido ver los links. Registrarse o Entrar a mi cuenta y a Wires desde No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Fuente: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
#22


Aqui les presento una herramienta muy util para todos los desarrolladores web: Go Mo

Go Mo es una iniciativa de google, la cual provee herramientas para adaptar cualquier sitio web a un dispositivo mobile! Como todos sabemos el uso de los smartphones y de las tablets ha tenido un gran crecimiento en el ultimo tiempo, es por eso que muchas webs han decidido crear sus propias versiones para dispositivos mobiles, y Go Mo es una gran ayuda en este tema!

Gracias a GOMOMETER, Go Mo nos permite, simplemente colocando la url, conocer como se ve nuestro site para dispositivos mobiles y luego nos realiza recomendaciones para mejorar la experiencia del usuario...

Webmasters que esten interesados en esta herramienta pueden acceder desde: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
#23
La experiencia de los usuarios es definida en buena parte por una carga rápida de nuestro site. Un sitio web con un rendimiento lento frustrará a los usuarios, animando a abandonarnos, mientras que un sitio web más rápido permitira que éstos se mantengan centrados en nuesros contenidos en lugar de esperar a que éstos terminen de cargar.

Bajo la premisa, apuntalada por el algoritmo de Google de que una web que carga rápido es una mejor web, los responsables de GTmetrix trabajan de forma constante en una herramienta referencia en el mundo de la optimización de sites.

El servicio GTmetrix hace un análisis exhaustivo del grado de eficiencia de una web gracias a servicios Google Page Speed o Yahoo! YSlow para calificar el rendimiento de un site valorando factores y calificando su importancia con la nota A (si está perfecto) o F (si afecta negativamente a la velocidad).

Esta herramienta gratuita tiene en cuenta parametros como la velocidad de descarga, tiempo de ejecución del código JavaScript o del CSS, en busca de aquellos fallos que afecten a la eficiencia y rendimiento del site.

Una vez realizado un test, GTmetrix genera un informe con consejos y recomendaciones que tambien podremos descargar en formato PDF y que será una importante fuente de información de aquello en lo que debemos trabajar en nuestra página web para sacar un rendimiento del 100%.

Ahora además GTmetrix dispone de un Bookmarklet con el mejorar todavía más la accesibilidad a esta herramienta imprescindible para todo webmaster.

Interesados pueden acceder a GTmetrix desde No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Fuente: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

NOTA: Personalmente creo que es una EXELENTE herramienta, la uso muy seguido y me funciona de 10! Se la recomiendo a todo los programadores web de la comunidad!


EDITO:

También he encontrado la siguiente web que puede ser muy útil: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
#24
Off Topic / Buena pelicula de hackers
Febrero 05, 2013, 11:53:19 PM
Bueno hoy les traje una buena pelicula, que atrapa bastante, y que por un lado tiene que ver con hackers, a mi personalmente me encanto, asique aca esta:

DURO DE MATAR 4.0: (No se relaciona con ninguna de las otras asique no hay porque ver toda la saga, de hecho, yo no la vi):



Los Estados Unidos están casi por completo controlados por tecnología informatica. Un ataque por parte de unos hackers alerta al FBI, que decide arrestar a quienes son considerados como los responsables: 7 dotados piratas informáticos. Uno de ellos, Matt Farrell (Justin Long), es encomendado por el FBI al teniente de policía John McClane (Bruce Willis), para que lo arreste y lo lleve a Washington D.C. para ser interrogado.

McClane llega al apartamento de Farrell, quien en ese momento estaba a punto de activar, sin saberlo, los explosivos C-4 secretamente plantados por asesinos en su computadora, infectada por un virus encargado de detonarlos al presionar la tecla suprimir. Los hackers participantes en el ataque han sido asesinados uno por uno, y Matt Farrel es el último del grupo.

No les cuento mas para no decirles toda la peli.



Link para ver la pelicula: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
#25
Back-end / Filtro inyeccion XSS y SQL
Febrero 05, 2013, 11:49:12 PM
Bueno, hoy les traigo el codigo de un filtro tanto para inyecciones XSS y SQL!
Código: php
    function filtroInyeccion($val){ 
        if (is_string($val)) {
            $val = htmlentities($val, ENT_QUOTES, 'UTF-8');
        } elseif (is_array($val)) {
            $a = array();
            while(list($c, $v) = each($val)) {
                $a[$c] = filtroInyeccion($v);
            }
            $val = $a;
        }
               
        if (is_string($val)) {
    if (get_magic_quotes_gpc()) {
$val = stripslashes($val);
    }
    $val = mysql_real_escape_string($val);
    $val = addslashes($val, '%_');
            $val = htmlspecialchars ($val, ENT_QUOTES, 'UTF-8')
} elseif (is_array($t)) {
    $a = array();
    while(list($c, $v) = each($val)) {
$a[$c] = filtroInyeccion($v);
    }
    $val = $a;
}
        return $val;
    }


El codigo es bastante simple, simplemente usa algunas funciones como htmlententies, stripslashes, addslashes, htmlspecialchars en una determinada cadena, en caso de que sea un array, hace lo mismo con cada uno de los valores!
Ultimamente no he tenido tiempo para hacer aportes al foro pero en estos dias estare aportando mas!
Saludos a toda la comunidad!
#26
Bueno aqui les traigo un post que hice hace muchisimo en una comunidad, cada vez que cambiaba de comunidad lo iba publicando en esa y actualizando por eso lo pueden encontrar con diferentes nombres! Bueno, sin mucho mas que decir les traigo mi post favorito xddd

Siempre de chico me encanto probar programas, lo hacia todo el tiempo, y de chico, al no saber mucho de informatica, siempre terminaba con virus, la pc trancada, etc. Con el tiempo fui aprendiendo mas y ahora les traere todo un sistema completo para instalar y descargar programa, lose, puede sonar que estoy loco xD

Primero paso: La descarga:

Siempre es recomendable descargar el programa de un lugar seguro, por lo general yo lo hago de No tienes permitido ver los links. Registrarse o Entrar a mi cuenta y creo que es la mejor web, si el programa no se encuentra en esa pagina, me dirijo a algun post de algun foro en el que subieron el programa, y veo los comentarios por si todo esta bien!



Segundo paso: El analisis:

Cada vez que descargamos un programa es bueno analizarlo por si las dudas, siempre que lo instalemos le hacemos un analisis con el antivirus que cada uno tenga y con un programa, que yo recomiendo, que seria Malwarebytes Anti-Malware (No tienes permitido ver los links. Registrarse o Entrar a mi cuenta). NOTA: Tambien puedes analizarlo en No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

--------------------------------------------------------------------------- ------------------------------------------------------------



Malwarebytes Anti-Malware (MBAM) es un antiespías gratuito. Malwarebytes Anti-Malware es capaz de detectar y erradicar programas espía, falsos antivirus y todo tipo de malware y spyware no detectado por los antivirus tradicionales.

Para usarlo, elige un análisis(rápido, completo o de memorias USB) y haz clic en Analizar; Malwarebytes Anti-Malware escaneará el equipo en busca de rastros de malware. Si no puede eliminarlos, lo intenta tras reiniciar el equipo. u herramienta FileASSASSIN sirve precisamente para eso.

La versión gratuita de Malwarebytes Anti-Malware incluye una cuarentena de archivos, actualizaciones gratuitas y una lista de ignorados, pero carece de protección en tiempo real, programador de tareas y bloqueo de páginas, características que se obtienen tras comprar una licencia.

Malwarebytes Anti-Malware es quizá el mejor antiespías en circulación, e incluso sin protección en tiempo real constituye un formidable compañero para cualquier antivirus.

--------------------------------------------------------------------------- -----------------------------------------------------------------

Ahora, si el analisis da que contiene virus, seria bueno desinfectar y hacer un analisis completo con el antivirus y otro con Malwarebytes Anti-malware. En el caso de que no contenga virus procedemos con el uso



Tercer paso: A la hora de desinstalar:

Ya usamos el programa y no lo queremos usar mas: ¿que hacemos? No solo basta con dejarlo ahi sin uso, hay que desinstalarlo, usualmente muchos lo desinstalan en el panel de control, yo en mi caso recomiendo Revo Uninstaller (No tienes permitido ver los links. Registrarse o Entrar a mi cuenta)

--------------------------------------------------------------------------- -----------------------------------------------------------------



Revo Uninstaller es un eficaz desinstalador de aplicaciones, una utilidad especializada en casos difíciles y que, además, te ayudará a optimizar el arranque de Windows y borrar archivos temporales.

Con Revo Uninstaller puedes listar todos los programas instalados en tu sistema y desinstalarlos desde una misma ventana. Si por cualquier motivo la desinstalación da errores, Revo Uninstaller permite forzar el borrado de los registros correspondientes.

Pero Revo Uninstaller no se limita a desinstalar programas. Sus dos funciones adicionales te ayudarán a optimizar el arranque de Windows, definiendo los programas que quieres arrancar al iniciar, y mantener tu disco duro libre de archivos innecesarios, buscando temporales, archivos corruptos o duplicados.

Lo mejor de Revo Uninstaller es lo fácil que es su manejo. Todas sus funciones están organizadas en diferentes categorías e identificadas con iconos muy descriptivos. De esta manera, puedes localizar de inmediato la función que necesitas en cada momento.

Rápido, eficiente, estable y gratuito; Revo Uninstaller es una herramienta ideal para mantener tu sistema en perfectas condiciones.
Pero no solo basta con eso, despues de la instalacion, hay que hacer una optimizacion, eso se hace con dos analisis completos de estos dos programas que les voy a dar aqui:

- Advanced SystemCare 6 (No tienes permitido ver los links. Registrarse o Entrar a mi cuenta)

--------------------------------------------------------------------------- -----------------------------------------------------------------



A TuneUp le ha salido un serio competidor. Se trata de Advanced SystemCare, una suite de mantenimiento que se presenta en dos versiones, Free y Pro. La primera es totalmente gratuita e incluye el núcleo de funciones básicas de mantenimiento.

Advanced SystemCare cuida mucho la usabilidad: su panel principal presenta cuatro grandes iconos para las modalidades de limpieza diaria y profunda, el acelerador Turbo Boost y las herramientas. Un cuadro de resumen indica cuántas amenazas y problemas se han eliminado con éxito.

Para cada tipo de problema detectado, Advanced SystemCare emite un detallado informe que puedes guardar por separado. El escaneo es lento pero exhaustivo y, tras la limpieza, parte de los cambios efectuados por Advanced SystemCare se pueden deshacer gracias a la función Reparar.

Advanced SystemCare incluye en su versión 6 una nueva tecnología de protección para mejorar la seguridad al navegar por Internet, una instalación más sencilla y un nuevo motor para desfragmentar discos duros a una mayor velocidad.

El mejorado modo Turbo Boost de Advanced SystemCare es ideal para jugar o ejecutar programas pesados, pues desactiva servicios innecesarios, atajos de teclado y tareas programadas para liberar memoria y evitar interferencias.

Con un surtido de utilidades muy completo, Advanced SystemCare se propone como una suite de optimización alternativa, muy intuitiva y ligera.

--------------------------------------------------------------------------- ------------------------------------------------------------------

Y el otro programa es:

-WinUtilities (No tienes permitido ver los links. Registrarse o Entrar a mi cuenta)

--------------------------------------------------------------------------- -------------------------------------------------------------------



WinUtilities Free es una colección de aplicaciones agrupadas que sirven para limpiar, reparar, optimizar, mejorar y aumentar la privacidad de tu sistema.

Dentro de las herramientas limpiadoras, WinUtilities Free ofrece limpieza del disco duro, del Registro, de accesos directos, un buscador de archivos duplicados y un desinstalador de programas.

Para optimizar, WinUtilities Free cuenta con un desfragmentador de disco, un optimizador de memoria, un gestor para limpiar las aplicaciones que cargar al inicio y un eliminador de BHO (objetos añadidos en el navegador).

WinUtilities Free también se preocupa por la seguridad enfocada a la privacidad. Por ello, cuenta con un limpiador de historial de Windows y de los navegadores, una utilidad para el borrado seguro de archivos y otra para recuperar archivos borrados por accidente.

Estas son sólo algunas de las funciones, pero WinUtilities Free incluye más, como por ejemplo la interesante "1-click Maintenance", para hacer todo el mantenimiento de tu PC con un único clic.

--------------------------------------------------------------------------- ------------------------------------------------------------------------

Bueno espero que les haya gustado este post xD

Saludos a toda la comunidaad!
#27
mysqli, es el conector para bases de datos MySQL recomendado por PHP, para interactuar desde tu aplicación con una base de datos MySQL. Pero crear una capa de abstracción genérica, reutilizable y orientada a objetos, suele ser un dolor de cabeza. En este artículo, veremos como lograr crear una capa de abstracción a bases de datos, simple y muy fácil de usar.

En otras palabras mysqli es una extencion mejorada del conector mysql, esta extencion hace que la coneccion con la base de datos sea mas segura y contiene mas seguridad contra inyecciones SQL y mas...

Por los que no saben que es una capa de abstraccion a base de datos fijense aqui: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Resumiendo todo en este tutorial les voy a mostrar un codigo para que se puedan conectar totalmente seguros a un base de datos gracias a mysqli!

Código: php
class DBConnector {
        protected static $conn;
        protected static $stmt;
        protected static $reflection;
        protected static $sql;
        protected static $data;
        public static $results;
        protected static function conectar() {
            self::$conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
        }
       
        protected static function preparar() {
            self::$stmt = self::$conn->prepare(self::$sql);
            self::$reflection = new ReflectionClass('mysqli_stmt');
        }
       
        protected static function set_params() {
            $method = self::$reflection->getMethod('bind_param');
            $method->invokeArgs(self::$stmt, self::$data);
        }
       
        protected static function get_data($fields) {
            $method = self::$reflection->getMethod('bind_result');
            $method->invokeArgs(self::$stmt, $fields);
            while(self::$stmt->fetch()) {
                self::$results[] = unserialize(serialize($fields));
            }
        }
       
        protected static function finalizar() {
            self::$stmt->close();
            self::$conn->close();
        }
       
        public static function ejecutar($sql, $data, $fields=False) {
            self::$sql = $sql;
            self::$data = $data;
            self::conectar();
            self::preparar();
            self::set_params();
            self::$stmt->execute();
            if($fields) {
                self::get_data($fields);
            } else {
                if(strpos(self::$sql, strtoupper('INSERT')) === 0) {
                    return self::$stmt->insert_id;
                }
            }
            self::finalizar();
        }
    }


ese seria el codigo de la capa de abstraccion basicamente, ahora, para guardar datos en la base de datos se usa este codigo:
Código: php
        $sql = "INSERT INTO productos
            (categoria, nombre, descripcion, precio)
            VALUES (?, ?, ?, ?)";
        $data = array("isbd",
                    "{$categoria}", "{$nombre}", "{$descripcion}", "{$precio}");
        $insert_id = DBConnector::ejecutar($sql, $data);


y el codigo para generar una consulta seria el siguiente
Código: php
        $sql = "SELECT nombre, descripcion, precio
                FROM productos
                WHERE categoria = ?";
        $data = array("i", "{$categoria}");
        $fields = array("Producto" => "", "Descripción" => "", "Precio" => "");
        DBConnector::ejecutar($sql, $data, $fields);


Si quieren entender el siguiente codigo les recomiendo leer la primera edicion de los libros No tienes permitido ver los links. Registrarse o Entrar a mi cuenta yo no los puse ya que se me extenderia y la mayoria no entenderia casi nada, a mi se me complico bastante para entender, imaginense para alguien que no tiene conocimientos de mysqli!

Ya de paso agradesco a No tienes permitido ver los links. Registrarse o Entrar a mi cuenta y recomiendo estas revistas de hackers and developers!