Archivo del autor

Arreglos en PHP

En programación encontramos lo que conocemos como estructura de datos, que nos permite almacenar en una sola variable varios datos, crear listas, estructuras de árboles, pilas, colas, etc..  En este artículo escribiré sobre los arreglos en forma de introductoria para un futuro artículo sobre listas en PHP.

Qué es un arreglo (Array)

Los arreglos son estructuras que existen en la gran mayoría de los lenguajes de programación y nos permiten almacenar más de un valor en una sola variable, esto quiere decir que podemos crear un arreglo de cualquier tipo de dato (entero, punto flotante, cadenas de texto, etc.) y en el agregar, modificar, buscar o eliminar sus valores.

Cuando se trabaja con arreglos es importante saber que estas estructuras siempre comienzan desde el valor cero (0), esto quiere decir que si un arreglo es de diez (10) valores para acceder a sus valores se debe comenzar desde el valor cero hasta valor -1.

Ejemplo de como declarar un arreglo en PHP:

<?php
      $arreglo = array();
?>

Tipos de arreglos

En PHP podemos utilizar tanto arreglos escalares como arreglos asociativos.

Arreglos escalares

Los arreglos escalares son aquellos en donde almacenamos valores normalmente de forma sucesiva y donde ninguno de sus valores estará asociado aun un nombre o clave (key) con cual podamos acceder a él. Para acceder a cada valor en este tipo de arreglos debemos especificar la posición en donde se encuentra el valor que queremos obtener..

Para agregar valores a un arreglo escalar lo podemos hacer de la siguiente manera

Ejemplo:

<?php
      $arreglo = array();
      $arreglo[] = 10;
      $arreglo[] = 9;
      $arreglo[] = 23;
?>

De esta manera cada vez que agreguemos un elemento en el arreglo siempre será colocado al final de el.  Ahora para obtener el valor debemos especificar su posición para obtener el valor almacenado.

<?php
      echo $arreglo[0]; // Imprime 10
      echo '<br />';
      echo $arreglo[1]; // Imprime 9
      echo '<br />'
      echo $arreglo[2];  // Imprime 23
?>

Arreglos Asociativos

Los arreglos asociativos son aquellos en donde cada valor tiene un nombre o clave (key) el cual asociamos a un valor con el cual podemos modificar, obtener o eliminar el valor asociado a esa clave.

Ejemplo:

<?php
      $arreglo = array( 'nombre' => 'Psycho', 'programador' => 'Si', 'blog' => 'URL' );
?>

Ahora para acceder los valores que asignamos al arreglo del ejemplo anterior lo hacemos a través del nombre o clave (key) que le asignamos a cada valor.

Ejemplo

<?php
      echo $arreglo['nombre']; // Imprime Psycho
      echo '<br />';
      echo $arreglo['programador']; // Imprime si
      echo '<br />';
      echo $arreglo['blog']; // Imprime URL
?>

Función var_dump()

Cuando se trabaja con arreglos en PHP y queremos saber el contenido que tiene un arreglo tanto asociativo como escalar es de mucha ayuda la función var_dump() en PHP para saber el contenido de un arreglo. Para ver como funciona y tener una idea más clara vean el siguiente ejemplo

Ejemplo


<?php
$arreglo = array( 'nombre' => 'Psycho', 'programador' =>  'Si', 'blog' => 'URL' );
var_dump($arreglo); // Imprime array(3) {  ["nombre"]=> string(6) "Psycho" ["programador"]=> string(2) "Si"  ["blog"]=> string(3) "URL" }

?>

Psycho es un programador de aplicaciones web que intenta en sus ratos libres compartir conocimientos en comunidades.  Esta interesado en que la comunidad tecnológica en Venezuela crezca y se integre.

Anuncios

Protege tu aplicación contra SQL Injection

En este primer aporte escribiré sobre una vulnerabilidad que pueden presentar las aplicaciones creadas en cualquier lenguaje y si estas dando tus primeros pasos en programación y utilizando base de datos, este es un importante tema a tener en cuenta para tus futuras aplicaciones.

¿Qué es SQL Injection?

SQL Injection es la vulnerabilidad que presenta una aplicación cuando permite filtrar código SQL desde sus campos de entradas,  como por ejemplo un campo de texto de un formulario HTML o modificando los valores de variables a través del método GET.  Al suceder esto y realizar alguna consulta en la base de datos utilizando estos datos de entrada se pueden comprometer los datos a nivel de base de datos y su integridad.

Uno de los casos más comunes de este tipo de ataques es cuando el atacante desea acceder a un sistema que requiere un nombre de usuario y contraseña.  Estos atacantes pueden emplear distintas técnicas de SQL Injection para quebrantar la seguridad y obtener acceso.

Veamos un sencillo ejemplo en PHP de como un usuario puede inyectar código SQL en los campos de texto de una pantalla de  acceso a un sistema. Suponiendo que el sistema utiliza el siguiente script para buscar el usuario en la base de datos:

$sql = "SELECT *
	FROM usuario
	WHERE usuario = '".$usuario."'
	AND contrasenia = '".$contrasenia"'";

Y el usuario coloca el siguiente código en cualquiera de los campos de entrada de texto en el formulario de usuario y contraseña:

' or '1'='1'

Se generaría la siguiente sentencia SQL para consultar la base de datos:

$sql = "SELECT *
	FROM users
	WHERE usuario = '".$usuario."'
	AND contrasenia = '' or '1'='1';

La primera parte de la sentencia compara los dos primeros datos contra sus respectivos campos en la base de datos y la segunda parte compara si 1 = 1, lo retornaría verdadero aún si los datos de usuario y contraseña son válidos.

¿Cómo evitar ataques de este tipo en nuestra aplicación?

Aunque existen varias formas de proteger nuestras aplicaciones de este tipo de ataques, recomiendo las siguientes:

  • Verifica que el usuario de base de datos de tu aplicación no tiene privilegios para eliminar tablas con la sentencia SQL “DROP”.
  • Verifica toda la información que venga del usuario en busca de comillas (”) o sentencias que puedan afectar la consulta en base de datos.
  • Utiliza herramientas automatizadas como SQL Inject ME.

Por: Psycho.

Anuncios
A %d blogueros les gusta esto: