, 04:01:08
|
#1 |
Staff Retirado Con Honores Denunciante Ultra
| ¿Cómo Evitar ataques SQL injection en Joomla?
Calificación: de
5,00 | 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( $ string, true ), false );
Previniendo ataques DOS Código PHP: $ 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: 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.) 
__________________ Si usted tiene problemas al acceder al foro o conoce alguien que los tenga por algún bloqueo de su proveedor de servicios de internet ENTRA AQUI aplique y difunda la solución  Necesitas contactar a algún miembro de nuestro staff para consultarle alguna duda? Necesitas asesoría?: CLICK AQUI DeNuNCiaNDo.CoM SieMPRe LoS MeJoReS |
| |