Aquí encontrarás todo lo relacionado a la tecnología, computación, informática y demás. Enterate de las noticias del momento en cuanto a tecnología se refiere.





Mensaje de Texto ó Advertencia en Monodevelop

Uno de los problemas los cuáles se les presenta a las personas que programan en ambientes windows es crear mensajes de texto ó advertencia, ésto se hace facil con las windows forms con el objeto MessageBox ó ShowMessage en c++.

En Gtk se utiliza MessageDialog, como práctica, creamos un proyecto nuevo, agregamos un simple botón y en su evento click insertamos éste código:

MessageDialog dialogo;
dialogo = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "MENSAJE DE ERROR");
dialogo.Run();
dialogo.Destroy();

En dónde “Mensaje de error” será lo que se despliegue como texto y con un botón de aceptar.

Otra manera de enviar un mensaje de texto es también utilizando windows forms, para ello agregamos las referencias, del lado izquierdo en donde dice referencias damos click derecho y luego en Editar preferencias, de la lista que nos aparecerá, seleccionamos el System.windows.forms.



Y en nuestro MainWindows.cs incluimos las librerías:

using System.Windows.Forms;

Ahora en el evento click del botón sólo escribimos:

MessageBox.Show("Mensaje de error");

Conclusión:
Lo más aconsejable claro, es hacerlo con puro GTK, ya que se integra bastante bien a gnome, las windows forms en gnome se ven muy feas.

Consulta segura en MySQL y PHP

sql_injection

Al momento de desarrollar una aplicación con base de datos, se debe tomar en cuenta la seguridad del mismo, uno de los ataques más comunes es el sql injection que consta básicamente de introducir código sql en cajas de texto de nuestro sistema con el fin de introducirse ó sacar información.

Un ejemplo de sql injection sería el siguiente:

<?php
// Consultar la base de datos para verificar si hay una coincidencia de usuario
$consulta = "SELECT * FROM usuarios WHERE usuario='{$_POST['username']}' AND password='{$_POST['password']}'";
mysql_query($consulta);
//Supongamos que el usuario tecleó ' OR ''=' en el campo de password:
$_POST['username'] = 'admin';
$_POST['password'] = "' OR ''='";

// Esto quiere decir que la consulta enviada a MySQL seria:
echo $consulta;
?>

La variable $consulta contendría:

SELECT * FROM usuarios WHERE usuario='aidan' AND password='' OR ''=''

Esto permitiría a cualquier usuario ingresar al sistema sin password.

Para realizar una consulta segura, utilizaremos 2 funciones mysql_real_escape_string y sprintf, se pudiera resolver también modificando la configuración del php para no permitir caracteres especiales, pero ésto sería una desventaja, ya que no permitiría la portabilidad del código.

<?php
// Conexion
$enlace = mysql_connect('mysql_host', 'mysql_usuario', 'mysql_contraseña')
    OR die(mysql_error());
//Consulta segura
$query = sprintf("SELECT * FROM libros WHERE autor='%s'", mysql_real_escape_string($autor_nombre));

mysql_query($query);
?>

Ojo, si no hay una conexión con el servidor, la función mysql_rea_space_string marcará un error.

En caso de una consulta de logeo:

<?php
// Función para eliminar "/" y añadir comillas
function comillas_inteligentes($valor)
{
// Retirar las barras
    if (get_magic_quotes_gpc()) {
        $valor = stripslashes($valor);
    }

 // Colocar comillas si no es entero
    if (!is_numeric($valor)) {
        $valor = "'" . mysql_real_escape_string($valor) . "'";
    }
    return $valor;
}

// Conexion
$enlace = mysql_connect('mysql_host', 'mysql_usuario', 'mysql_contraseña')
    OR die(mysql_error());

//consulta segura
$consulta = sprintf("SELECT * FROM usuarios WHERE usuario=%s AND password=%s",
            comillas_inteligentes($_POST['username']),
            comillas_inteligentes($_POST['password']));

mysql_query($consulta);
?>

Crear un web service en Monodevelop

¿Qué son los webservices?

Un Web Service es un componente de software que se publica en un servidor Web y que permite la comunicación distribuida entre sistemas o aplicaciones en diferentes máquinas que invocan métodos que estos devuelven un resultado en formato XML.

Este documento XML puede ser procesado por cualquier aplicación ó sistema operativo capaz de procesar XML.

En esta imágen se muestra el funcionamiento de un servicio web en donde el database podría ser un servicio web , que éste, devuelve un resultado en formato XML a los diferentes dispositivos que lo consumen.


Primeros pasos

Para comenzar a desarrollar el servicio web es necesario tener instalado el IDE Monodevelop, puedes checar esta guia de instalación monodevelop. También se requiere tener instalado el servidor de pruebas XSP2:

# aptitude install mono-xsp2

1.- Primero creamos una nueva solución ASP.NET Aplicación web, en Archivo->Nueva solución y le ponemos como nombre WebServiceMono:

webservice-mono1

2.- Ahora, del lado izquierdo en donde dice solución, aparecerá el nombre de nuestro proyecto “WebServiceMono“, damos click derecho y vamos en Añadir->Nuevo archivo… y seleccionamos ASP.NET Servicio web con codebehind y le ponemos como nombre “webservice”:

webservice-mono2

webservice-mono3

3.- Ahora crearemos un sencillo método dentro del archivo webservice.asmx, que sólamente sumará 2 números, el código completo del archivo webservice.asmx quedaría 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 método para sumar 2 números.

    [WebMethod]

    public int sumar(int a, int b)

    {

        return a + b;

    }

	}
}


webservice-mono4

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

	<form id="form1" runat="server">
      <a href="webservice.asmx">WebService</a>
      </form&gt


webservice-mono5

5.- Construiremos el proyecto tecleando F5 y si instalamos bien el servidor xsp, nos abrirá un navegador web y trabajará de manera local por el puerto 8080 (éste proyecto no se podrá ver al exterior aún), nos deberá aparecer una página en donde sólamente aparecerá una liga que dice WebService:


webservice-mono6

6.- Al dar click en la liga, nos aparecerá un tipo asistente para poder probar nuestros métodos que hayamos creado, del lado izquierdo aparecerá información sobre nuestro servicio web así como los métodos, damos click en el método sumar y luego en la parte de arriba test, nos pedirá los 2 parametros, le damos cualquier número y luego en el botón invoke, ésto tendrá como resultado un archivo XML con el resultado:


webservice-mono7

webservice-mono9

Conclusiones:

Esto fué un pequeño tutorial de cómo crear un servicio web desde la parte del software libre utilizando mono para ello.

Por ahora nuestro web service funcionará de manera local, para poder consumirlo desde el exterior es necesario instalar el módulo mono para apache y hacer las respectivas configuraciones, aquí les dejo una guia de instalación y configuración del módulo mono para apache, cuando lo tengan configurado, sólamente pasamos los archivos de nuestro proyecto al directorio virtual en apache y para consumirlo ahora será:

http://tudominio/dirvirtual/webservice.asmx

En el próximo post, crearemos una aplicación en dónde consumiremos el web service que acabamos de crear.

VideoTutorial de éste ejercicio

Descargar el proyecto

Debian hasta en los jabones…

Todos los derechos reservados. Tecnologia.