2015-11-03 17 views
1

我想,每當我收到我使用的過濾器的MVC應用程序的請求(在Global.asax中的註冊它)在我的應用程序, 解決一個問題:XSS驗證對身體.NET MVC

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

看看這個https://msdn.microsoft.com/en-us/library/system.web.security.antixss(v=vs.110).aspx –

+0

或者這個:https:// github。 com/mganss/HtmlSanitizer –

+0

爲什麼你還需要它? MVC具有用於防XSS請求驗證的內置機制('ValidateInput'屬性),並且默認情況下啓用。你可以看到它是如何工作的[這裏](http://referencesource.microsoft.com/#System.Web/HttpRequest.cs,ad040181e60c14c7) – holdenmcgrohen

回答

0

你可以使用來自微軟AntiXss

0

我想知道如何驗證機構XSS漏洞。

當涉及到安全性,第一,充分利用可用的,而不是寫自己儘可能的工具。

正如一些人指出的,當涉及到驗證針對XSS的請求時,ASP.Net MVC已經具備了一些烘焙功能。爲了防止在ASP.Net框架(以及客戶端和其他應用程序特定區域)上深入瞭解XSS,您可以檢出this(請參閱服務器部分)。

然而,快速和骯髒的是:

ASP.Net提供Request Validation外的開箱即可以執行所需的驗證。您還可以利用更細化的控件(屬性)ValidateInput來打開或關閉特定的操作方法。

最後,您使用的是什麼版本的ASP.Net?直到ASP.Net v4,他們開始在System.Web.Security.AntiXss中整合(部分)AntiXSS庫功能,但仍使用一些黑名單方法,並鼓勵使用AntiXSS庫。

但是,根據最新的ASP.Net v5,他們應該使用所有白名單方法。但我相信AntiXSS庫仍然會提供一些附加功能(不一定用於驗證請求)。

必須提及AntiXSS庫已達到使用壽命。