在我的一个项目中,我的用户将拥有我网站({username} .example.org)的专用部分。在该子域中,我计划让他们轻松更改设计。我看了一些已经这样做的在线网站, tumblr, 后期购物.

关于此应用程序的语言,我从Django开始 “基于URL名称的模板渲染,默认为后备” (http://someuser.example.com将在模板/someuser/*或模板/generic/*中加载模板,如果在第一个中找不到)。但是,如果它们更适合我的需求,我可以将其导出到PHP或Play!框架。

使用的模板引擎是 Jinja2, ,由于它与Django模板引擎一样简单,易于学习和安全(没有Python Coode可以(通常应该执行!))。

这是我发现的每个解决方案的优点。我真的很感谢您对此的想法以及您的想法,为什么。谢谢。

注意:用户将在HTML/CSS上有良好的知识。

更改VAR(例如标题颜色等)

  • 优点:

    1. 简单且安全
  • 缺点:

    1. 太有限了,想要个性化他的网站的用户将无法使用此解决方案这样做

仅上传CSS

  • 优点:

    1. 简单地集成
    2. 安全的
  • 缺点:

    1. 有限的
    2. 用户图像存储在哪里? (徽标,背景,一些梯度等)

允许用户编辑模板(存储在数据库中)

  • 优点:

    1. 变化更重要
    2. 用户(几乎)可以自由地做他想做的任何事情(实现GA,FeedBurner等)
  • 缺点:

    1. 他们在哪里放置静态文件(徽标,背景图像,一些特殊效果(渐变))?
    2. 模板存储在数据库中,该数据库需要为显示的每个页面提供更多SQL请求

允许用户编辑模板(存储在文件中)

  • 优点:

    1. 变化更重要
    2. 用户(几乎)可以自由地做他想做的任何事情(实现GA,FeedBurner等)
    3. 可以启用FTP访问,从而将用户扎根于其模板dir中。
  • 缺点:

    1. 静态文件的问题相同

另外,我卡住的位置是关于如何处理静态文件(图像,CSS,JS):我看不到如何在Apache(或Nginx)中定义一个apache(或nginx)中的虚拟霍斯特,以请求数据库查看哪个用户属于此url此URL 。

感谢您的帮助,我感谢!

有帮助吗?

解决方案

好的,我会根据我的工作和研究来回答自己。

正如史蒂夫(Steve)提到的那样,您必须非常谨慎,让用户自定义页面布局。

风险必须得到很好的评估!

就我而言,让用户更改完整的html/css/js是可能的 后期 或者 tumblr 做。

风险是:

  • 用户可以添加一个JavaScript代码,该代码将收集其他用户的身份cookie。这样做,该用户可以访问彼此用户的管理员的任何代币验证。 一个简单的解决方案是避免管理部门和用户网站之间的交叉cookie。
  • 用户可以尝试在模板中执行代码,例如Python,PHP,Java,Ruby等(关于使用的内容)。 这里的解决方案是使用完全禁止使用代码的模板引擎,仅标签. Jinja2 因为Python非常适合这一点。

如果对这两个条件进行了良好的评估,则选项“允许用户编辑模板(存储在数据库中)“是一个很好的解决方案。

但是,如果您担心数据库可能会有太多命中,那么最后一个解决方案,也就是“允许用户编辑模板(存储在文件中)”,如果:

  • 您确保用户无法访问其他文件夹,即他可以访问的模板目录。 您可以这样做,例如设置使用数据库用于用户访问的FTP服务器(例如带有MySQL的PROFTPD),并在其模板dir中使用用户来调用用户。设置的配额也非常重要,以避免用户将其模板DIR用作Stockage设备;)

好吧,我认为我解决了整个问题。我可能会错过一些观点,如果是这样,请添加评论或新帖子,我将完成答案。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top