簡體   English   中英

在ASP.NET MVC 2中提交表單時優雅地處理HTML標簽

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM