我正在使用 Asp.Net MVC 3 + Razor + MathJax 开发一个数学网站。
MathJax 是一个 JavaScript 库,用于在 Web 浏览器上呈现 TeX 或 LaTeX 代码。
而 TeX 或 LaTeX 代码表示数学内容,例如内联数学 $y=mx+c$
和显示的数学 \[y=mx+c\]
.
现在我的网站可以接受输入,例如$x<y$
.但是它不能接受 $x<y>z$
因为框架认为此输入容易受到 XSS 和 XSRF 的攻击。</p>
简而言之,我应该做什么来完成我想要的,但它不会打开安全漏洞。
最佳答案
在 ASP.NET MVC 3 中,您可以使用 [AllowHtml]
修饰需要接受此输入的模型的属性。属性。这样,您就不会被迫禁用整个 Controller 操作的输入验证,而以前是通过使用 [ValidateInput]
装饰它来完成的。属性。所以在你的模型上
public class MathematicsViewModel
{
public int Id { get; set; }
public string Name { get; set; }
[AllowHtml]
public string MathematicFormula { get; set; }
}
然后让你的 Controller Action :
[HttpPost]
public ActionResult(MathematicsViewModel model)
{
// model.MathematicFormula will now accept input like $x<y>z$
...
}
在您的 View 中,您可以有一个名为 MathematicFormula
的文本框,用户可以在其中键入这些字符,您不会得到异常。
另外不要忘记在您的 web.config 中设置以下内容,否则此属性在 .NET 4.0(这是 ASP.NET MVC 3 使用的)中无效:
<httpRuntime requestValidationMode="2.0"/>
关于javascript - 如何允许我的 Asp.net MVC 3 Web 应用程序使用 MathJax 接受用户输入 $x<y>z$?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5177630/