主体 .NET MVC 上的 XSS 验证
XSS Validation on body .NET MVC
我正在尝试解决我的申请中的问题,
每当我收到有关 mvc 应用程序的请求时,我都会使用过滤器(在 global.asax 上注册):
public class XSSAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
filterContext.HttpContext.Request.InputStream.Position = 0;
string body = null;
using (var sr = new StreamReader(filterContext.HttpContext.Request.InputStream))
{
body = sr.ReadToEnd();
}
bool isBodyValid = ***********
if (!isBodyValid)
{
filterContext.Result = new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
}
}
我想知道如何验证正文是否存在 XSS 漏洞。
谢谢
ASP.NET MVC 框架已经针对 XSS 攻击进行了保护:https://msdn.microsoft.com/en-us/library/hh882339(v=vs.110).aspx。
如果用户尝试发送 html 内容,框架将在启动控制器方法(甚至 global.asax 的 Application_BeginRequest
方法)之前抛出异常。
您可以使用 Microsoft AntiXss 库
I would like to know how to validate the body for XSS vulnerability.
在安全方面,首先,尽可能利用可用的工具,而不是自己编写。
正如一些人所指出的,ASP.Net MVC 在验证针对 XSS 的请求时已经具备一些内置功能。为了防止 XSS 深入研究 ASP.Net 框架(以及客户端和其他应用程序特定领域),您可以查看 this(参见 Server 部分) .
然而,快速而肮脏的是:
ASP.Net提供Request Validation out-of-the-box that can perform the required validation. You can also leverage the more granular control (attribute) ValidateInput开启或关闭特定动作方法
最后,您使用的 ASP.Net 是什么版本?在 ASP.Net v4 之前,他们开始在 System.Web.Security.AntiXss
中合并(某些)AntiXSS 库功能,但仍在使用一些黑名单方法,并且鼓励使用 AntiXSS 库。
但是,根据最新的 ASP.Net v5,他们应该使用全白名单方法。但我相信 AntiXSS 库仍会提供一些额外的功能(不一定用于验证请求)。
必须指出的是,AntiXSS 库已停产。
验证请求并不是防止 XSS 的最佳方法。 Even microsoft get this wrong. See here 更多示例。
最好的方法是在输出时正确编码。例如,在 HTML 中将 <
更改为 <
。尽管输出到 Javascript 上下文需要不同的编码。查看 OWASP XSS (Cross Site Scripting) Prevention Cheat Sheet 了解更多信息。
我正在尝试解决我的申请中的问题, 每当我收到有关 mvc 应用程序的请求时,我都会使用过滤器(在 global.asax 上注册):
public class XSSAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
filterContext.HttpContext.Request.InputStream.Position = 0;
string body = null;
using (var sr = new StreamReader(filterContext.HttpContext.Request.InputStream))
{
body = sr.ReadToEnd();
}
bool isBodyValid = ***********
if (!isBodyValid)
{
filterContext.Result = new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
}
}
我想知道如何验证正文是否存在 XSS 漏洞。 谢谢
ASP.NET MVC 框架已经针对 XSS 攻击进行了保护:https://msdn.microsoft.com/en-us/library/hh882339(v=vs.110).aspx。
如果用户尝试发送 html 内容,框架将在启动控制器方法(甚至 global.asax 的 Application_BeginRequest
方法)之前抛出异常。
您可以使用 Microsoft AntiXss 库
I would like to know how to validate the body for XSS vulnerability.
在安全方面,首先,尽可能利用可用的工具,而不是自己编写。
正如一些人所指出的,ASP.Net MVC 在验证针对 XSS 的请求时已经具备一些内置功能。为了防止 XSS 深入研究 ASP.Net 框架(以及客户端和其他应用程序特定领域),您可以查看 this(参见 Server 部分) .
然而,快速而肮脏的是:
ASP.Net提供Request Validation out-of-the-box that can perform the required validation. You can also leverage the more granular control (attribute) ValidateInput开启或关闭特定动作方法
最后,您使用的 ASP.Net 是什么版本?在 ASP.Net v4 之前,他们开始在 System.Web.Security.AntiXss
中合并(某些)AntiXSS 库功能,但仍在使用一些黑名单方法,并且鼓励使用 AntiXSS 库。
但是,根据最新的 ASP.Net v5,他们应该使用全白名单方法。但我相信 AntiXSS 库仍会提供一些额外的功能(不一定用于验证请求)。
必须指出的是,AntiXSS 库已停产。
验证请求并不是防止 XSS 的最佳方法。 Even microsoft get this wrong. See here 更多示例。
最好的方法是在输出时正确编码。例如,在 HTML 中将 <
更改为 <
。尽管输出到 Javascript 上下文需要不同的编码。查看 OWASP XSS (Cross Site Scripting) Prevention Cheat Sheet 了解更多信息。