Child pages
  • Guía del Administrador del Sistema

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

Tabla de contenidos

Table of Contents
maxLevel3

...

Guía del Administrador del Sistema

Esta guía le ayudará a configurar un servidor web para que sea mejor y más seguro.

Una vez realizado realizada esta configuración, usted estará listo para instalar PrestaShop, utilizando nuestra Introducción.

...

Por ejemplo, es probable que no obtenga acceso a php.ini en un hosting compartido. Si su host no proporciona la configuración requerida por defecto y usted no puede manipular php.ini, entonces debe cambiarse a un hosting dedicado o uno más permisivapermisivo.

Aun así, editar php.ini sigue siendo una acción técnica y avanzada. Si su negocio funciona bien en la actualidad, no hay necesidad de modificar ese archivo y mucho menos cambiar de host.

La edición de la configuración PHP requiere que cambie algunos valores en el archivo php.ini la mayoría de las veces de "On" a "Off" o viceversa. El archivo contiene una gran cantidad de documentación por cada línea: asegúrese de leer la perteneciente a sus cambios, con el fin de entenderlos mejor. Tenga cuidado con lo que edita, ya que esto tiene un impacto directo en la forma como PHP se ejecuta , y por lo tanto, en la estabilidad y la seguridad de sus servidores.

...

En definitiva, es imprescindible contar con las siguientes directivas establecidas en los valores indicados:

Code Block
html
html

extension = php_mysql.dll
extension = php_gd2.dll
allow_url_fopen = On

...

Contar con el soporte GZip permite al servidor web para reunir las páginas web, las imágenes y secuencias de comandos antes de enviarlos al navegador. Esto hace que navegar por la tienda sea más rápido y por lo tanto sea una experiencia más agradable.

...

La directiva register_globals}} cuando se encuentra habilitada, define todas las variables de entorno (GET, POST, COOKIE, SERVIDOR...) como variables globales.}} No es seguro usar variables no definidosdefinidas, ya que un usuario pudiera establecer un valor a esta variable utilizando el método GET, por ejemplo. Por lo tanto, es fundamental configurar {{register_globals en OFF.

...

La directiva allow_url_include se utiliza para permitir la inclusión de cualquier archivo a través de declaraciones require e y include, aunque no provengan de su servidor Web. Esta opción debe ser configurada en OFF, ya que si una aplicación en el servidor web sufre de "inclusión de vulnerabilidad", los usuarios podrán incluir cualquier archivo desde cualquier servidor y estos se ejecutarán en su propio servidor.

En resumen, se recomienda tener las siguientes directivas establecidas en los valores indicados:

Code Block
html
html

register_globals = Off
magic_quotes_gpc = Off
allow_url_include = Off

...

Si tiene acceso a una cuenta principal de MySQL, que puede crear otros usuarios, lo podría realizar utilizando la línea de comandos:

Code Block
html
html

mysql -u USERNAME -p PASSWORD

También podría utilizar la siguiente consulta SQL:

Code Block
html
html

mysql> USE mysql;
mysql> CREATE USER 'username'@'servername' IDENTIFIED BY 'new_password';

...

Tenemos que permitir a este usuario utilizar la base de datos "prestashop" y configurar sus derechos al mismo tiempo. Aquí le mostramos una plantilla para la consulta SQL para realizarlo:

Code Block
html
html

mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER
     > ON 'prestashop'.* TO 'new_user'@'localhost';
mysql> FLUSH PRIVILEGES;

...

Para lograr la autenticación básica en su carpeta admin, tenemos que agregar un archivo .htaccess en esa carpeta (por ejemplo, /var/www/prestashop/admin):

Code Block
html
html

AuthUserFile /var/www/.prestashop_admin
AuthName "Prestashop Admin Access"
AuthType Basic
Require valid-user
Options -Indexes

...

Aquí le ofrecemos una muestra de contenido para el archivo .prestashop_admin, con un login y una contraseña:

Code Block
html
html

login1:$apr1$/wJeliK8$e9OzgRaVL8J8wSsFBXjor1
login2:$apr1$yV65Kqqz$cFt3sV2.Q7hhLRRUJDo5a/

Este archivo contiene logins y contraseñas hashed hash los cuales tienen permitido el acceso a la carpeta.
Para generar una contraseña hash, puede seguir este enlace: generación de archivo .htpasswd.

...

También es posible llevar a cabo restricciones de dominio e IP utilizando el archivo .htaccess:

Code Block
html
html

Order Allow, Deny
Deny from all
Allow from .myprestashop.com
Allow from 127.0.0.1

Sin embargo, usted no debe ingresar este tipo de directiva:

Code Block
html
html

<LIMIT GET POST>
Require valid-user
</LIMIT>

...

  1. Asegure su back-office
    1. Cambie el nombre de la carpeta /admin después de la instalación de PrestaShop. Esto es necesario ya que usted no podrá acceder a su administración PrestaShop si no ha realizado ese cambio. Asegúrese de escoger un nombre muy singular, lo ideal sería una mezcla de letras y números, como "my4dm1n".
    2. Proteja su carpeta admin con los archivos .htaccess y .htpasswd, o solicíte a su host que lo haga por usted.
    3. No permita que su navegador mantenga rastro de su contraseña (cookie o cualquier otro).
    4. Elija una contraseña compleja, mezclando letras, números e incluso signos de puntuación, como "5r3XaDR#". Usted puede y debe usar un generador de contraseñas, tales como el de PCTools o el de GRC.
  2. Asegure su instalación PHP
    1. Vea los ajustes necesarios y recomendados de PHP, al principio de esta guía.
  3. Siempre elimine la carpeta /install después de haber instalado o actualizado PrestaShop.
  4. Siempre elimine archivos inútiles del servidor de producción:
    1. todos los archivos readme_xx.txt.
    2. el archivo CHANGELOG.
    3. la carpeta /docs.
  5. Prohibir el acceso a los archivos/plantillas de su tema, mediante un archivo .htaccesscon el siguiente contenido:

    Code Block
    html
    html
    
    <FilesMatch "\.tpl$">
    order deny,allow
    deny from all
    </FilesMatch>
    

...

  • Habilitar caché de MySQL (o pregunte a su proveedor de host que lo haga por usted), y ofrézcale un valor alto (por ejemplo, 256M).
  • No se olvide de colocar $smarty->force_compile en "false" en el modo de producción, ya sea a través del archivo smarty.inc.php o en el back-office.
  • Siempre que sea posible, utilice un opcódigo de caché (o pregunte a su host para instalar uno), para aliviar la carga procesada por el servidor. PrestaShop es compatible con eAccelerator. Opcódigo significa "código de operación" y define el estado compilado de los archivos dinámicos, los que pueden procesar más rápido.
  • Si es posible, divida sus elementos estáticos entre diferentes dominios y subdominios, para obtener conexiones paralelas HTTP. Para colocar esto en su lugar, abra el archivo /config/defines.inc.phpy agregue estas líneas (adaptadas a sus necesidades):

    Code Block
    html
    html
    
    if ( $_SERVER['REMOTE_ADDR'] != '127.0.0.1' )
    {
      define( '_THEME_IMG_DIR_',   'http://img2.xxx.com/'       );
      define( '_THEME_CSS_DIR_',   'http://css.xxx.com/'        );
      define( '_THEME_JS_DIR_',    'http://js.xxx.com/'         );
      define( '_THEME_CAT_DIR_',   'http://img1.xxx.com/c/'     );
      define( '_THEME_PROD_DIR_',  'http://img1.xxx.com/p/'     );
      define( '_THEME_MANU_DIR_',  'http://img1.xxx.com/m/'     );
      define( '_PS_IMG_',          'http://img1.xxx.com/'       );
      define( '_PS_ADMIN_IMG_',    'http://img1.xxx.com/admin/' );
    } else {
      define( '_THEME_IMG_DIR_',   _THEMES_DIR_ . _THEME_NAME_ . '/img/' );
      define( '_THEME_CSS_DIR_',   _THEMES_DIR_ . _THEME_NAME_ . '/css/' );
      define( '_THEME_JS_DIR_',    _THEMES_DIR_ . _THEME_NAME_ . '/js/'  );
      define( '_THEME_CAT_DIR_',   __PS_BASE_URI__ . 'img/c/'            );
      define( '_THEME_PROD_DIR_',  __PS_BASE_URI__ . 'img/p/'            );
      define( '_THEME_MANU_DIR_',  __PS_BASE_URI__ . 'img/m/'            );
      define( '_PS_IMG_',          __PS_BASE_URI__ . 'img/'              );
      define( '_PS_ADMIN_IMG_',    _PS_IMG_.'admin/'                     );
    }
    

...

El modo seguro de PHP se encuentra obsoleto en la última versión de PHP y no debe ser utilizado. Para PrestaShop en particular, tener Modo Seguro activado puede hacer que los módulos de pago se vuelvan inútilesinservibles.

Actualizaciones

El código de sus aplicaciones PHP es el único camino vulnerable a su servidor. Por lo tanto, es muy recomendable actualizar siempre sus aplicaciones de servidor: PHP, MySQL, Apache y cualquier otra aplicación en el cual se ejecuta su sitio.

...