2013-04-18 159 views
1

在將查詢字符串參數傳遞給業務層之前使用html.encode是否是一種很好的做法?該場景是相對於asp.net框架,我想知道是否必須編碼查詢字符串的內容或不讀取鍵之前的值?使用html.encode查詢字符串參數

我知道我們總是可以將內容轉換爲預期的數據類型,但我的問題是從設計的角度來看。

謝謝!

+0

我不確定你在哪裏嘗試enocde參數。如果你沒有使用'Request.RawUrl'參數應該在QueryString中很好地解碼,或者在ASP.Net MVC動作參數中更好......或者你正在談論客戶端的一些額外的編碼? –

+0

我正在談論這個www.foo.com?number=abc。要驗證數字鍵的內容是abc而不是10000,最好的做法是信任Request.QueryString [「number」]值或另外使用html.encode,然後在代碼後面使用。 – fooMyFavoriteVariable

+0

'Request.QueryString [「number」]'是服務器端應該看到的值 - 它被解碼一次(因爲它在原始URL中編碼)。我看不出編碼的價值(額外的編碼甚至可能使這個值無法使用)。我懷疑你在編寫HTML時需要正確編碼值來混淆它... –

回答

1

我會說是的。在最少你想要的,因爲瀏覽器可能會得到錯誤的編碼。一個符號可能會顯示爲另一個符號,或者顯示爲未知的字符。如果瀏覽器出錯,它甚至可能與前面的字符混淆。

更復雜的原因包括它有助於防止HTML注入。

爲什麼您需要使用HTML編碼的簡短說明僅僅是一組字符意味着HTML中的某些特殊字符,編碼將在所有瀏覽器中優雅地幫助處理插入符號和&符號等符號。

+0

感謝您的建議,我同意你的意見。 – fooMyFavoriteVariable