gpt4 book ai didi

xss - ASP.NET MVC XSS 验证

转载 作者:行者123 更新时间:2023-12-04 17:08:38 29 4
gpt4 key购买 nike

我们正在使用 ASP.NET MVC 5.0 来构建一个网站。如果我在保存时输入一些 javascript 文本框,我会得到一个“检测到可能不安全的输入”错误页面 - 太好了。

然而,我们的一些屏幕使用 ajax 提交将 json 直接传递给 Controller ​​,这似乎跳过了上面的验证。

有没有办法在 Controller 中调用模型(或模型中的每个文本字段)的标准验证,以便抛出上述错误。
即类似的东西

 public override ActionResult Create(MyModel myModel)
{
/* Any dubious input this should throw an error*/
AntiXSS.ValidateInput(myModel);
...

最佳答案

我遇到了一个类似的问题,正如在其他答案的评论中所指出的,我们使用了 JQuery $.ajax将 JSON 发布到 MVC 操作。默认模型绑定(bind)器不会验证已发布的 JSON,从而允许针对我们的操作发布不安全的 XSS。

为了解决这个问题,我找到了 RequestValidator有一个静态方法InvokeIsValidRequestString允许

public class ValidateJsonXssAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var request = filterContext.HttpContext?.Request;
if (request != null && "application/json".Equals(request.ContentType, StringComparison.OrdinalIgnoreCase))
{
if (request.ContentLength > 0 && request.Form.Count == 0) //
{
if (request.InputStream.Position > 0)
request.InputStream.Position = 0; // InputStream has already been read once from "ProcessRequest"
using (var reader = new StreamReader(request.InputStream))
{
var postedContent = reader.ReadToEnd(); // Get posted JSON content
var isValid = RequestValidator.Current.InvokeIsValidRequestString(HttpContext.Current, postedContent,
RequestValidationSource.Form, "postedJson", out var failureIndex); // Invoke XSS validation
if (!isValid) // Not valid, so throw request validation exception
throw new HttpRequestValidationException("Potentially unsafe input detected");
}
}
}
}
}

然后,您可以装饰相关的 MVC 操作,期望可能绕过标准 XSS 预防的 JSON 发布数据:
[HttpPost]
[ValidateJsonXss]
public ActionResult PublishRecord(RecordViewModel vm) { ... }

您可以通过扩展 RequestValidator 对象来查看使用 OWASP .NET 建议自定义请求验证的其他选项,该对象公开由 ValidateInput 完成的字符串验证。 MVC 自动将其用于查询字符串、表单集合和 cookie 值的其他场景。

欲了解更多信息: https://www.owasp.org/index.php/ASP.NET_Request_Validation

关于xss - ASP.NET MVC XSS 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30319468/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com