consulta segura.odt

download consulta segura.odt

If you can't read please download the document

description

consulta segura.odt

Transcript of consulta segura.odt

Consulta segura en MySQL y PHP

Al momento de desarrollar una aplicacin con base de datos, se debe tomar en cuenta la seguridad del mismo, uno de los ataques ms comunes es el sql injection que consta bsicamente de introducir cdigo sql en cajas de texto de nuestro sistema con el fin de introducirse sacar informacin. Un ejemplo de sql injection sera el siguiente:

hackeando passwords Fuerza bruta (brute force) con HydraPor: antoniomtz - 13/06/09 a las 04:06:37 pm | En GNU/Linux, Seguridad, Tutoriales

style="height: 24px; width: 570px;"Object 1

En ste tutorial, explicar la tcnica de Fuerza bruta (brute force), la cul es utilizada en el rea del hacking para probar , que tan fuerte es una contrasea y en el rea del cracking para decifrar la contrasea con fines maliciosos. Breve explicacin de la tcnica fuerza bruta: En criptografa, se denomina ataque de fuerza bruta a la forma de recuperar una clave probando todas las combinaciones posibles hasta encontrar aquella que permite el acceso. Los ataques por fuerza bruta, dado que utilizan el mtodo de prueba y error, son muy costosos en tiempo computacional. Para realizar ataques de fuerza bruta, existen muchas aplicaciones como el famoso john the ripper, brutus , hydra etc Nosotros utilizaremos hydra, lo puedes descargar desde aqu para GNU/Linux, tambin les dejo un diccionario que posteriormente lo utilizaremos, Diccionario latin (click derecho, guardar como) La compilacin e instalacin es sencilla: 1.- Descomprimimos el archivo .tar.gz 2.- Nos situamos dentro de la carpeta y tecleamos:

$ ./configure $ make # make install

Cabe mencionar, que sta tcnica es utilizada para decifrar passwords de servidores FTP, POP, HTTP, SSH, entre algunos otros. En ste ejemplo, intentaremos decifrar la contrasea de un servidor FTP.

Para comenzar, basta con abrir una consola y teclear lo siguiente:$ hydra 192.168.1.74 ftp -s 21 -L latin.txt -P latin.txt

-s : Especifica el puerto. -L : Toma del archivo latin.txt el posible nombre de usuario. -P : Toma del archivo latin.txt el posible password. Se se conociera el nombre de usuario que la verdad sera fantstico, se pone de la siguiente manera:$ hydra 192.168.1.74 ftp -s 21 -l antonio -P latin.txt

Digo que sera fantstico conocer el nombre de usuario ya que nos ahorraramos muchsimo tiempo, lo ms recomendable es saber el nombre de usuario utilizando otra tcnica. Dependiendo de la contrasea, esperamos a que la decifra y listo! :

Si eres de los que les tiene miedo a la consola, pues existe una aplicacin en GTK para hydra, cuando hayas instalado hydra, teclea en consola: xhydra

No hace falta explicar su funcionamiento, es bastante intuitiva. Esto sera todo, se aceptan comentarios, sugerencias, criticas.

Crear un webservice para validacin de E-mailPor: antoniomtz - 19/08/09 a las 12:08:34 pm | En Microsoft, Mono, Programacin, Tutoriales

style="height: 24px; width: 570px;"Object 2

En ste tutorial, veremos como crear un webservice que contenga un mtodo para validar si una direccin de emial es vlida no. Tambin crearemos una aplicacin web en asp.net para consumir el webservice. En sta ocasin utilizaremos VS2008 con el framework 3.5 SP1. Lo primero que haremos ser crear un sitio web del tipo webservice, para ello vamos a Fila->NewWebSite, en la ventana que nos aparece seleccionamos ASP.NET WebService:

Por default nos crear un mtodo que regresa un simple Hola Mundo, modificaremos ese mtodo y agregamos lo siguiente:[WebMethod] public bool EmailValidation(string email) { string expresion = "\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*"; if (System.Text.RegularExpressions.Regex.IsMatch(email, expresion)) { if (System.Text.RegularExpressions.Regex.Replace(email, expresion,String.Empty).Length == 0) { return true; } else { return false; } } else { return false; } }

Quedara de la siguiente manera:

Con sto ya tenemos creado nuestro webservice con un mtodo que nos validar un email, ahora agregaremos un nuevo proyecto a nuestra solucin, ser un proyecto web asp.net, para ello, vamos a File->Add->New Project y seleccionamos ASP.NET Web Application:

Lo primero que debemos hacer es agregar la referencia del webservice a nuestro nuevo proyecto web, para ello damos click derecho en Referencia y luego Agregar referencia web

Nos aparecer una ventana para seleccionar la fuente del webservice, seleccionaremos WebService en this solution:

Ah nos aparecer el webservice que habamos creado, lo seleccionamos y le damos Add Reference:

Una vez que ya est agregada la referencia, vamos a modificar el archivo Default.aspx y le ponemos un TextBox y un Botn:

Ahora en el evento OnClick del botn, agregamos el siguiente cdigo:localhost.Service EmailService = new localhost.Service(); bool Valid = EmailService.EmailValidation(TextBox1.Text); if (Valid) Response.Write("Email Correcto"); else Response.Write("Email Incorrecto");

Quedara de la siguiente manera:

Para correr el proyecto, configuramos el proyecto webapplication para que arranque de inicio , dando click derecho en el proyecto y le damos en Set as StartUp Project:

Listo!, probamos:

Si quieres hacer un webservice libre utilizando Mono, puedes visitar mi artculo anterior: Crear un webservice en monodevelop

Encriptacin de Texto en C# con MonoPor: antoniomtz - 15/07/09 a las 02:07:38 am | En GNU/Linux, Mono, Programacin, Seguridad, Tutoriales

style="height: 24px; width: 570px;"Object 3

La encriptacin en el rea de seguridad es muy importante, y ms an en una aplicacin a la hora de guardar contraseas en una base de datos. Aqu les dejo un proyecto con el cul podemos encriptar y desencriptar texto con la ayuda de algunas clases que se encuentran en .NET, me bas en sta pgina Using System.Linkecubeko Para comenzar utilizaremos los siguientes espacios de nombres:using System.Text; using System.Security.Cryptography;

Y con las siguientes clases: MD5CryptoServiceProvider (Clase)

Calcula el valor de hash MD5 (Message-Digest Algorithm 5), de los datos de entrada utilizando la implementacin proporcionada por el proveedor de servicios criptogrfico (CSP). Esta clase no se puede heredar. UTF8Encoding (Clase) Representa una codificacin UTF-8 de caracteres Unicode. TripleDESCryptoServiceProvider (Clase) Define un objeto contenedor para obtener acceso a la versin del proveedor de servicios criptogrficos (CSP) del algoritmo TripleDES (algoritmo que hace triple cifrado del algoritmo Data Encryption Standard) No se puede heredar esta clase. CipherMode (Enumeracin) Especifica el modo de cifrado de bloques que se utilizar para cifrar. PaddingMode (Enumeracin) Especifica el tipo de relleno que se aplica cuando el bloque de datos del mensaje es ms pequeo que el nmero total de bytes necesarios para una operacin criptogrfica. ICryptoTransform (Interfaz) Define las operaciones bsicas de las transformaciones criptogrficas. Gracias al proyecto mono, podemos crear esta clase y liberarla bajo la licencia GPL. Aqu les dejo la clase cifrado ya codificada: cifrado.cs Para comenzar, creamos un proyecto nuevo C# con Gtk# en Monodevelop y creamos una forma ms menos como sta:

Para facilitar mejor las cosas he creado una dll con las clases para encriptar y desencriptar, primero nos descargamos la dll: criptologia.dll, luego la agregamos como referencia a nuestro proyecto dando click derecho en Referencias y luego Editar preferencias .:

Ahora en el evento Click del Botn que dice encriptar, ponemos lo siguiente:criptologia.Cifrado oCifrado = new criptologia.Cifrado(); entry2.Text = oCifrado.Encriptar(entry1.Text);

Y en el evento Click del Botn desencriptar, ponemos:criptologia.Cifrado oCifrado = new criptologia.Cifrado(); entry3.Text = oCifrado.Desencriptar(entry2.Text);

Aqu les dejo el proyecto terminado: encriptacion.zip. Conclusin: Con sto podemos agregar mayor seguridad en nuestros aplicacines sistemas, gracias a mono nuestra DLL es libre y se puede utilizar con cualquier propsito, estudiar, modificar y redistribuir.

Crear un web service en MonodevelopPor: antoniomtz - 20/05/09 a las 09:05:19 pm | En GNU/Linux, Mono, Programacin, Tutoriales

style="height: 24px; width: 570px;"Object 3

Qu son los webservices?Un Web Service es un componente de software que se publica en un servidor Web y que permite la comunicacin distribuida entre sistemas o aplicaciones en diferentes mquinas que invocan mtodos que estos devuelven un resultado en formato XML. Este documento XML puede ser procesado por cualquier aplicacin sistema operativo capaz de procesar XML.

En esta imgen se muestra el funcionamiento de un servicio web en donde el database podra ser un servicio web , que ste, devuelve un resultado en formato XML a los diferentes dispositivos que lo consumen.

Primeros pasosPara comenzar a desarrollar el servicio web es necesario tener instalado el IDE Monodevelop, puedes checar esta guia de instalacin monodevelop. Tambin se requiere tener instalado el servidor de pruebas XSP2:# aptitude install mono-xsp2

1.- Primero creamos una nueva solucin ASP.NET Aplicacin web, en Archivo->Nueva solucin y le ponemos como nombre WebServiceMono:

2.- Ahora, del lado izquierdo en donde dice solucin, aparecer el nombre de nuestro proyecto WebServiceMono, damos click derecho y vamos en Aadir->Nuevo archivo y seleccionamos ASP.NET Servicio web con codebehind y le ponemos como nombre webservice:

3.- Ahora crearemos un sencillo mtodo dentro del archivo webservice.asmx, que slamente sumar 2 nmeros, el cdigo completo del archivo webservice.asmx quedara de la siguiente manera:using System; using System.Web; using System.Web.Services; namespace WebServiceMono { [WebService(Name = "myWebService",Description = "Mi primer webservice en mono", Namespace = "http://www.antoniomtz.org")] public class webservice : System.Web.Services.WebService { public webservice () {} //Se crea un sencillo mtodo para sumar 2 nmeros.

[WebMethod] public int sumar(int a, int b) { return a + b; } } }

4.- Ahora agregaremos una liga en el archivo Default.aspx: WebService

May 22, 2009 | Etiquetado en: | 1 Comment

Conexin Ruby con PostgreSQLPor: antoniomtz - 25/02/09 a las 11:02:05 am | En Base de datos, Programacin, Ruby

Este el el cdigo para realizar una conexin en ruby con el motor de base de datos PostgreSQL.#!/usr/bin/env ruby require 'postgres' conn = PGconn.connect("localhost", 5432, '', '', "test", "myid", "mypass") res = conn.exec('select tablename, tableowner from pg_tables') res.each do |row| row.each do |column| print column (20-column.length).times{print " "} end puts end

February 25, 2009 | Etiquetado en: | No Comments

Mono C# con PostgreSQLPor: antoniomtz - 21/02/09 a las 11:02:52 am | En Base de datos, Mono, Programacin, Tutoriales

Ahora les voy a mostrar un pequeo ejercicio para trabajar con mono y el motor de base de datos PostgreSQL, si an no tienes instalado Postgre ni mono puedes visitar estos tutoriales: Instalacin PostgreSQL, Comenzando con mono. Para comenzar nos descargaremos la dll necesaria para trabajar con PostgreSQL en .NET, Npgsql.dll. Ahora en monodevelop, creamos un proyecto nuevo en C# a modo consola, ahora del lado derecho donde dice Referencias, damos click derecho y seleccionamos Editar preferencias, una vez ah, seleccionamos la dll y la aadimos al proyecto.

Para continuar, necesitamos crear una base de datos en postgre, podemos empezar con una tabla pequea, para el ejercicio, hice una base de datos llamada ejercicio, con una tabla llamada usuarios que solamente contiene 3 campos, id, nombre y apellido. Ahora entraremos a la parte de la programacin, antes que nada, necesitamos agregar la librera necesaria al proyecto:using Npgsql;

Enseguida crearemos algunos mtodos de conectar, ejecutar y desconectar, para reducir cdigo: Mtodo conectar()namespace conexion { class Postgre { public NpgsqlConnection dbcon; //Variable pblica del tipo NpgsqlConnection public void conectar() //Mtodo conectar { string con = "Server=127.0.0.1;"+ "Port=5432;"+ "User Id=tu_usuario;"+ "Password=tu_password;"+ "Database=ejercicio;"; //Cadena para la conexin, modificar segn tu

user y password. dbcon = new NpgsqlConnection(con); dbcon.Open();

}

Mtodo ejecutar(string query)public void ejectuar(string query) { NpgsqlCommand command = dbcon.CreateCommand(); command.CommandText = query; command.ExecuteReader(); }

Mtodo Main()public static void Main(string[] args) { try{ Postgre conexion; conexion = new Postgre(); conexion.conectar(); Console.WriteLine("Conexin exitosa"); string query = "INSERT INTO usuarios VALUES ('C01','Juan','Perez');"; conexion.ejectuar(query); Console.WriteLine("Se ingreso el dato satisfactoriamente"); Console.WriteLine("Visita http://www.antoniomtz.org"); } catch(NpgsqlException error) { string mensaje = error.Message; Console.WriteLine(mensaje); } }

Aqu les dejo el cdigo completo : Conexin. Espero y les haya servidor, saludos.