顯示錯誤消息「有潛在危險的Request.Form值」對用戶有一噸的這個特定的異常問題,但我找不到任何會適合我的需要。我不想禁用驗證,也不想手動轉義每個表單輸入值。如何在ASP.NET MVC 3
是否有以相同的方式來顯示此錯誤消息給用戶作爲ASP.NET MVC通知的形式不提供所需的值的用戶的方法嗎?我認爲這將是處理這種錯誤的最簡單的方法。
顯示錯誤消息「有潛在危險的Request.Form值」對用戶有一噸的這個特定的異常問題,但我找不到任何會適合我的需要。我不想禁用驗證,也不想手動轉義每個表單輸入值。如何在ASP.NET MVC 3
是否有以相同的方式來顯示此錯誤消息給用戶作爲ASP.NET MVC通知的形式不提供所需的值的用戶的方法嗎?我認爲這將是處理這種錯誤的最簡單的方法。
這個錯誤只是ASP.NET中的一個安全網;一旦你檢查你正在編碼你的文本,微軟會希望你禁用這個錯誤。
這不是有關手動逸出每個輸入表格值。這是關於HTML編碼呈現給頁面的所有面向用戶的文本。只是在表單中輸入的文本經常顯示回用戶。
例如,字符串"My age is > 21 & < 90"
不是有效的HTML,並且不會正確顯示給用戶(這可能會在跨站點腳本攻擊中被濫用)。如果您顯示的任何字符串不是有效的HTML,那麼您的已將對其進行HTML編碼。幸運的是,在MVC中有很多簡單的方法可以做到這一點(使用<%: %>
的操作符就是其中之一)。如果您正確地執行此操作,則無需啓用此錯誤。
對不起,我知道這是不是你要的答案,但我相信保持開啓這個錯誤僅僅是對用戶不友好的原因是多方面的。
這爲我澄清了它。我沒有意識到這只是一個安全網。 –
$("form").submit(function(e){
var invalid = $("form").find("input:text,input:hidden,textarea").filter(function() {
var value = $(this).val();
var encoded = $("<div>").html(value).text();
return value != encoded;
}).length > 0;
if (invalid)
{
e.preventDefault();
//show validation message
}
}
這工作得很好;謝謝! – GendoIkari
你使用jQuery?沒有標籤,但我能想到的解決方案的客戶端,將可能工作 – hunter
我可以使用jQuery,但不希望爲他們寫自己的驗證邏輯,因爲如果某種新的潛在危險值的驗證被添加到ASP.NET MVC的,它會從我的實現中丟失。 –
另外,總有一種可能性,有人在沒有JavaScript支持的情況下使用我的網站,他們會被髮送到一個通用的「內部服務器錯誤」頁面,它不會告訴他們任何東西。 –