簡體   English   中英

使用Razor時,我們仍然需要禁用請求驗證嗎?

[英]Do we still need to disable request validation when using Razor?

在ASP.NET MVC視圖中,通常使用Razor的語法綁定模型值:

@Html.DisplayFor(m => m.Name)

我們知道Razor默認會對該值進行html編碼。 但是,假設有一個惡意用戶在文本框中輸入腳本並提交腳本:

<script>alert('Executing evil script')</script>

現在,如果我們不使用[ValidateInput(false)][AllowHtml]屬性,我們將被HttpRequestValidationException [AllowHtml] ,這意味着每次用戶提交表單時都必須捕獲此異常。

從另一個stackoverflow 問題的答案中,我知道我們可以在應用程序級別禁用請求驗證,但是許多人認為這是一種不好的做法。

我的問題是,鑒於我們有Razor可以逃避所有&gt; &lt; ,如果我們關閉請求驗證功能,我們是否可以假設該站點仍然安全?

不,在Razor頁面生成過程中僅依靠HTML編碼並關閉請求驗證並不是對抗XSS攻擊的好策略:

  • 請求驗證首先可以防止錯誤的用戶輸入進入您的數據庫/存儲/其他用戶屏幕。
  • HTML編碼(消毒)作為備份策略存在,例如,攻擊者已經闖入大門。
  • 考慮到一個應用程序不僅可以提供HTML服務,例如Xml和REST服務,還可以不受HTML幫助程序的編碼。 (例如,攻擊者可能會找到一種將惡意有效負載放入Xml CDATA部分的方法)
  • 另外,考慮對數據庫運行常規的Sql / NoSql查詢,以尋找跡象表明您的站點請求驗證已受到威脅。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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