Archive for PHP

Denegación de servicio en WordPress

Hola a todos,  nos a llegado un correo de Hispasec en la cual se publica la existencia de una vulnerabilidad en WordPress, es muy importante solventar esta vulnerabilidad ya que puede consumir grandes recursos de CPU y por ende afectar al rendimiento de los servidores.

Os facilitamos el texto de Hispasec y como solventar esta vulnerabilidad.

——————————————————————-

Hispasec – una-al-día                                  24/10/2009

Todos los días una noticia de seguridad          www.hispasec.com

——————————————————————-

Denegación de servicio en WordPress

———————————–

Se ha confirmado la existencia de una vulnerabilidad en WordPress por la que un atacante remoto podría realizar ataques de denegación de servicio de forma sencilla.

WordPress es un sistema de gestión de blogs, que opera en lenguaje PHP y con soporte de base de datos MySQL, y ofrecido a la comunidad bajo licencia GPL. WordPress es uno de los gestores de blogs más extendido en la blogosfera.

El problema, descubierto por Jose Carlos Norte, reside en que un usuario remoto puede enviar una serie de peticiones especialmente construidas que contengan codificaciones multibyte para provocar que el script “wp-trackbacks.php” consuma grandes recursos de CPU.

Se ha publicado la versión 2.8.5 que corrige este problema, disponible

desde:

http://wordpress.org/development/2009/10/wordpress-2-8-5-hardening-release/

Aunque también se recomienda la lectura de la descripción de la vulnerabilidad en:

http://rooibo.wordpress.com/2009/10/17/agujero-de-seguridad-en-wordpress/

Comentarios

Envio de correo en osCommerce con SMTP y autenticacion

La tienda online osCommerce no es compatible con el envío de mail a traves de SMTP si este requiere autenticación, y en nuestros servidores está activada por lo que es necesario parchear osCommerce para poder utilizarlo, pero no es una tarea complicada.

Estas modificaciones están sólo testeadas con las siguientes versiones:

  • osCommerce 2.2-MS2
  • phpmailer 1.73

No quiere decir que no funcione en versiones más antiguas ni en las futuras, pero no podemos confirmarlo.

Se hace un copia de los archivos que posteriormente modificaremos por si hay algún error

  • includes/classes/email.php
  • admin/includes/classes/email.php

Descargar phpmailer

http://phpmailer.sourceforge.net

Descomprimimos el archivo y nos quedamos únicamente con:

  • class.phpmailer.php
  • class.smtp.php

que son los que nos interesan; copiamos archivos en los dos destinos siguientes… estas dos rutas deberán tener copiados los dos archivos anteriores:

  • includes/classes/
  • admin/includes/classes/

Configuracion de OsCommerce para su uso de phpmailer

Ahora hay que hacer alguna modificación común en los archivos que oscommerce usa para enviar emails; para ambos es la misma modificacion. Los archivos a modificar son:

  • includes/classes/email.php
  • admin/includes/classes/email.php

Dentro de estos ficheros hay que buscar la siguiente cadena

if ‘(EMAIL_TRANSPORT == ’smtp’)’ {

Encontrando a continuación el siguiente código

if (EMAIL_TRANSPORT == ’smtp’) {

return mail($to_addr, $subject, $this->output, ‘From: ‘ . $from . $this->lf . ‘To: ‘ . $to . $this->lf . implode($this->lf, $this->headers) . $this->lf . implode($this->lf, $xtra_headers));

} else {

return mail($to, $subject, $this->output, ‘From: ‘.$from.$this->lf.implode($this->lf, $this->headers).$this->lf.implode($this->lf, $xtra_headers));

}
Hay que modificarlo para que quede asi

if (EMAIL_TRANSPORT == ’smtp’) {
require_once(DIR_WS_CLASSES . “class.phpmailer.php”);

$pMail = new PHPMailer();

$pMail->From = $from_addr; //cuenta suya que envia y autentica
$pMail->FromName = $from_name;

$pMail->IsSMTP();

$pMail->Host = “mail.dominio.tld”; // ponga su servidor SMTP, en Fenixer por defecto es el  mail.sudominio.ext

$pMail->Username = “usuario@dominio.tld”; // usuario SMTP si esta activada la autenticación en el servidor, su cuenta que envía y autentica

$pMail->Password = “contraseña”; // password de la cuenta de correo que autentica del

$pMail->SMTPAuth = true; // true/false – con o sin autenticación, hay que dejar true
$pMail->Subject = $subject;
$pMail->Body = $this->output;
$pMail->AddAddress($to_addr, $to_name);
$pMail->IsHTML(true);

return $pMail->Send();

$pMail->ClearAddresses();
$pMail->ClearAttachments();
} else {
return mail($to, $subject, $this->output, ‘From: ‘.$from.$this->lf.implode($this->lf, $this->headers).$this->lf.implode($this->lf, $xtra_headers));
}

Aunque en el código nuestros comentarios ocupen dos lineas, en el texto del archivo .php, cuando lo edite, no debe quedar repartido en dos lineas, pues causaría error…. le aconsejamos incluso, elimine nuestro comentario detrás de cada sección de código.
Los campos Host, Username, Password hay que personalizarlos con los datos de su usuario, según se indica en el comentario del codigo. Logicamente, los datos de la cuenta SMTP de envío deben existir.

A continuación, en el Panel de Administración de Oscommerce, en la sección /Configuración/E-Mail Options/ (/admin/configuration.php?gID=12), habrá que elegir SMTP como método de envío, en lugar de sendmail.

Con esto el envio de mails en osCommerce se hará a través de phpmailer con SMTP y autenticación.

Comentarios (6)

Tutorial: Instalar osCommerce en Domitienda.com

OsCommerce es la tienda virtual Open Source por excelencia desde el año 2000. Esta aplicación web te permite crear un catálogo online de productos de forma fácil ya que dispone de una intranet de administrador desde la cual darlos de alta, crear familias de productos, ofertas, etc…


oscommerce

Se basa en una arquitectura de PHP + MySql (como Joomla o Wordpress) por lo que podría funcionar a partir de nuestro plan Reducido por 2.95€/mes.

Para instalar esta aplicación web basta con seguir los siguientes pasos:

  1. Descargamos la última versión de OsCommerce de la web oficial (http://www.oscommerce.com/solutions/downloads) o bien de la web oficial en castellano (http://oscommerce.qadram.com/modules.php?name=Downloads&d_op=viewdownload&cid=1)
  2. Descomprimimos el zip y subimos por FTP el contenido de la carpeta “catalog” a la raiz de nuestro sitio web (httpdocs en el caso de domitienda.com)
  3. Asegurate de tener activada el Soporte PHP en Plesk > Inicio > [tu dominio] > Configurar > Soporte Php.
  4. También desde Plesk creamos una base de datos MySql y un usuario de acceso a la misma desde Plesk > Inicio > [tu dominio] > Bases de Datos > Crear nueva Base de Datos Mysql
  5. Una vez subido si ponemos la dirección de nuestra web en un navegador veremos la pantalla inicial del instalador.
  6. oscommerce_1

  7. Seguimos los pasos de la instalación indicando, cuando se nos pida la información de la base de datos MySql que hemos creado previamente tal y como se ve en la imagen siguiente:
    • Database Server: Comprueba la IP que te aparece al crear la base de datos en el Plesk ya que según el servidor será “localhost” o “mysql.servidoreswindows.net” en el caso del servidor de MySql centralizado.
    • Username y Password: Usuario y pass de acceso a la base de datos que hemos creado en Plesk
    • Database name: Nombre de la base de datos que hemos creado en Plesk
    • Persistent Connections: NO
    • Session Storage: Database

  8. oscommerce_2

  9. Pulsamos “Continue” hasta finalizar la instalación. (Si te aparece algún error después de este paso es posible a que se deba a la falta de permisos de escritura sobre la carpeta httpdocs. Ponte en contacto con nosotros y lo arreglaremos).

¡Listo! Ya solo falta acceder a la intranet de administrador y empezar a dar de alta nuestros productos y configurar el resto de apartados de la web… pero esto ya es otra historia ;-)

¡Saludos!

Comentarios

Cómo enviar correo SMTP autenticado con PHP

Despues de recibir varias dudas vuestras de como enviar un correo autenticado desde PHP, os hemos pegado un fragmento de codigo simple para realizar el envio. Como muy bien nos indica nuestro amigo Pablo Enjuto mas abajo, aqui teneis un enlace a las clases phpmailer.php y smtp.php que se importan en el codigo. 

http://sourceforge.net/project/showfiles.php?group_id=26031

Elegid la version que mas se adecue a vuestro Php y listo, es muy sencillo de utilizar y esperamos que os sea de mucha utilidad.

 

require(‘class.phpmailer.php’);
require(‘class.smtp.php’);

$nombre = $_POST["nombre"];
$telefono = $_POST["telefono"];

$mail = new PHPMailer();

$body = “Hola es una prueba”;
$body .=”ojalá funcione”;

$mail->IsSMTP(); 

/* Sustituye (ServidorDeCorreoSMTP)  por el host de tu servidor de correo SMTP*/
$mail->Host = “ServidorDeCorreoSMTP”;

/* Sustituye  ( CuentaDeEnvio )  por la cuenta desde la que deseas enviar por ejem. prueba@domitienda.com  */

$mail->From = “CuentaDeEnvio”;

$mail->FromName = “Domitienda”;

$mail->Subject = “prueba de envio”;

$mail->AltBody = “prueba”; 

$mail->MsgHTML($body);

/* Sustituye  (CuentaDestino )  por la cuenta a la que deseas enviar por ejem. admin@domitienda.com  */
$mail->AddAddress(“CuentaDestino”, “Domitienda”);

$mail->SMTPAuth = true;

/* Sustituye (CuentaDeEnvio )  por la misma cuenta que usaste en la parte superior en este caso  prueba@domitienda.com  y sustituye (ContraseñaDeEnvio)  por la contraseña que tenga dicha cuenta */

$mail->Username = “CuentaDeEnvio”;
$mail->Password = “ContraseñaDeEnvio”; 

if(!$mail->Send()) {
echo “Mailer Error: ” . $mail->ErrorInfo;
} else {
echo “Message sent!”;
}
 

Saludos.

Comentarios (4)

Add to Technorati Favorites