2008-11-29 29 views

回答

4

這是一條艱難的路線。您的Web應用程序僅僅是一個RESTful Web資源嗎?或者它試圖做更多。接下來你知道你有100個隱藏的輸入字段:__VIEWSTATE,__EVENTTARGET,__EVENTARGUMENT等等。

如你所知,你仍然可以防止MVC中的XSS攻擊。只需google it就可以看到幾個例子。但其原因基本上是MVC是一種不同的「更清潔」類型的Web應用程序。

編輯:我不知道我上面說的是否清楚。但是,這個想法是,MVC不會試圖超過它(就像ASP.NET一樣)。他們都有自己的優點和理由。

+1

謝謝提摩太,我沒有考慮到特定網站的AllowHtml屬性。我認爲請求驗證仍然與restfulnature保持一致,因爲它在請求被幹擾之前一直被接收,並且只有在其潛在危險的情況下。你用xss採取什麼方法? – alexmac 2008-11-29 20:09:52

2

無論如何,我希望你有比ValidateRequest更強大的功能來避免XSS。

+4

建議替代方案比簡單拒絕方法更有幫助。 – RedFilter 2008-11-29 16:06:55

+0

ValidateRequest真的很糟糕嗎?我確保我編碼用戶輸入的任何html,但會對您採取的方法感興趣? – alexmac 2008-11-29 20:10:52

1

我發現ValidateRequest解決方案是一個黑客攻擊。在我看來,'防範XSS'是一個商業規則;因此讓模型處理這種情況。

我真的很喜歡關於更好地遵循REST原則的解釋。至於100個隱藏的領域,它讓我想起幾年前我提供的ASP解決方案;我使用了隱藏字段來擴展元數據。不漂亮。

7

我知道這個問題很老,但我認爲我可以回答它。

有一個ValidateInput操作過濾器屬性可以添加到操作中。

[ValidateInput(true)] 
public ActionResult Foo() 
{ 

} 

您也可以使用模特屬性

public class MyModel 
{ 
    public Guid ID { get; set; } 

    [AllowHtml] 
    public string SomeStringValue { get; set; } 
}