我有一個電子商務禮品商店,用戶可以爲他們的收件人填寫禮品卡。我是否安全地使用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)上面的東西,所以它會顯示在計算器中)
我會對字段進行驗證,將字段限制爲可接受的字符和/或對值進行html.encode。 – Brian 2012-03-28 21:08:52
你有一個例子或鏈接可以幫助我確保我只允許接受字符嗎?不會在JavaScript中(因此,你可以繞過它併發布其他東西嗎?) – 2012-03-28 21:11:16
是的,它會是JavaScript。是的,可能這就是字段中的html.encode出現的地方,所以可以用於注入攻擊的字符被處理。我會挖掘一些我可以發佈的JS驗證。 – Brian 2012-03-28 21:15:07