Asp.net mvc 安全剃须刀模板引擎

Asp.net mvc 安全剃须刀模板引擎,asp.net-mvc,asp.net-mvc-3,razor,Asp.net Mvc,Asp.net Mvc 3,Razor,我是一个asp.NETMVC3新手,我正在开发一个允许用户自定义布局和使用razor模板引擎的网站。他们可以直接编辑模板文件 如何从模板中仅允许使用某些显式帮助程序检索用户。我不希望用户访问其他危险的服务器功能,只使用我添加的功能 谢谢有两种情况: 你信任你的用户:在这种情况下,你不应该担心,因为他们不会破坏你的网站 你不信任你的用户(很可能):在这种情况下,给他们直接修改模板的可能性似乎是一件冒险的事情。您将需要一个非常可靠的消毒工具,它将过滤您不需要的所有其他助手。太宽了。给他们写标记的可能

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

如何从模板中仅允许使用某些显式帮助程序检索用户。我不希望用户访问其他危险的服务器功能,只使用我添加的功能

谢谢

有两种情况:

  • 你信任你的用户:在这种情况下,你不应该担心,因为他们不会破坏你的网站
  • 你不信任你的用户(很可能):在这种情况下,给他们直接修改模板的可能性似乎是一件冒险的事情。您将需要一个非常可靠的消毒工具,它将过滤您不需要的所有其他助手。太宽了。给他们写标记的可能性是可以的,例如一些WYSIWYG编辑器,但是给他们访问服务器代码是自找麻烦的

  • 感谢您的回答,我想知道razor模板如何可以用作模板引擎,用户可以使用我们允许的所有功能,但不会损害服务器端。我正在制定一个方案,其中用户提供布局模板,并放置一些特殊标记,如上传后我将替换为RenderSection的位置。它基本上是用户提供的常规HTML(正如您所建议的)。我看到的主要问题是确保原始上传中没有包含Razor/C代码。我无法将布局呈现为Html.Raw/Encoded,因为它毕竟是一个布局,需要RenderSection调用。我想用一个HTML验证器来捕获大部分内容,但是像href=“@(some razor/C#”)这样的东西看起来像是有效的HTML。