安全的Razor模板引擎

3

我是一个asp.net mvc 3的新手,正在开发一个网站,允许用户自定义其布局并使用razor模板引擎。他们可以直接编辑模板文件。

如何限制用户只能在模板中使用一些明确的辅助程序。我不希望用户访问其他危险的服务器功能,而只使用我添加的内容。

谢谢

1个回答

3
有两种情况:
  1. 你信任你的用户:在这种情况下,你不需要担心他们会破坏你的网站。
  2. 你不信任你的用户(最有可能的情况):在这种情况下,直接让他们修改模板似乎是一件很危险的事情。你需要一个非常强大的净化工具,过滤掉所有不需要的帮助程序。这太过于宽泛了。给他们编写标记的可能性是可以的,例如使用一些所见即所得的编辑器,如WMD,但让他们访问服务器代码就是在自找麻烦。

1
感谢您的回答,我想知道如何将Razor模板用作http://www.liquidmarkup.org模板引擎,用户可以使用我们允许的所有功能,但不会对服务器端造成任何损害。 - noname.cs
我正在开发一个方案,用户提供布局模板,并放置一些特殊标签,例如<object type=BODY>,当他们上传后,我将使用RenderSection替换。基本上,它会是用户提供的常规HTML(正如您所建议的那样)。我看到的主要问题是确保他们的原始上传中不包含任何Razor/C#代码。我不能将布局呈现为Html.Raw/Encoded,因为毕竟它是一个布局,需要RenderSection调用。我考虑过使用HTML验证器来捕获大多数问题,但是像href="@(some razor/C#)"这样的东西看起来像有效的html。 - AaronLS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接