2013-04-05 48 views
1

爲了避免通過輸入字段進行腳本注入,我在我的控制器操作中將ValidateInputAttribute設置爲false。在我看來,我使用<%:而不是<%=避免在輸入字段中注入腳本

我想知道的是,除了上面還有更通用的方法嗎?

回答

2

要通過輸入字段避免腳本注入,我設置 ValidateInputAttribute假

這恰好有你正在試圖達到什麼樣的效果相反。它允許腳本注入。當您將其設置爲false時,基本上會禁用請求值的驗證。

而在我的意見,我使用的<%:而不是<%=

這在視圖中顯示時是正確的方式HTML編碼的所有數據。當然,如果您使用HTML助手(如Html.DisplayFor或Html.EditorFor,您不需要使用<%:,因爲這些助手已經負責正確編碼輸出)。

+0

但是,如果您將ValidateInputAttribute設置爲true,那麼您將得到異常:從客戶端檢測到潛在危險的Request.Form值。那就是,我不想要的。我只是想阻止執行潛在的腳本 – Djave 2013-04-05 13:51:07

+1

是的,這很正常。 ASP.NET顯式不允許發佈這些字符,因爲它們可用於XSS注入。當然,如果你正確地對輸出進行HTML編碼,你可以安全地禁用這個驗證。 – 2013-04-05 13:54:02

+0

謝謝,但這是正確的方式,我在做什麼?現在我有數百個視圖,我必須用<%:替換<%=。有沒有另一種方式來做到這一點更通用? – Djave 2013-04-05 14:06:28