jueves, 8 de noviembre de 2012


¿QUÉ SIGNIFICAN LAS SIGLAS LAMP?
(Linux-Apache-MySQL- PHP/Python/PERL). El término hace referencia al sistema creado por la conjunción de esas aplicaciones libres (de código abierto). Este grupo de aplicaciones generalmente son usados para crear servidores web.

LAMP provee a los desarrolladores con los cuatro elementos necesarios para un servidor web: unsistema operativo (Linux), un manejador de base de datos (MySQL), un software para servidor web (Apache) y un software de programación script web (PHP, Python o PERL).

LAMP se ha convertido un estándar de facto para los servidores web pues es completamente libre y no se necesitan pagar licencias (lo que encarecería el servicio). Otra popular combinación es el WAMP, con Windows como sistema operativo. Además existen el MAMP, FAMP, etc.
A finales del año 2000, los miembros del equipo de MySQL David Axmark y Monty Widenius visitaron al editor de O'Reilly Dale Dougherty y le hablaron de un nuevo término: LAMP. Al parecer era ya muy popular en Alemania, donde se empleaba para definir el trabajo conjunto con Linux, Apache, MySQL y uno de los siguientes lenguajes: Perl, Python o PHP. El término LAMP gustó tanto a Dougherty que empezó a promocionarlo desde la posición de extraordinaria influencia de su editorial en el mundo del software libre.
Es frecuente que se identifique a primera vista el mundo del software libre con Linux. Eso provoca que muchas veces se ignoren las herramientas que permiten a Linux convertirse en una gran herramienta de desarrollo de software, especialmente de aplicaciones web. Existen varios casos en los que un producto pasa de ser una curiosidad a una solución adecuada para la empresa, como ya ha sucedido con Sendmail o Kerberos. Esto es lo que ha sucedido con la solución para servicios web llamada LAMP.
LAMP está considerada como una de las mejores herramientas disponibles para que cualquier organización o individuo pueda emplear un servidor web versátil y potente. Aunque creados por separado, cada una de las tecnologías que lo forman disponen de una serie de características comunes. Especialmente interesante es el hecho que estos cuatro productos pueden funcionar en una amplia gama de hardware, con requerimientos relativamente pequeños sin perder estabilidad. Esto ha convertido a LAMP en la alternativa más adecuada para pequeñas y medianas empresas. También Ciberaula emplea tecnología LAMP.
Existen, no obstante, multitud de variaciones de código libre. La L de Linux puede ser sustituida por FreeBSD, NetBSD u OpenBSD. En lugar de la M de MySQL también podemos encontrarPostgreSQL. La P sirve para PHP, Perl, Python, y Ruby. No obstante, las encuestas de Netcraftmuestran que el LAMP que enseñamos en Ciberaula es la plataforma para crear página web más popular.
Algunas de las ventajas que se obtienen de utilizar LAMP son:
v  Soporte a gran cantidad de arquitecturas, como son Intel y compatibles, SPARC, Mips y PPC (Macintosh).
v  Código relativamente sencillo y con pocos cambios de una plataforma a otra.
v  Parches generados en poco tiempo después de encontrarse un agujero de seguridad.
v  Actualizaciones del software vía Internet.
v  Posibilidad de incrementar los servicios y funciones desde el código fuente
v  Sin embargo, tenemos también una serie de desventajas que deben considerarse:
v  Es muy distinto de Windows, lo que dificulta el trabajo a quienes estén acostumbrados a él.
v  Las actualizaciones requieren en ocasiones tener conocimientos profundos del sistema.
v  Configurar algunos servicios de red requiere de más tiempo que en Windows.
v  Mayor coste del personal.

¿PARA QUE SIRVE EL PAQUETE DE SOFTWARE VERTRIGO SERV?
VertrigoServ es un paquete que incluye todo lo necesario para convertir tu ordenador en un servidor web. Con él podrás instalar de forma fácil y sencilla Apache, PHP, MySQL, SQLiteManager y PHPMyAdmin. Todo en un único directorio y sin necesidad de instalar y configurar cada herramienta independientemente.
Después de la instalación podrás manejar todo desde el menú de programas de Windows. Ofrece además dos opciones muy interesantes: la actualización inmediata de cada una de las herramientas y la desinstalación limpia del paquete, sin que quede rastro del mismo en tu ordenador.
Si eres el editor de un sitio web y quieres comprobar los cambios que realizas en el mismo, antes de hacerlos en el servidor remoto, esto es lo que necesitas. Serás tu el primero que verás los efectos de los cambios y podrás corregirlos si hay algún error, antes de que tus visitantes los puedan ver.

¿QUÉ ES MYSQL?
MySQL es un sistema de gestión de bases de datos (SGBD) multiusuario, multiplataforma y de código abierto.

MySQL pertenece a la compañía sueca MySQL AB, a la que le pertenece casi todos los derechos del código fuente.

La compañía desarrolla y mantiene el sistema, vendiendo soporte y servicios, como también las licencias para usar MySQL.
Uso de MySQL

MySQL es muy popular en aplicaciones web, y es componente de las plataformas LAMP, MAMP,WAMP, entre otras. MySQL suele combinarse con el popular lenguaje PHP.

¿COMO SE CREA UNA BDD EN MYSQL?
Lo primero que aremos será instalar mysql lo aremos de la siguiente manera, durante la instalación nos preguntara  por la clave y colocamos la deseada.
Tenemos varias formas para entrar a nuestro servidor si lo tenemos instalado local mente podemos entrar a la consola de administración con el siguiente comando  nos pedirá la contraseña que colocamos durante la instalación
también tenemos otras opciones
mysql -u usuario -p pasword
mysql -h ip-de-la-maquina-donde-instalamos-mysql -u usuario -p password

Una vez en mysql   ya podremos utilizar su sintaxis la cual es simple  y la aprenderemos con unos días de pruebas  Lo primero que debemos de saber es que  mysql termina sus sentencias con un punto y coma “;”
Para mirar que bases de datos tenemos  lo aremos con el siguiente comando, Como vemos tenemos varias bases de datos creadas unas se instalan por defecto , las cuales son
information_schema,  mysql,  las otras dos son bases de datos que e creado,

Para eliminar  una base de datos  utilizamos el  la sentencia   drop  mas el nombre de la base de datos  eliminamos.

Ahora mostrare como crear una base de datos para ello utilizaremos la sentencia create database sequido del nombre de la base de datos

Con esto tendremos una base de datos llamada learning para poder trabajar sobre ella tendremos que ingresar a la base de datos para ello utilizaremos la sentencia  use seguido del nombre de la base de datos

Luego de seleccionada podemos ver que tiene con  show tables;


Como no tenemos  todavía ninguna tabla creada no mostrara nada
Lo siguiente es crear una tabla  y la crearemos de la siguiente manera


En la cual especificamos los campos  para un usuario y otro para una clave  y los cuales  seguido del atributo yo los coloque varchar y entre paréntesis se especifica el numero de espacios máximo en mi caso coloque 16 pero pueden ser los que ustedes quieran  la clave primaria en este caso es usuario  y luego cerramos con “;” y ya tendremos nuestra tabla creada y lista para usar.
Ahora si miramos de nuevo que tablas hay creadas

Como vemos ya nos aparece la tabla que hemos creado, te debes estar preguntando pero como hago para usarla como le inserto datos  calma, eso es lo siguiente que aremos  pero antes quiero ver  que campos tiene la tabla creada   lo cual lo aremos de la siguiente forma.

Ahora si como inserto datos en la tabla  lo aremos con la sentencia  INSERT INTO “los campos a las que quiero ingresar datos” VALUES y los datos que vamos a ingresar, la sentencia quedaría de la siguiente forma.

Quiero ver si ingrese los datos correctamente como los veo    no preocuparse para todo existe una solución  y lo aremos de la siguiente forma.

Y por ultimo nos preguntaremos como puedo borrar una tabla la  respuesta es  la sentencia drop como lo habríamos echo antes con la base de datos pero esta vez seleccionaremos la tabla a borrar.



Bueno eso fue todo   espero que  sea de su agrado  y pues la idea es que complementemos mas  si alguien quiere complementar con mas cosas lo puede hacer  si me e equivocado en algo hay me corrigen
ya con esto podemos empezar a jugar con   php y crear formularios  para crear nuestros escenarios para probar como funcionan las inyecciones  sql.
GPL3.

¿CÓMO SE HACE UNA CONSULTA EN MYSQL?

Si ya sabemos como conectarnos y desconectarnos de la base de datos Mysql, vamos a ver los principios básicos del ingreso de comandos, empleando varias consultas para conocer la forma en que funciona mysql. Es importante prestar atención a como se realizan las consultas mysql, cuales son los errores que solemos cometer y como solucionarlos.
Veamos un comando simple que ordena al servidor que muestre su número de versión y la fecha actual. Debemos escribir el comando a continuación del prompt mysql> y presionar Enter:
mysql> SELECT VERSION(), CURRENT_DATE;
+---------------------+-------------------------+
| VERSION() | CURRENT_DATE |
+---------------------+-------------------------+
| 5.0.7-beta-Max | 2005-07-11 |
+---------------------+-------------------------+
1 row in set (0.01 sec)
mysql>
Esta consulta nos muestra varias cosas acerca de mysql:
• Un comando normalmente consiste en una sentencia SQL seguida de punto y coma. (Hay excepciones donde el punto y coma puede omitirse. QUIT es una de ellas por ejemplo
• Cuando ingresamos un comando, mysql lo envía al servidor para ser ejecutado e imprime los resultados. A continuación muestra de nuevo el prompt mysql> que está listo para otro comando.
• mysql imprime los resultados de la consulta en forma tabulada (filas y columnas). La primera fila contiene etiquetas para las columnas. Las filas siguientes son los resultados de la consulta. Generalmente, el nombre de cada columna es el nombre del campo que trae desde la base de datos. Si está trayendo el valor de una expresión, en lugar del contenido de un campo o columna de una tabla (como en el ejemplo anterior), mysql etiqueta la columna usando el texto de la expresión.
• mysql informa cuántas filas fueron devueltas y cuánto tiempo le tomó ejecutarse a la consulta, lo cual da una idea aproximada del rendimiento del servidor. Estos valores son imprecisos porque representan tiempo de reloj corriente (no tiempo de CPU), y además porque están afectados por factores como la carga del servidor, etc.
Las palabras clave pueden ingresarse en cualquier combinación de minúsculas y mayúsculas. Por ejemplo, las siguientes consultas mysql son equivalentes:
mysql> SELECT VERSION(), CURRENT_DATE;
mysql> select version(), current_date;
mysql> SeLeCt vErSiOn(), current_DATE;
Una consulta mysql puede usarse como calculadora como en el siguiente ejemplo:
mysql> SELECT SIN(PI()/4), (4+1)*5;
+---------------------------+-----------+
| SIN(PI()/4) | (4+1)*5 |
+--------------------------+-----------+
| 0.70710678118655 | 25 |
+--------------------------+-- -------+
1 row in set (0.02 sec)
Las consultas que vimos hasta ahora han sido relativamente cortas, sentencias de una sola línea. Se puede inclusive ingresar múltiples sentencias en una misma línea, separándolas con punto y coma, por ejemplo:
mysql> SELECT VERSION(); SELECT NOW();
+----------------+
| VERSION() |
+----------------+
| 5.0.7-beta-Max |
+----------------+
1 row in set (0.00 sec)
+---------------------+
| NOW() |
+---------------------+
| 2005-07-11 17:59:36 |
+---------------------+
1 row in set (0.00 sec)

No es necesario que un comando sea ingresado en una sola línea, de ese modo, comandos extensos que requieren varias líneas no son un problema.
Mysql determina cuando una sentencia ha llegado a l final observando si termina en un punto y coma, no si se llegó al final de la línea física.
Un ejemplo de una consulta mysql de múltiples líneas seria:
mysql> SELECT
-> USER()
-> ,
-> CURRENT_DATE;
+---------------+--------------+
| USER() | CURRENT_DATE |
+---------------+--------------+
| jon@localhost | 2005-07-11 |
+---------------+--------------+
1 row in set (0.00 sec)

En este ejemplo observamos que el prompt cambia de mysql> a -> después que se ha ingresado la primera línea de una consulta de múltiples líneas. Esta es la forma en que mysql advierte que no se ha completado la sentencia y aún espera por el resto.
Si durante el ingreso de un comando decidimos que no queremos ejecutarlo, lo podemos cancelar tipeando \c:
mysql> SELECT
-> USER()
-> \c
mysql>

Es importante observar el prompt de Mysql ya que el mismo nos informa en que estado se encuentra mysql, por ejemplo:
mysql> Listo para un nuevo comando.
-> Esperando la siguiente línea en un comando de múltiples líneas.
'> Esperando la siguiente línea, se encuentra abierta una cadena que comienza con apostrofo (''').
"> Esperando la siguiente línea, se encuentra abierta una cadena que comienza con comillas dobles ('"').

`> Esperando la siguiente línea, se encuentra abierta una cadena que comienza con tilde ('`').
/*> Esperando la siguiente línea, se encuentra abierto un comentario que comienza con /*.
Es frecuente que se origine una sentencia de múltiples líneas cuando accidentalmente le damos entrada a un comando de una sola línea pero olvidamos terminarlo con punto y coma. En ese caso, mysql espera más caracteres:
mysql> SELECT USER()
->

Si esto le ocurre (considera que ha ingresado una sentencia completa pero solamente obtiene un prompt ->), la mayoría de las veces es porque mysql está esperando por el punto y coma. Si no advertimos lo que el indicador trata de decirnos, podría demorar un buen tiempo en hacer lo que necesita. Ingresamos un punto y coma para completar la sentencia, y mysql ejecutará la consulta:
mysql> SELECT USER()
-> ;
+--------------------+
| USER() |
+--------------------+
| joesmith@localhost |
+--------------------+

Los prompts '> y "> aparecen durante el ingreso de cadenas. Podemos escribir cadenas delimitadas por ''' o '"' (por ejemplo, 'hola' o "adiós"), y mysql nos permite ingresar cadenas divididas en múltiples líneas. Cuando vemos un prompt '> o "> significa que comenzamos a ingresar una cadena comenzando con ''' o '"' pero no ingresamos el correspondiente caracter de terminación. A menudo esto significa que inadvertidamente omitió este carácter. Por ejemplo:
mysql> SELECT * FROM my_table WHERE name = 'Smith AND age < 30;
'>

Si ingresamos esta sentencia SELECT, presionamos ENTER y esperaos por el resultado, nada ocurrirá. En lugar de asombrarnos por el tiempo que consume la consulta, debemos observar lo que el prompt '> está diciendo. Indica que mysql espera por el final de una cadena inconclusa. En el caso del ejemplo, la cadena 'Smith no tiene el apóstrofo de cierre.
¿Qué hacer llegado a este punto? Lo más simple es cancelar el comando. No obstante, no podemos simplemente tipear \c en este caso, porque mysql interpretará que es parte de la cadena que estamos ingresando. En lugar de eso, escribimos el caracter de cierre que falta y entonces ingresamos \c.>:
mysql> SELECT * FROM my_table WHERE name = 'Smith AND age < 30;
'> '\c
mysql>

El prompt cambia de nuevo a mysql>, informando que mysql está listo para un nuevo comando.

El prompt `> es similar a '> y "> , pero informa que está pendiente de completar un identificador delimitado por tildes.
Es importante conocer el significado de estos indicadores, ya que si por error se ingresa una cadena incompleta, todo lo que se ingrese posteriormente será aparentemente ignorado por mysql — incluyendo el comando QUIT. Esto puede ser sumamente desconcertante, en particular si no se conoce lo que debe hacer para terminar la línea y cancelar el comando.