DeNunCianDo

DeNunCianDo (https://www.denunciando.com/)
-   Programacion (https://www.denunciando.com/programacion-115/)
-   -   ¿Cómo Evitar ataques SQL injection en Joomla? (https://www.denunciando.com/programacion-115/341392-como-evitar-ataques-sql-injection-en-joomla.html)

Sinclair 26-10-2010 04:01:08

¿Cómo Evitar ataques SQL injection en Joomla?
 
Cada vez que creamos un componente para Joomla estamos aportando a que nuestro desarrollo sea la entrada a un atacante, pero obviamente no todo está perdido y en este post veremos unas pequeñas técnicas para disminuir los riesgos de seguridad.
Forzar los tipos de datos con el API de Joomla

Esta técnica es básicamente comprobar que los tipos de datos enviados si sean los que pedimos. ¿Cómo?, pues si por ejemplo el dato enviado fue un número de teléfono obviamente debe llevar solo números es necesario entonces comprobar que en realidad sean números.


Código PHP:

sql 'UPDATE #__mitabla SET `tel` = ' . (int) $ tel

Con (int) estamos forzando el tipo de dato a un entero.
Si estamos haciendo la validación con una fecha entonces usaremos JDate que es la herramienta que nos brinda Joomla para manuipular fechas:



Código PHP:

fecha =& JFactory::getDate($ mifecha);
sql 'UPDATE #__mitabla SET `date` = ' . $ db->quote( ->toMySQL(), false); 

Escapando las Cadenas (Strings)

Para escapar cadenas en Joomla es muy sencillo.


Código PHP:

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

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. ->getEscaped puede tener un segundo parámetro que los “escapará” por ti.



Código PHP:

sql 'UPDATE #__mytable SET .... WHERE `string` LIKE '.$ db->quote( $ db->getEscaped( $ stringtrue ), false ); 

Previniendo ataques DOS


Código PHP:

sql 'UPDATE #__mytable SET .... WHERE `string` LIKE '.$ db->quote( $ db->getEscaped( $ stringtrue ), false ); 


Previniendo ataques XSS

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


Código PHP:

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

Floats (decimales)::


Código PHP:

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

Boolean (verdadero/falso)::

Código PHP:

bool JRequest::getBool( $ name,  ); 


Words (palabras, sólo letras y _):


Código PHP:

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

Commands (Alfanuméricos, – y _ ):

Código PHP:

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


Texto libre de HTML::

Código PHP:

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

(Recuerden que todos los signos $ se deben poner pegados de la respectiva palabra que le sigue, yo los ubico despegados para que el código no se me desaparezca en el campo de texto.)

-El Mara- 26-10-2010 06:12:05

Respuesta: ¿Cómo Evitar ataques SQL injection en Joomla?
 
huyyy esto si me sirve gracias ariel

rondamoncito 26-11-2010 00:45:53

Respuesta: ¿Cómo Evitar ataques SQL injection en Joomla?
 
a mi tambien me sirve mucho, aunque no tenga no culo de idea de lo que escribo jajaja gracias (y)

ARICARRARO 07-12-2010 11:57:29

Respuesta: ¿Cómo Evitar ataques SQL injection en Joomla?
 
Buen post. Es muy útil para quienes apenas usamos Joomla.

o_0

oswalgogra 12-12-2010 14:50:30

Respuesta: ¿Cómo Evitar ataques SQL injection en Joomla?
 
Que bueno que compartas esta información con la comunidad.

También hay documentación para administradores, programadores y diseñadores en la página oficial de la documentación de Joomla!:

http://docs.joomla.org/

Yo he aprendido muchas cosas leyendo aquí:

http://docs.joomla.org/Developers

Éxitos y hasta pronto! :SmokeScreen_emotico


La franja horaria es GMT -5. Ahora son las 06:49:30.

Desarrollado por: vBulletin® Versión 3.8.9
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.

DeNunCianDo.CoM ©

Page generated in 0,02085 seconds with 8 queries

SEO by vBSEO