So passen Sie Ihr Geschäft Prestashop , müssen Sie erstellen oder kaufen ein Thema. Diese Themen sind allgemein als "Vorlagen".

Code, um diese Themen zu behandeln, verwendet Prestashop eine Template Engine: Smarty, die auch in vielen anderen verwendet wird CMS oder Anwendungen. (Plica, Pligg, Joomla, Wordpress mit einem Plugin, etc ...).

Das Problem wollen wir beschreiben, ist heute, dass eine Prestashop Vorlage kopiert werden können, gestohlen, gestohlen in Sekunden.
Wir werden sehen, wie Sie Ihre Prestashop Vorlage oder ein Thema zu schützen.

Die nachfolgend beschriebene Vorgehensweise ist es, auf eigene Gefahr laufen. Wir können in keiner Weise verantwortlich gemacht werden, wenn Ihr Geschäft nicht funktioniert, oder deiner Geburt nicht mehr angezeigt. Überlegen Sie sich ein Backup der Dateien, die Sie ändern.

Zusammenfassung

1. Wie können Sie stehlen Ihre Vorlage oder Thema Prestashop?

Wir werden zunächst erklären, wo das Problem liegt in der Verwendung von Smarty durch Prestashop.
Seien Sie sich bewusst, dass jeder CMS, dass die Verwendung Smarty, wie dieses Problem wäre Prestashop verwenden möchten. Dies ist weder ein Fehler von Smarty oder Prestashop. Es ist nur eine peinliche verwenden.

Um den HTML-Code Ihrer Thema, erstellt Smarty die verschiedenen Dateien aus Ihrer Vorlage. Diese Dateien können Dateien mit der Erweiterung sein. "Dwt". "PHP" oder auf andere Weise.
Dies ist, wo das Problem liegt. Prestashop Vorlagen verwendet basierte Dateien mit der Endung ". Dwt".

Warum ist das ein Problem?

Beim Versuch, den direkten Zugriff auf eine Datei mit der Endung ". DWT", wird ihr Inhalt in "clear" angezeigt.

Mit dem Code von Prestashop wissen wir, dass in einem Diagramm, gibt es Dateien, die zum Thema des Ladens angezeigt (sofern Sie mehrere Teile des Codes Prestashop, die kompliziert klingt geändert haben). So wissen wir, dass Prestashop Dateien mit dem Namen: "index.tpl", "header.tpl", "footer.tpl", "404.tpl" etc..

Wir werden ein konkretes Beispiel zu nehmen, hat unser Team einen Laden läuft Prestashop http://www.magavenue.com/boutique/
Wir kennen die Style-Dateien (css) mit dem Thema zu stilisieren, sich in einem Unterordner des Themas (Ordner / css /) befinden. Es ist das gleiche für Bilder im Zusammenhang mit dem Thema, oder JavaScript-Dateien.

Also nur um zu zeigen, die Quelle unseres Shops (mit jedem Browser), um für die Linie, die die Adresse des CSS-Datei zu laden aussehen und wir haben die Adresse, wo das Thema durch unseren Shop verwendet. (Wir könnten das gleiche mit einem Bild zum Beispiel zu tun).
Wenn wir die Quelle unseres Shops zeigen, dass wir ganz am Anfang des Codes, die folgende Zeile:

<link rel="stylesheet" type="text/css" href="/boutique/themes/magavenue/css/global.css" media="all" />

So wissen wir jetzt, dass unsere Prestashop Thema bei ist: http://www.magavenue.com/boutique/themes/magavenue/

Sobald es bekam, ist es einfach, Dateien aus dem Thema in unserem Shop abrufen. Fügen Sie einfach die verschiedenen Dateinamen im Anschluss an diese Adresse.
Zum Beispiel:

http://www.magavenue.com/boutique/themes/magavenue/404.tpl
http://www.magavenue.com/boutique/themes/magavenue/header.tpl
http://www.magavenue.com/boutique/themes/magavenue/footer.tpl

Es bleibt uns nur noch Dateien CSS, JavaScript und anderen Bilddateien zu erholen. Dass sie immer noch in den klaren ausgestrahlt werden.
Innerhalb weniger Minuten haben Sie ein komplettes Thema Prestashop gesammelt.

Was ist der Unterschied zwischen die Dateien wiederherstellen. DWT eines Prestashop und Zugriff auf die Quelle direkt?

Wenn Sie ein Geschäft Prestashop und gehen Sie den Quelltext der Seite werden Sie nur den kompilierten Code des Themas zu sehen, dh die html. Aber es wird sehr schwer sein zu können, so zusammenbauen, wie das Thema auf einem anderen Shop verwendet erhalten. Während in Abrufen von Dateien. DWT, erhalten Sie ein komplettes Thema, das Sie einrichten können ein Geschäft Prestashop, um den HTML-Code leicht zu generieren.

2. Schützen Sie sich einfach durch einen Prestashop Thema gestohlen. Htaccess

Ein Weg, um Diebstahl Ihrer Prestashop Vorlage zu verhindern, ist a. Htaccess verwenden.
In der Tat, wenn jemand den direkten Zugriff auf verschiedene Dateien versucht. DWT wie wir oben gezeigt haben, ist es zu einer anderen Seite (der Index der Website zum Beispiel) umgeleitet.
Um dies zu tun, müssen Sie a. htaccess-Datei in Ihrem Thema zu erstellen und dann wieder in den folgenden Code ein:

RewriteEngine on
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 | dwt | css). $ Http://www.magavenue.com/boutique/ [R, NC]

Natürlich werden Sie auch verstehen, müssen zu ersetzen mit der Adresse Ihres Shops http://www.magavenue.com/boutique/.
Wenn die Bilder, oder das Thema Ihrer PrestaShop speichern nicht mehr angezeigt, dann haben Sie wahrscheinlich die falsche Adresse in dieser Phase getreten.

Die. Htaccess ist nicht zuverlässig, und Ihre Prestashop Vorlage kann immer noch gestohlen werden.

Sie richten eine erste Barriere. Wenn wir den direkten Zugriff auf eine Datei in Ihrem Thema versuchen, werden wir den Index Ihres Shops umzuleiten.
Doch das Problem ist nicht gelöst, ist dieser Schutz einfach überwunden werden, so dass Sie kommen, um Dateien zu schützen. DWT in der Anzeige.

3. So schützen Sie Prestashop Thema oder eine Vorlage der Anzeige

Wie wir schon im ersten Teil das Problem, dass wir hervorheben, dass die Dateien von Vorlagen Prestashop der Basis. Dwt dass klar erscheinen zu bilden. Es sollte daher kommen, um sicherzustellen, dass, wenn wir auf die Datei zugreifen, es ist nicht als eine einzige Datei "text" betrachtet, sondern wird durch die Server, auf dem sie sich befindet, ausgeführt.
Sollten noch deutlicher werden, so dass die Template-Dateien oder Dateien mit der Endung ". Php", so dass sie nicht direkt angezeigt werden, sondern ausgeführt.

Um unsere Prestashop Thema des Fluges zu schützen, so werden wir alle unsere Dateien in die Datei von unserem Thema zu ändern. Durch die Veränderung ihrer Erweiterungen. "DWT" to ". Php". Es gibt bereits eine Datei index.php, um den Benutzer direkten Zugriff auf die Datei des Templates umzuleiten. So müssen Sie entfernen, um die Datei index.tpl in index.php umzubenennen. Die. Htaccess redirect der Benutzer bereits.

Wenn Sie eine Datei. PHP PHP nicht enthält zuzugreifen, wird es den Template-Code trotzdem anzuzeigen.
In der Tat, wenn wir direkten Zugriff auf eine Datei. Dwt. Umbenannt Php, werden wir immer Zugriff auf die Quelle der Vorlage.
Dies erfordert, dass der Code als PHP-Code ausgeführt wird.
Wir werden daher auf der Oberseite jeder Datei hinzufügen "DWT"-Code.:

{If $ magavenueblog == 1}
<?
{/ If}

Was ist dieser Code?

Wenn wir eine Datei direkt mit diesem Code zugreifen, der "{if $ magavenueblog == 1}" wird im Klartext und einfache behandelt, wird es nicht als PHP interpretiert werden.
Durch die Nachteile aus der Zeit, wo der Interpreter auf dem "<?", fallen wird, wird die Datei als PHP interpretiert werden, und ein Fehler auftreten wird. In der Tat ist der Code "{/ if}" ist keine gültige Anweisung in PHP. Es wird nicht länger möglich sein, die Template-Code direkt anzuzeigen.

Durch die Nachteile, wenn wir Teil der Vorlage, indem Sie die Smarty Prestashop sind und daher, wenn der Interpreter kommt auf "{if $ magavenueblog == 1}", aussehen wird, wenn es ein Thema in der Variable $ magavenueblog. Es existiert nicht, wird nicht die "<?". Die Anzeige der Vorlage kann dann ordnungsgemäß durchgeführt werden, ohne den zusätzlichen Code ist zu viel Mühe.

Wie ändere ich Prestashop, so dass sie berücksichtigt die Datei. Php statt. Dwt?

Das Hauptproblem, um die Vorlagen zu sichern, konnte leicht zu modifizieren, um PrestaShop Vorlagen-Dateien unterzubringen. Php statt. Dwt.
In der Tat, in jeder Seite Ihres Shops, rufen Sie Funktionen Smarty-Dateien. Dwt. Es wäre sehr lang werden alle Änderungen eines nach dem anderen, nicht zu vergessen, und wiederholen Sie dies für jede Änderung.
Daher ist die Funktion zwischen abfangen und Prestashop Aufruf Smarty-Dateien auf Anfragen für eine Datei umleiten. DWT in eine Datei. Php.

Sollte ich modifizieren. Dwt in den Modulen und anderen Prestashop enthalten?

Ein weiteres Problem in unserer Lösung ist, dass Sie zunächst ändern sich. DWT-Datei in unser Thema. Php. Aber wir müssen auch bei allen die. Dwt in den Modulen enthaltenen, tun dies jedes Mal, wenn Sie ein neues Modul. Kurz, es scheint auch sehr kompliziert zu implementieren.

So werden wir leiten unsere Anforderung an eine Bedingung zu etablieren. Hiermit wird geprüft, ob a. Dwt existiert, und wenn nicht, rufen a. Php.
So, wenn die Dateien in Ihrem Thema. Sind Php Prestashop werde sie berücksichtigen, aber es wird auch zu berücksichtigen, die. Dwt in den Modulen enthaltenen, aber Sie müssen sie umbenennen.

Wie Smarty umleiten?

Wir müssen die Smarty.class.php in der Datei / tools / smarty / Ihren PrestaShop speichern ändern.

In Zeile 1106, müssen Sie die Display-Funktion und fügen hinzu:

if (file_exists ($ resource_name))
$ Resource_name = substr ($ resource_name, 0, -4) .. 'php';

Vorher:

Funktions-Display ($ 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);

}

Nach

Funktions-Display ($ 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);

}

Wir müssen ändern Sie dann die Funktion, um die Linie 1123 zu holen und hinzuzufügen:

if (file_exists ($ resource_name))
$ Resource_name = substr ($ resource_name, 0, -4) .. 'php';

Vorher:

Funktion fetch ($ resource_name, $ cache_id = null, $ compile_id = null, $ display = false)

{

static $ _cache_info = array ();

_smarty_old_error_level $ = $ this-> Debugging? error_reporting (): error_reporting (isset ($ this-> error_reporting)
? $ This-> error_reporting: error_reporting () & ~ E_NOTICE);
[...]

Nach:

Funktion fetch ($ resource_name, $ cache_id = null, $ compile_id = null, $ display = false)

{

static $ _cache_info = array ();

if (file_exists ($ resource_name))

$ Resource_name = substr ($ resource_name, 0, -4) .. 'php';

_smarty_old_error_level $ = $ this-> Debugging? error_reporting (): error_reporting (isset ($ this-> error_reporting)
? $ This-> error_reporting: error_reporting () & ~ E_NOTICE);
[...]

Und schließlich die Funktion _smarty_include line 1854 und hinzufügen:

if (file_exists ($ params ['smarty_include_tpl_file']))
$ Params ['smarty_include_tpl_file'] = substr ($ params ['smarty_include_tpl_file'], 0, -4) .. 'php';

Vorher:

_smarty_include Funktion ($ params)

{

$ Backup = $ this-> currentTemplate;

$ This-> currentTemplate = substr (basename ($ params ['smarty_include_tpl_file']), 0, -4);
[...]

Nach:

_smarty_include Funktion ($ params)

{

$ Backup = $ 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);
[...]

Die Vorlage ist von der genannten Probleme geschützt.

Im Bewusstsein, dass die beschriebene Vorgehensweise kompliziert ist, können wir das Verfahren für Sie durchzuführen. Sie können um diesen Service in unserem Shop .

4. Alternative

Eine andere Lösung könnte darin bestehen, bewegen Sie den Ordner mit Vorlagen, in einem Teil der Server nicht über das Internet zugänglich. Dies kann aber nur von Personen mit einem Server in der Lage, diese (zum Beispiel ein dedizierter Server) zu tun durchgeführt werden. Es wird dann bearbeiten Sie die Konfigurationsdatei für Smarty, und geben Sie die Adresse des Ordners, um das Thema Zugang.

5. Abschluss

Diese Lösungen schützen Ihre Vorlage oder Thema Ihres Shops, das Problem haben wir erkannt.
Wir müssen wissen, dass dies nicht bedeutet, dass Ihre Vorlage vollständig sicher ist. Sie werden nicht geschützt, wenn Sie Folgendes aufweisen:

  • eine Schwachstelle im Server
  • einen Fehler gemacht
  • oder wenn es ein Problem noch nicht aktualisiert.

    Artikel zu diesem Thema:

  1. Achtung: Ihr Paybox-Modul für Prestashop möglicherweise nicht sicher genug Fühlen Sie sich frei, um sich für RSS zu verpassen keine article.Nous hatte kürzlich die Gelegenheit, einen unserer Kunden mit vielen Modul Paybox Erfahrung Sicherheitsverletzungen. Wir wollten unseren Lesern alert ...

35 Kommentare, warum nicht verlassen Sie?

Wir werden nicht für Kommentare ein technisches Problem mit einem unserer Module unterstützen. Vielen Dank kontaktieren Sie uns direkt mit unserem Kontaktformular !

@ Cedric die Verwirrung ist, dass dies nicht der Server, der HTTP-Anfragen macht, sondern der Kunde.

Wenn Sie die Ausrichtung der dev-Version auf Ihrem Rechner befinden, wird dem Client und dem Server abzugleichen der gleichen Maschine. So ist ein Zugriff auf viele Ressourcen öffnen "von localhost Allow".

Aber wenn man auf der Live-Website segeln, ist der Kunde Ihrem PC und dem Server wird eine andere Maschine in einem Rechenzentrum. Die Frage ist dann zwei verschiedene Maschinen.

Also Ihr "von localhost Allow", wie Sie in Ihrer. Htaccess kann der Server HTTP-Anfragen an sich selbst zu machen ... was ist von begrenztem Wert (wie ich schon sagte, ist es der Kunde, der Zugriffe HTTP).

poulpillusion 29. August 2011 um 17 h 17 min

@ Poulpillusion

Produktion oder dev, localhost dasselbe bedeutet: die Maschine, wo das Skript in der Produktion läuft ... so it dem Server selbst ist, weiß ich nicht sehen, wo gibt es Verwirrung?

Cédric 29. August 2011 53 min bis 6 h

@ VitamineSeb: Wo FilesMatch Richtlinien (die sich in meinem ersten Kommentar sprang)

Die verbotenen Sie ermöglichen den Zugriff auf Dateien. Dwt, die ohnehin nur von Smarty geladen, und nie durch eine HTTP-Anforderung. Sie sollten niemals Dienstleistungen werden von Apache, und das ist, was diese Richtlinien. Sie haben auch in die dev-Version von prestashop (siehe Datei themes /. Htaccess) integriert worden, aber nicht in der stabilen Version.

Ich denke auch, Ihrem "von localhost Allow" ist nutzlos auf einer aktiven Seite und kann Fehler t'induire wenn Sie eine lokale Version zu entwickeln.

poulpillusion 29. August 2011 bei 0 h 02 min

@ Poulpillusion "Deny from all" wird die Anzeige der Vorlage überhaupt zu verhindern.

Persönlich habe ich einen htaccess:

deny from all
Allow from localhost

Kein Zugriff auf die Datei oder Dateien und prestashop weiterhin gelesen und kann die Vorlage als vor der Anzeige ;)

VitamineSeb 25. August 2011 um 11 Uhr 38 min

In der Tat sind die Bilder oft kopiert ... Liebe zum Urheberrecht ... interessant zu implementieren. Htaccess

Ergonomie Website 5. Juli 2011 bis 22 h 36 min

Schreiben Sie eine Rezension