2012-03-28 58 views
3

我有一個電子商務禮品商店,用戶可以爲他們的收件人填寫禮品卡。我是否安全地使用Html.Raw()?

爲了填寫卡片,我讓用戶將文本輸入到多行文本框中。

當我在最終評論頁面上顯示禮品卡時,我必須用Html.Raw吐出信息,以便Newlines正確顯示。我這樣做:

@(Model.GiftCard.Text != null ? Html.Raw(Model.GiftCard.Text.Replace(char.ConvertFromUtf32(13),"<br />")) : Html.Raw("")) 

我很害怕我進入使用Html.Raw在用戶輸入的值的危險領土。然而,當我回到禮品卡入口頁面時,當我嘗試做一些類似「這是我的禮品卡!(scripttag)alert('test');(/ scripttag)」... so我覺得.net會在這一點上捕獲任何惡意條目。

我可以安全繼續嗎?看來,由於禮品卡條目頁面正在運行鍼對惡意代碼的驗證,我應該稍後使用HtmlRaw來顯示我正在放入自己的換行符html ...

(我將實際的腳本標記與此(scripttag)上面的東西,所以它會顯示在計算器中)

+0

我會對字段進行驗證,將字段限制爲可接受的字符和/或對值進行html.encode。 – Brian 2012-03-28 21:08:52

+0

你有一個例子或鏈接可以幫助我確保我只允許接受字符嗎?不會在JavaScript中(因此,你可以繞過它併發布其他東西嗎?) – 2012-03-28 21:11:16

+0

是的,它會是JavaScript。是的,可能這就是字段中的html.encode出現的地方,所以可以用於注入攻擊的字符被處理。我會挖掘一些我可以發佈的JS驗證。 – Brian 2012-03-28 21:15:07

回答

2

在您的視圖模型中使用正則表達式,以確保人們只輸入A-ZA-Z0-9和任何你認爲應該使用的東西:) =]類型的東西。篩選這些東西的前端要比在出口的時候猜測它要好。

+0

萬無一失或進行正則表達式,防止< and > – 2012-04-07 02:55:11

+0

和任何的,你的數據庫可能轉換爲< or >使用,或之間......你應該總是禁止所有除特定以及任何字符串轉換定義的值而不是阻止特定的字符。 – 2015-04-06 22:18:21

0

如何使用 <預> < /預> 標籤呢?這將允許返回在HTML中顯示而不需要Html.Raw?

相關問題