我正在尝试解决我的申请中的问题, 每当我收到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漏洞的正文。 感谢。
答案 0 :(得分:0)
ASP.NET MVC框架已经抵御XSS攻击:https://msdn.microsoft.com/en-us/library/hh882339(v=vs.110).aspx。
如果用户尝试发送html内容,框架将在启动控制器方法(甚至是global.asax的Application_BeginRequest
方法)之前抛出异常。
答案 1 :(得分:0)
您可以使用Microsoft AntiXss库
答案 2 :(得分:0)
我想知道如何验证XSS漏洞的正文。
在安全方面,首先,利用可用的工具,而不是在可能的情况下编写自己的工具。
正如一些人所指出的,ASP.Net MVC在验证针对XSS的请求时已经具备了一些编入功能。为了防止XSS深入了解ASP.Net框架(以及客户端和其他特定应用领域),您可以查看this(参见服务器部分)。
然而,快速和肮脏的是:
ASP.Net提供了开箱即用的Request Validation,可以执行所需的验证。您还可以利用更精细的控件(属性)ValidateInput来打开或关闭特定的操作方法。
最后,您使用的是什么版本的ASP.Net?在ASP.Net v4之前,他们开始在System.Web.Security.AntiXss
中合并(部分)AntiXSS库功能,但仍在使用一些黑名单方法,并鼓励使用AntiXSS库。
然而,根据最新的ASP.Net v5,他们应该使用全白名单方法。但我相信AntiXSS库仍然会提供一些额外的功能(不一定用于验证请求)。
必须提到AntiXSS库已达到使用寿命。
答案 3 :(得分:0)
验证请求不是防止XSS的最佳方法。 Even microsoft get this wrong。 See here了解更多示例。
最好的方法是在输出上正确编码。例如,在HTML中将<
更改为<
。输出到Javascript上下文时需要不同的编码。查看OWASP XSS (Cross Site Scripting) Prevention Cheat Sheet了解详情。