Para personalizar su tienda Prestashop , es necesario crear o comprar un tema. Estos temas son más comúnmente llamado "Plantillas".
Para tratar el código de estos temas, Prestashop utiliza un motor de plantillas: Smarty, que también se utiliza en muchos otros CMS o aplicaciones. (PLICI, Pligg, Joomla, Wordpress, con un plug-in, etc ...).
El problema que queremos describir hoy es que una plantilla de Prestashop puede ser copiado, robado, robado en cuestión de segundos.
Vamos a ver cómo proteger a su plantilla o Prestashop tema.
El procedimiento descrito a continuación se va a ejecutar a su propio riesgo. No podemos de ninguna manera ser considerado responsable si su tienda no funciona, o el tema ya no se muestra. Recuerde hacer copias de seguridad que se modifican.
Resumen
1. ¿Cómo se puede robar su plantilla o tema de Prestashop
2. Protegerse a sí mismos simplemente robada por un tema Prestashop. Htaccess
3. Cómo proteger la pantalla de plantilla Prestashop
4. Alternativa
5. Conclusión
1. ¿Cómo se puede robar su plantilla o Prestashop tema?
Tenemos en primer lugar, se explicará el origen del problema radica en el uso de Smarty por PrestaShop.
Tenga en cuenta que cualquier CMS que utilice de Smarty cómo este problema sería utilizar Prestashop. Esto no es un fallo del Smarty, o Prestashop. Es sólo un uso torpe.
Para mostrar el código html de tu tema, Smarty compila varios archivos de su plantilla. Estos archivos pueden ser archivos con la extensión. "TPM". "PHP" o de otra índole.
Aquí es donde radica el problema. Prestashop utiliza los archivos de las plantillas basadas en la extensión. "TPM".
¿Por qué es esto un problema?
Al tratar de acceder directamente a un archivo con la extensión ". TPL", su contenido se muestra en "claro".
Con el código de Prestashop, sabemos que en un gráfico, hay archivos necesarios para visualizar el tema de la tienda (a menos que haya cambiado varias partes del código de Prestashop, que suena complicado). Así que sabemos que los archivos de Prestashop llamado: "index.tpl", "header.tpl", "footer.tpl", "404.tpl", etc.
Vamos a tomar un ejemplo concreto, nuestro equipo cuenta con una tienda corriendo Prestashop http://www.magavenue.com/boutique/
Sabemos que los archivos de estilo (CSS), licenciantes estilizar el tema, se encuentran en una subcarpeta del tema (carpeta / css /). Es lo mismo para las imágenes relacionadas con el tema, o los archivos javascript.
Así que ver el origen de nuestra tienda (con cualquier navegador), busque la línea de la dirección del archivo css para cargar y tenemos la dirección donde el tema utilizado por nuestra tienda. (Se podría hacer lo mismo con una imagen, por ejemplo).
Si se muestra la fuente de nuestra tienda que tenemos en el principio del código, la siguiente línea:
Así que ahora sabemos que nuestro tema Prestashop se encuentra en: http://www.magavenue.com/boutique/themes/magavenue/
Una vez que lo consiguió, nada es más fácil recuperar los archivos desde el tema de nuestra tienda. Sólo tiene que añadir los nombres de archivo diferentes que siguen a esta dirección.
Por ejemplo:
http://www.magavenue.com/boutique/themes/magavenue/header.tpl
http://www.magavenue.com/boutique/themes/magavenue/footer.tpl
Nos queda por recuperar los archivos CSS, JavaScript, y diferentes archivos de imagen. El hecho de que siempre habrá emisión sin codificar.
En cuestión de minutos, se han recuperado un tema Prestashop completa.
¿Qué diferencias entre la recuperación de archivos. Dwt un Prestashop y acceder directamente a la fuente?
Si accede a un Prestashop y ver la página de origen, sólo podrá ver el código compilado del tema, es decir, el código HTML. Pero va a ser muy duro para poder reunir lo que para obtener el tema utilizado en otra tienda. Mientras que en TPM recuperación de archivos., Se obtiene un tema completo que se puede implementar en un Prestashop, para generar el código html fácilmente.
2. Protegerse a sí mismos simplemente robada por un tema Prestashop. Htaccess
Una forma de prevenir el robo de su plantilla de Prestashop es utilizar un archivo. Htaccess.
De hecho, si alguien la prueba para acceder directamente a diferentes archivos de TPM. Como hemos demostrado anteriormente, es redirigido a otra página (el índice de su sitio web por ejemplo).
Para ello, debe crear un archivo htaccess en el tema y luego volver a introducir el siguiente código.:
RewriteCond% {HTTP_REFERER}! ^ Http :/ / magavenue.com / boutique /. * $ [NC]
RewriteCond% {HTTP_REFERER}! Http :/ / magavenue.com / boutique ^ $ [NC]
RewriteCond% {HTTP_REFERER}! ^ Http :/ / www.magavenue.com/boutique/. * $ [NC]
RewriteCond% {HTTP_REFERER}! Http :/ / www.magavenue.com / boutique ^ $ [NC]
RewriteRule * \ (jpg | jpeg | gif | png | bmp | swf | TPM | CSS).. $ Http://www.magavenue.com/boutique/ [R, NC]
Usted, por supuesto, entender, necesita reemplazar http://www.magavenue.com/boutique/ por la dirección de su tienda.
Si las imágenes, o el tema de su tienda de PrestaShop ya no aparece, entonces es probable que haya entrado en la dirección equivocada en esta etapa.
El htaccess. No es confiable, y su plantilla de Prestashop todavía puede ser robada.
Se configura una primera barrera. Si tratamos de acceder directamente a un archivo de su tema, que volverá a dirigir al índice de su tienda.
Sin embargo, el problema no se resuelve, esta protección se puede evitar fácilmente, por lo que han venido a proteger los archivos. Pantalla de TPM.
3. Cómo proteger a su plantilla de Prestashop o el tema de la pantalla
Como explicamos en la primera parte, el problema que podemos destacar, es que los archivos de las plantillas son los archivos de Prestashop básicos. TPM que aparezcan con nitidez. Por lo tanto, debe venir para asegurar que si se accede al archivo, no se considera un archivo sin formato "texto", pero es ejecutado por el servidor en el que se encuentra.
En caso de ser más claro para que los archivos de plantilla o archivos con la extensión ". Fil", de modo que no se puede mostrar directamente, sino que ejecuta.
Para proteger a nuestro tema Prestashop de vuelo, así que vamos a cambiar todos nuestros archivos en el archivo de nuestro tema. Al cambiar sus extensiones. "TPM" a ". Php". Ya hay un archivo index.php, redirigir al usuario a acceder directamente al archivo de la plantilla. Debe eliminar con el fin de cambiar el nombre del archivo index.tpl en index.php. El htaccess. Redirigir al usuario ya.
Si uno accede a un archivo. Php no contiene php, se mostrará el código de la plantilla de todos modos.
En efecto, si accede directamente a un archivo. Dwt cambiado de nombre. Php, siempre tendremos acceso a la fuente de la plantilla.
Esto requiere que el código se ejecuta como código PHP.
Vamos a añadir la parte superior de cada archivo "TPM" el siguiente código.:
<?
{/ If}
¿Qué significa este código?
Si se accede a un archivo directamente que contiene este código, el "{if $ magavenueblog == 1}" se trata como texto simple y llanamente, no se interpretará como PHP.
Por contra, desde el punto donde el intérprete recaerá en el "<?", El archivo será interpretado como PHP, y se producirá un error. De hecho, el código "{/ if}" no es una afirmación válida en PHP. Ya no será posible visualizar el código de la plantilla directamente.
Por contra, si se suma a través de la utilización de la plantilla Prestashop y el Smarty lo tanto, cuando el intérprete llega a "{if $ magavenueblog == 1}", que se verá si hay un tema en el variable $ magavenueblog. No existe, no se mostrará el "<?". La pantalla de la plantilla y luego se puede hacer adecuadamente sin el código agregado no es un problema.
¿Cómo se cambia para Prestashop tiene en cuenta el archivo. Php en lugar de. TPM?
El principal problema para las plantillas de seguridad, fue capaz de modificar fácilmente para adaptarse a las plantillas de PrestaShop con los archivos. Archivos PHP en su lugar toneladas de peso muerto..
De hecho, en cada página de su tienda, que tiene funciones que llaman a los archivos de Smarty. TPM. Por lo tanto, sería muy larga para todos los cambios uno por uno, para no olvidar, y repetir esta actualización de todos los días.
Por lo tanto la función de interceptar y entre los archivos de Smarty invocando Prestashop para redirigir las peticiones a una DWT archivo. En un archivo. Php.
¿Debo modificar la TPM. Contenida en los módulos y otros Prestashop?
Otro de los problemas en nuestra solución es que lo que inicialmente debe modificar los archivos. Dwt de archivos en nuestro tema. Php. Pero también tenemos que cambiar todos los archivos DWT. En los módulos, hacer esto cada vez que instala un nuevo módulo. En resumen también parece muy complicado de implementar.
Así que vamos a dirigir nuestra solicitud de establecimiento de una condición. Esto pondrá a prueba si un archivo de TPM. Existe, y si un archivo llamado PHP..
Así que si los archivos de temas, son. Php Prestashop las tendrá en cuenta, sino que también tendrá en cuenta los archivos. TPM en los módulos, sin necesidad de que cambiarles el nombre.
Cómo hacer que el Smarty redirigir?
Tenemos que cambiar el contenido del archivo Smarty.class.php en las herramientas y / smarty / tu tienda PrestaShop.
En la línea 1106, debe cambiar la función de visualización y añadir:
. $ Resource_name = substr ($ resource_name, 0, -4). Php ';
Antes:
Función de visualización ($ resource_name, $ cache_id = null, $ compile_id = null)
{
$ This-> currentTemplate = substr (basename ($ resource_name), 0, -4);
$ This-> fetch ($ resource_name, $ cache_id, compile_id, true);
}
Después de
Función de visualización ($ resource_name, $ cache_id = null, $ compile_id = null)
{
if (file_exists ($ resource_name))
. $ Resource_name = substr ($ resource_name, 0, -4). Php ';
$ This-> currentTemplate = substr (basename ($ resource_name), 0, -4);
$ This-> fetch ($ resource_name, $ cache_id, compile_id, true);
}
A continuación, debe modificar la función de ir a buscar la línea de 1123 y añade:
. $ Resource_name = substr ($ resource_name, 0, -4). Php ';
Antes:
la función fetch ($ resource_name, $ cache_id = null, $ compile_id = null, $ pantalla = false)
{
estática $ array = _cache_info ();
_smarty_old_error_level $ = $ this-> debug? error_reporting (): error_reporting (isset ($ this-> error_reporting)
? $ This-> error_reporting: error_reporting () & ~ E_NOTICE);
[...]
Después de:
la función fetch ($ resource_name, $ cache_id = null, $ compile_id = null, $ pantalla = false)
{
estática $ array = _cache_info ();
if (file_exists ($ resource_name))
. $ Resource_name = substr ($ resource_name, 0, -4). Php ';
_smarty_old_error_level $ = $ this-> debug? error_reporting (): error_reporting (isset ($ this-> error_reporting)
? $ This-> error_reporting: error_reporting () & ~ E_NOTICE);
[...]
Y por último la función _smarty_include en la línea 1854 y agrega:
. $ Params ['smarty_include_tpl_file'] = substr ($ params ['smarty_include_tpl_file'], 0, -4). Php ';
Antes:
_smarty_include función ($ params)
{
Copia de seguridad de $ = $ this-> currentTemplate;
$ This-> currentTemplate = substr (basename ($ params ['smarty_include_tpl_file']), 0, -4);
[...]
Después de:
_smarty_include función ($ params)
{
Copia de seguridad de $ = $ this-> currentTemplate;
if (file_exists ($ params ['smarty_include_tpl_file']))
. $ Params ['smarty_include_tpl_file'] = substr ($ params ['smarty_include_tpl_file'], 0, -4). Php ';
$ This-> currentTemplate = substr (basename ($ params ['smarty_include_tpl_file']), 0, -4);
[...]
La plantilla está protegido contra el problema señalado anteriormente.
Consciente de que el enfoque descrito es complicado, podemos ejecutar el procedimiento para usted. Puede solicitar este servicio en nuestra tienda .
4. Alternativa
Otra solución podría ser la de mover las carpetas que contienen las plantillas, en una parte del servidor no es accesible a través de Internet. Pero esto sólo puede hacerse por personas con un servidor capaz de hacer esto (por ejemplo, un servidor dedicado). A continuación, editar el archivo de configuración de Smarty, y dar la dirección de la carpeta para acceder al tema.
5. Conclusión
Estas soluciones pueden proteger a su plantilla o tema de su tienda, el problema que han puesto de relieve.
No obstante, conviene tener en cuenta que esto no significa que la plantilla es totalmente seguro. Usted no estará protegido si tiene:
- una falla en el servidor
- cometido un error
- o si hay un problema aún no actualizado.
- Advertencia su módulo Paybox para Prestashop probablemente no está lo suficientemente seguro Siéntase libre para firmar para arriba para los canales RSS no se pierda ningún article.Nous Recientemente tuve la oportunidad de experimentar uno de nuestros clientes un módulo con Paybox muchas los agujeros de seguridad. Queremos alertar a nuestros lectores ...
Los artículos sobre el mismo tema:
Palabras clave:
copia , tema del pirata , Prestashop , proteger , plantilla , de vuelo













Yo también instalar Módulos. Quiero cambiar las cosas templete con el ejemplo de hacer las Entreneurs cambiar el nombre que quiero es lo que puedo y si es así ¿cómo??
gracias de antemano.
Hola y felicidades para este puesto.
Para superar el saqueo de los *. Dwt (no sabía que era posible para el caso) He instalado todos los archivos de clases y plantillas fuera del servidor de directorio / www / público. Al parecer funciona. El servidor que utilizo es un OVH compartida.
Yo prestashop instalación WampServer wampmanager pero no puede ejecutar, busco su ayuda :)
@ Cedric la confusión es que este no es el servidor que hace que las peticiones HTTP, pero el cliente.
Si bien puedes versión dev en su máquina, el cliente y el servidor coincidirá con la misma máquina. Por lo tanto, una "Dejar de localhost" y abrir el acceso a los recursos.
Pero si usted navega en el sitio en vivo, el cliente es el PC y el servidor es otra máquina en un centro de datos. Estos son entonces dos máquinas diferentes.
Así, su "Dejar de localhost" como usted pone en su. Htaccess permite al servidor para hacer peticiones HTTP a sí mismo ... que es de interés limitado (como ya he dicho, es el cliente que lo solicite HTTP).
@ Poulpillusion
Producción o dev, localhost significa lo mismo: la máquina donde se ejecuta el script en la producción ... así que esto es el propio servidor, no veo donde hay confusión?