ZaragozaSource

HiTech - ザラゴザ
  • Home
  • Gnome
Twitter RSS
Hosting por dinahosting.

雲-Nube-Cloud

ザ50回転ズ 3G android Ciencia cine comic expo eyeOS física gadgets Gnome google HTML5 innovación Japón Joomla! libros linux Lucid Lynx móvil mallorca mobile MySQL O3D Open Source opera Ramones render rock Software libre Teruel themes tips trucos usb 3.0 Wordpress Zaragoza

Search

Meta

  • Register
  • Log in
  • Entries RSS
  • Comments RSS

Categorías

  • Ciencia
  • Cultura
  • Gnome
  • GNU/Linux
  • Japón
  • Joomla!
  • Open Source
  • Software libre
  • Tecnología
  • Wordpress

Previniendo inyecciones SQL en Joomla

Escrito: 27-09-2009 | Autor: Zaragozasource | Categoría: Joomla!, Tecnología

Este artículo de Anthony Ferrara traducido por zaragozasource.es explica cómo protegernos de los ataques de inyección SQL al programar extensiones en Joomla! 1.5

Nos comenta que JRequest no es sufiente por si sólo para protegernos de éste tipo de ataques.

Vamos a repasar una serie de funciones que nos ayudarán a estar mejor protegidos:

Lo primero que debemos hacer es que si esperas un integer, forzar la variable recibida a que lo sea, lo mismo si es float, etc…

Por ejemplo:
$sql = ‘UPDATE #__mytable SET `id` = ‘ . (int) $int;

(hemos forzado a introducir un entero en la instrucción SQL, para evitar sorpresas)

Si en cambio estamos esperando una fecha usaremos JDate, y nos aseguraremos así que introducimos en la cadena SQl una fecha válida para mysql.

$date =& JFactory::getDate($mydate);
$sql = ‘UPDATE #__mytable SET `date` = ‘ . $db->quote( $date->toMySQL(), false);

Las cadenas de texto han de pasarse siempre por la función getEscaped:

$sql = ‘UPDATE #__mytable SET `string` = ‘ . $db->quote( $db->getEscaped( $string ), false );

Ojo, que estamos usando aquí la función quote(). Podemos simplificar la expresión dejando el segundo parámetro a true o en blanco (true por defecto).

$sql = ‘UPDATE #__mytable SET `string` = ‘ . $db->quote( $string );

Previniendo ataques DOS

Si estás utilizando el comando LIKE, puedes tener una vulnerabilidad DOS por no “escapar” los carácteres especiales % y _.
Joomla te facilita esta operación. $db->getEscaped puede tener un segundo parámetro que los “escapará” por tí.

$sql = ‘UPDATE #__mytable SET …. WHERE `string` LIKE ‘.
$db->quote( $db->getEscaped( $string, true ), false );

Previniendo ataques XSS

Hay métodos parecidos a JRequest que fuerzan las variables a comportarse como queremos

Integers:

$int = JRequest::getInt( $name, $default );

Floats (decimales):

$float = JRequest::getFloat( $name, $default );

Boolean (verdadero/falso):

$bool = JRequest::getBool( $name, $default );

Words (palabras, sólo letras y _)

$word = JRequest::getWord( $name, $default );

Commands (Alfanuméricos, – y _ )

$cmd = JRequest::getCMD( $name, $default );

Texto libre de HTML:

$string = JRequest::getString( $name, $default );

Artículo original en inglés:

http://developer.joomla.org/security/articles-tutorials/258-preventing-sql-injections.html

Suscríbete a nuestro RSS feed. Gracias por la visita

No related posts.

Category: Joomla!, Tecnología por Zaragozasource

Leave a Reply

This site is using OpenAvatar based on

© ZaragozaSource | Wordpress Theme by DT Website Templates
loading Cancel
Post was not sent - check your email addresses!
Email check failed, please try again
Sorry, your blog cannot share posts by email.