[英]Gracefully handling HTML tags on form submission in asp.net MVC 2
嗨,我有一個MVC網站,將讓用戶輸入要在網頁上顯示的文本。 我正在嘗試提出一種處理用戶嘗試輸入的任何HTML的優雅方法-因為您可能會知道MVC 2對文本中的任何HTML都會引發錯誤。
我使用ViewModels並使用DataAnotation類中的過濾器裝飾屬性,以驗證表單。
現在有人這樣嗎?
是否有一些瘋狂的正則表達式無法與HTML相匹配,但不能與其他任何方式匹配?
我願意接受任何建議。
謝謝,
西蒙
添加以下屬性將阻止運行時抱怨:
[ValidateInput(false)]
public ActionResult SomeEvilAction ()
{
/* ... */
}
現在,您的任務就是對顯示在頁面上的每個輸入進行HTML編碼:
<%= HttpUtility.HtmlEncode (Model.Text) %>
要么
<%: Model.Text %>
我前幾天在一個網站上做了這件事。
我使用的是所見即所得的編輯器,該編輯器放置了正確的html,而不是bb代碼。
我從page指令禁用了頁面上的驗證,以停止mvc引發潛在的不安全代碼異常,並使用正則表達式刪除了所有腳本標簽實例。
參見Developer Art的帖子
您可能需要將此添加到您的web.config
<httpRuntime requestValidationMode="2.0" />
我使用的正則表達式如下:
(?<startTag><\s*script[^>]*>)(?<scriptContent>[\s\S]*?)(?<endTag><\s*/script>)
這將為您提供3個命名組。 startTag scriptContent endTag
因此,您可以對script元素進行替換並顯示腳本的內容,或者將其完全刪除。
您真正想做的任何事情。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.