Blog

Uso de FileZilla

FTP son las siglas de File Transfer Protocol, uno de los protocolos de Internet. Mediante dicho protocolo, podemos conectar nuestros ordenadores con un servidor FTP para realizar la transferencia (subida/bajada) de datos desde nuestro ordenador al servidor.

El ejemplo más claro de la utilización de este protocolo se da cuando un usuario con un servicio de alojamiento web conecta con el servidor para poder acceder al espacio que tiene contratado, para poder subir su página web o bajar algún determinado archivo.

Ver más

La importancia de escapar variables.

A menudo en nuestro trabajo de diseño web tenemos la responsabilidad de asegurarnos que no ocurran fallos en nuestros sitios, principalmente en aquellos donde el pasaje de variables de una página hacia otra es habitual.

En la mayoría de los casos las variables pueden contener cadenas de caracteres que pueden romper otras cadenas donde son introducidas, como ser fragmentos de código SQL, maquetas HTML, campos input o textarea.

Algunos casos más severos que otros, siendo las inyecciones SQL un problema de seguridad en aquellos sitios que no han tomado los recaudos necesarios.

Nuestro lenguaje de programación web de preferencia es PHP, por lo tanto también tenemos preferencia por el motor MySql. Así que les mostraremos algunos consejos para utilizar en estas plataformas.

¿Qué es escapar?

Escapar un carácter es ante poner una contra barra detrás de él.

$variable = «Cadena de texto «entre comillas».»;
echo $variable;

Como verán, las comillas que corresponden a la cadena se escapean con el carácter , permitiendo esto que las comillas puedan ser guardadas dentro de la cadena, evitando que se confundan con el cierre. Esta salida se verá así:

Cadena de texto «entre comillas».

Los caracteres reservados de un lenguaje deben ser escapados para que en su compilación no se abran las cadenas ni se mal interprete el código.

Función mysql_real_escape_string() -> http://ar2.php.net/mysql_real_escape_string

Es seguramente una de las funciones mejor concebidas para concatenar variables dentro de una consulta dirigida a MySql.

– Representaremos un error:
En la url tenemos: http://www.unsitio.es/producto.php?idprod=‘ AND idusuario = ‘34

En php tenemos:
$idprod = $_GET[‘idprod»];
$SQL = «SELECT * FROM productos WHERE idprod = ‘$idprod»

Si compilamos esto quedaría:
SELECT * FROM productos WHERE idprod = ‘‘ AND idusuario = ‘34″

$idprod puede ser una variable introducida por $_GET mediante la url, es un uso habitual para mostrar detalles de productos en una plantilla php, pero mal utilizada por un navegante puede fácilmente rompe una cadena y devolver errores en pantalla y meticulosamente ir descubriendo la estructura de la Base de Datos.

Si hiciéramos:

$ id_user = mysql_real_escape_string($_GET[‘id_user»]);
$SQL = «SELECT * FROM productos WHERE idprod = ‘$id_user»

Esto quedaría:
SELECT * FROM productos WHERE idprod = ‘‘ AND idusuario = ‘34″

De esta forma logramos que la cadena ingresada sea estrictamente registrada como una cadena de texto, y así la consulta no se romperá. En el peor de los casos, no devolverá resultados.

Ahora bien, esto no es todo. Existen otros errores posibles que puede ocurrir cuando vamos a comparar parámetro por $_GET, que ha sufrido alguna modificación accidental.
Por ejemplo:

$idprod = mysql_real_escape_string($_GET[‘idprod»]);
SELECT * FROM productos WHERE idprod = ‘$idprod «;

Será: SELECT * FROM productos WHERE idprod= ‘54ç»

Esto no devolverá resultados, y veremos una planilla con la información sobre el producto, prácticamente vacía.
Lo correspondiente a realizar cuando necesitamos recibir un parámetro netamente entero, es parsear el valor, para ello utilizamos (int)

$idprod = (int)($_GET[‘idprod»]);
SELECT * FROM productos WHERE idprod = ‘$idprod»;

Será: SELECT * FROM productos WHERE idproducto = ‘54″

En caso de que $_GET[‘idprod»] sea nulo o alfanumérico sin números en su cadena, el valor parseado será 0. Si tuviera algún número, lo tomará y lo utilizará.
Ejemplo:

$variable = (int)(«101dalmatas»);
echo $variable;

La salida será: 101

Otro aspecto muy importante es ocultar toda muestra de código que pueda salir por pantalla, o evitar mostrar una página que resulta incompleta.

Ejemplo:

En la url tenemos: http://www.unsitio.es/producto.php?idprod=unacadenadetexto

$idprod = (int)$_GET[‘idprod»];
$SQL = «SELECT * FROM productos WHERE idprod = $id_prod»;
(es decir: SELECT * FROM productos WHERE idprod = 0)

Normalmente no existen registros con índice 0, ya que para los lenguajes puede confundirse con un valor nulo. Entonces esta búsqueda no devolverá resultados.

Para lo cual lo correcto es verificar el resultado y evitar que se genere una página sin información:

$idprod = (int)$_GET[‘idprod»];
$SQL = «SELECT * FROM productos WHERE idprod = $id_prod»;
$rsd = mysql_query($SQL, $conexion);
$row = mysql_fetch_assoc($rsd);

if (!$row){
header(«location: error.php»);
die(«error al mostrar producto»);
}

La función header() nos permite redireccionar hacia otra página avisando al usuario sobre el error. Puede ocurrir que la devolución de resultados falle si se están realizando tareas de mantenimiento. O bien que el producto ya no exista.

La idea de re direccionar, es evitar caer en un link muerto. Esto beneficia el posicionamiento web del site, ya que los motores de búsqueda al no encontrar links muertos califican el site con un Rank más alto. Además de la posibilidad de crear una interface más amigable con el navegante.

La función header() debe ejecutarse previamente el encabezado HTML del site. Esto puede parecer engorroso, pero no da problemas en lo más mínimo cuando el código esta aplicado correctamente.

La función die() funciona para cortar el proceso, en caso de que por algún motivo no funcione header(). Es una buena costumbre su utilización.

Introducciones flash y google

Si bien sabemos que la utilización de 100% tecnología flash y google todavía no son compatibles, parece ser que esto ha dado algún tipo de avance.

Google ha incorporado en el listado de resultado de busquedas, la opcion de saltar las introducción en flash, que tiene algunas paginas webs. Esto es realmente valioso tanto para los usuarios, como para las empresas que disponen de una intro en flash, ya que las intros por lo general son solo para visualizarla la primera ves que se visita la pagina web.

Ver más

Servicio de redacción para Hotelopia.es

El sitio web Hotelopia ha confiado en nuestros servicios de redacción para la creación de textos descriptivos de los más de 1200 destinos turísticos que ofrece.

Soluciones UNO ha desarrollado para el popular portal de reservas hoteleras Hotelopia más de 1200 textos en los cuáles se describen las atracciones de los destinos turísticos que ofrece el portal. Asimismo, se han incorporado en las diferentes redacciones palabras clave (keywords) que favorecen un mayor posicionamiento web en buscadores.

Ver más