2013-11-20 111 views
0

我目前正在解決我的網站上一個主要的永久性XSS漏洞。要做到這一點,我呼籲:HTML呈現轉義字符

this.Title = System.Security.SecurityElement.Escape(this.Title); 

在我服用的值,適當逃脫所有需要的字符轉義(<,>,&等)。當我去我的頁面顯示的其他地方這個標題我的問題出現了:

<p> @title </p> 

該款顯示器正是因爲它出現的字符串,如「& LT; & GT;等等」。

爲了解決這個問題,我注意到,如果我叫:

<p> @html.raw(title) </p> 

這些值是正確顯示頁面(<,>等)上。但我擔心這仍然會確保漏洞。將html正確呈現在頁面上的最佳方法是什麼?我做錯了什麼?或者我正確使用html.raw()?

+0

你應該不會調用'Escape' - 只要讓Razor自動編碼你的輸出即可。但是如果我們假定應該使用'Escape',那麼是的,您正確使用'Raw'。 – Jon

+0

[html/XSS轉義輸入vs輸出]可能重複(http://stackoverflow.com/questions/11253532/html-xss-escape-on-input-vs-output) – user1777136

+0

只要輸出正確的HTML編碼沒有風險< >等 – geedubb

回答