javascript - 如何允许我的 Asp.net MVC 3 Web 应用程序使用 MathJax 接受用户输入 $x<y>z$?

标签 javascript asp.net-mvc-3 xss csrf mathjax

我正在使用 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/

相关文章:

asp.net - 播放嵌入在网站上的youtube时参数无效

c# - 在 View 中禁用复选框

php - $_SERVER ['QUERY_STRING' ] 不受 XSS 攻击吗?

java - 使用 (.matches) boolean 语句可以防止 XSS 攻击吗?

javascript - js下拉子菜单项定位问题

javascript - 隐藏地址栏

c# - ASP.NET MVC Razor : Add empty value to a DropDownList

jquery - 如何在jsFiddle中使用ajax请求

javascript - 读取文件以在快速路径中使用

Javascript 和 Howler.js - 如何选择随机声音?