sobre Joomla! y un nuevo café
Baronti
baronti en gmail.com
Jue Mar 5 13:42:21 CLST 2009
Estimados,
Junto con invitar al segundo café joomla-chile de la Comunidad de
Joomla en Chile,
que realizaremos el viernes 13 de marzo en la Universidad ARCIS (+
INFO en http://joomla-chile.cl)
quería resucitar una antigua discusión que quedó pendiente.
Al respecto, recuerdo que el diálogo era (cito):
>> Dios mata a un gatito blanco cada vez que usas Joomla. El codigo es horrible.
> A ver, señor de los códigos, podria UD. decir, a qué código se refiere?
Joomla Versión 1.0.15, ?
Yep.
> Joomla Versión 1.5.x ?
También.
> ¿Y cuál es el fundamento de la apreciación?
De muestra un boton:
Joomla 1.5 fue escrito para PHP 5; sin embargo en el fichero
libraries/joomla/database/database.php me encuentro con una clase que
declara sus atributos como var $atributo.
¿Que clase de programador deja a merced del lenguaje el tratamiento de
los atributos de sus clases? Cualquier estudiante de informatica chileno
sabe que las clases importantes, tales como las que se usan en
conexiones a bases de datos deben usar funciones para poblar sus atributos.
<?php
class imbecil
{
var $user;
var $pass;
var $host;
var $base;
}
?>
es especialmente estupida; cualquier persona puede extender la clase y
usarla en un modulo para sus propios usos. quien la controla?
<?php
private $user;
private $pass;
private $host;
private $base;
function setUser($user) { validacion de $user; asignacion }
function setPass($pass) { validacion de $pass; asignacion }
function setHost($host) { validacion de $host; asignacion }
function setBase($base) { validacion de $base; asignacion }
?>
Esta clase es mucho menos vulnerable a estupideces del tipo "uy, puse
un modulo que me extendio la clase y me hackearon".
Los tipos de Joomla no tienen idea de PHP.
---------------------------
Pués bien, esta es la respuesta de uno de los desarrolladores.
Lo posteo acá ya que esto aparece en Mr Google y ha quedado sin
respuesta, por lo que me parece pertinente que quede publicado
tambien:
CITO:
Me parece que quien lo escribio (el mensaje inicial) no tiene mucha
idea de como funciona joomla globalmente.
1° la carpeta includes que es en donde se definen todas las clases no
debe tener permisos de escritura por lo que instales lo que instales
no te debe alterar las clases.
2° la forma en que esta declarada la clase database es especialmente
útil para aquellos que desarrollamos funciones de interconectividad
con otras bases de datos, por ejemplo validar usuarios en joomla que
son tomados de un servidor SQL Server, o generar en joomla el reporte
de ventas que es tomado de un servidor Oracle, etc. Es simple, segura
y sobre todo ahora docenas de horas al hacer inteconexiones.
3° Hacer funciones para que valide nombre de usuario, contraseña,
servidor mysql, base de datos, etc. en teoría es lo ideal ya que no
harian uso de conexiones persistentes lo que incrementa la seguridad,
en la práctica hacerlo de esa forma ralentiza de forma exponencial el
rendimiento de cualquier sitio, el tiempo de ejecución en el servidor
se incrementa, por lo que sitios que tengan solo unos cuantos cientos
de visitas por día simplemente colapsarían a no ser de que se instalen
en un servidor dedicado.
4° "Hackear" un sitio por medio de un módulo que extienda la clase
database, el concepto es verdaderamente ridículo, ya que la mayoría de
los módulos (solo para aclarar, son los cuadritos que aparecen en los
lados como encuestas, login, etc) estan escritos en simple
HTML-Javascript y el archivo con los detalles en XML. aquellos que
incluyen php es únicamente para hacer consultas a la base de datos. La
naturaleza de los módulos es tan limitada que no se puede hacer mucho
con ellos.
6° Finalmente existe una diferencia abismal entre el término Hacker y
el término Cracker, sugiero que busque en wikipedia el significado de
ambos.
Jesús Piña
Desarrollador del proyecto Advance Joomla
http://www.solucionesopensource.com
Hasta Acá la cita.
Saludos
Baronti
Más información sobre la lista de distribución Linux