Frage

In einem meiner Projekte haben meine Benutzer einen speziellen Teil meiner Website ({Benutzername} .example.org). In dieser Subdomain habe ich vor, das Design leicht zu ändern. Ich habe mir eine Online -Website angesehen, die das bereits tut, wie Tumblr, Posterös und Shopify.

In Bezug auf die Sprache dieser Anwendung habe ich sie mit Django gestartet, was ich erfolgreich implementierte a "Vorlage -Rendering basierend auf dem URL -Namen mit Standard als Fallback" (http://someuser.example.com lädt die Vorlagen in Vorlagen/einem Teilnehmer/* oder in Vorlagen/generisch/*, wenn nicht in der ersten gefunden wird). Aber ich kann es in PHP oder spielen! Framework exportieren, wenn sie an meine Bedürfnisse angepasst sind.

Die verwendete Template -Engine ist Jinja2, da es so einfach ist wie die Django -Template -Engine, leicht zu erlernen und sicher (kein Python -Coode kann (sollte normalerweise!) Ausgestellt werden).

Hier sind die Vor-/Nachteile jeder Lösung, die ich gefunden habe. Ich würde Ihre Gedanken dazu sehr schätzen und wie Sie es tun würden, warum. Vielen Dank.

Hinweis: Die Benutzer haben ein gutes Wissen in HTML/CSS.

Vars ändern (wie Titelfarbe usw.)

  • Profis:

    1. Einfach und sicher
  • Nachteile:

    1. Zu eingeschränkt, ein Benutzer, der seine Website personalisieren möchte

Laden Sie nur CSS hoch

  • Profis:

    1. Einfach zu integrieren
    2. Sicher
  • Nachteile:

    1. Begrenzt
    2. Wo werden das Benutzerbild gespeichert? (Logo, Hintergrund, etwas Gradienten usw.)

Ermöglichen Sie den Benutzer, Vorlagen zu bearbeiten (in der Datenbank gespeichert)

  • Profis:

    1. Änderungen sind wichtiger
    2. Der Benutzer kann (fast) frei tun, was er will (implementiert GA, Feedburner usw.)
  • Nachteile:

    1. Wo setzen sie die statischen Dateien (Logo, Hintergrundbild, einige Spezialeffekte (Gradient)) ein?
    2. Die Vorlage wird in der Datenbank gespeichert, für die eine weitere SQL -Anforderung für jede angezeigte Seite erforderlich ist

Ermöglichen Sie den Benutzer, Vorlagen zu bearbeiten (in Dateien gespeichert)

  • Profis:

    1. Änderungen sind wichtiger
    2. Der Benutzer kann (fast) frei tun, was er will (implementiert GA, Feedburner usw.)
    3. Ein FTP -Zugriff kann aktiviert werden und rooten den Benutzer in seiner Vorlage.
  • Nachteile:

    1. Das gleiche Problem für die statischen Dateien

Auch wenn ich festgefahren bin, geht es darum, wie man statische Dateien (Bilder, CSS, JS) umgeht: Ich kann nicht sehen .

Danke für deine Hilfe, ich schätze es!

War es hilfreich?

Lösung

Ok, ich werde mich anhand dessen, was ich gemacht habe, und meiner Recherche antworten.

Wie Steve erwähnt, müssen Sie sehr vorsichtig sein, wenn Sie Benutzer das Seitenlayout anpassen lassen.

Das Risiko muss gut bewertet werden!

In meinem Fall ist es in gewisser Weise möglich, die vollständigen HTML/CSS/JS zu ändern, wie Posterös oder Tumblr tut.

Die Risiken sind:

  • Ein Benutzer könnte einen JavaScript -Code hinzufügen, der ein Auth -Cookie anderer Benutzer sammelt. Dieser Benutzer könnte auf jeden Token -Auth zugreifen, der für den Administratorteil der Benutzer zugänglich ist. Eine einfache Lösung besteht darin, Cross -Cookies zwischen dem Administratorteil und der Benutzerwebsite zu vermeiden.
  • Ein Benutzer könnte versuchen, Code in der Vorlage wie Python, PHP, Java, Ruby usw. auszuführen (in Bezug auf das, was er verwendet wird). Die Lösung hier besteht darin, eine Vorlagen -Engine zu verwenden, die die Verwendung von Code vollständig nicht zulässt, nur Tags. Jinja2 Für Python passt das perfekt dazu.

Wenn diese beiden Bedingungen gut bewertet werden, ist die Option "Ermöglichen Sie den Benutzer, Vorlagen zu bearbeiten (in der Datenbank gespeichert)"Ist eine gute Lösung.

Aber wenn Sie sich Sorgen um zu viele Treffer machen, die die Datenbank haben könnte, die letzte Lösung, auch bekannt als ", auch bekannt als", "Ermöglichen Sie den Benutzer, Vorlagen zu bearbeiten (in Dateien gespeichert)", könnte möglich sein, wenn:

  • Sie stellen sicher, dass der Benutzer nicht auf einen anderen Ordner zugreifen kann, mit dem das Vorlageverzeichnis er zugreifen kann. Sie können dies mit so etwas wie dem Einrichten eines FTP -Servers tun, der die Datenbank für den Benutzerzugriff (wie ProfTPD mit MySQL) und den Benutzer in seiner Vorlage -Dir. Eine Quote ist auch sehr wichtig eingerichtet, um zu vermeiden, dass Ihr Benutzer sein Vorlage als Lagergerät verwendet.)

Nun, ich glaube, ich habe das ganze Problem behandelt. Es ist möglich, dass ich einige Punkte vermisse, wenn es der Fall ist, fügen Sie bitte einen Kommentar oder einen neuen Beitrag hinzu und ich werde die Antwort abschließen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top