我有以下代碼:爲什麼標籤x = txtName.Text;受到XSS攻擊,這裏有什麼預防措施?
label x = txtName.Text;
當安全團隊分析,他們說,這是能夠將在上面的代碼中的XSS攻擊的DLL。我知道文本框Text
屬性不能阻止XSS攻擊,所以我現在應該怎麼做?
以下修改是否可以解決問題?
label x = Server.HtmlEncode(txtName.Text);
我有以下代碼:爲什麼標籤x = txtName.Text;受到XSS攻擊,這裏有什麼預防措施?
label x = txtName.Text;
當安全團隊分析,他們說,這是能夠將在上面的代碼中的XSS攻擊的DLL。我知道文本框Text
屬性不能阻止XSS攻擊,所以我現在應該怎麼做?
以下修改是否可以解決問題?
label x = Server.HtmlEncode(txtName.Text);
我不認爲label x = txtName.Text;
是有效的C#。我假設你的意思是x.Text = txtName.Text;
其中x
是Label
的ID。
這是一個問題,因爲如果我在文本框中輸入<script>alert('XSS!')</script>
?我的輸入可以呈現給頁面並作爲腳本執行。這個簡單的例子可能無法正常工作,但有許多技巧可以讓XSS工作。
您可以通過在頁面上顯示之前對輸入進行編碼來解決此問題,並且我會爲該任務推薦Microsoft AntiXSS。我也同意你的意見,你應該問你的安全團隊如何解決它。
好吧,我會問安全團隊,但每個asp.net webform都包含頁面驗證屬性,這在我的情況中是如此。我認爲它不會允許從文本框中發佈文本。 –
這會使得利用此漏洞更加困難,但RequestValidation不是100%萬無一失的。最好關閉這些漏洞,特別是當它很容易這樣做時。 –
我假設你是在談論一個WebForms的Label
- 它不是從問題(!後實際代碼)
這清楚是ASP.NET Web窗體的設計有問題。許多元素都有一個名爲Text
的屬性,但屬性根據元素做了不同的事情。
您會希望在控件上設置Text
可以設置其純文本內容。這個安全操作就是這個名字的意思。這是在這些控件的情況:
不幸的是,很多其他的控件,同名的實際屬性在元素中設置HTML標記。所以如果你有一個文本字符串<b>
,你會得到一些粗體文本,而不是在一些尖括號中的字母b
。如果文本中包含<script>
等字符串,代碼將在瀏覽器上執行,從而導致安全問題。
一些不幸的不安全控件是:
要安全地使用這些內容,您必須對寫入Text
屬性的所有內容進行HTML編碼。
最後有一個控制該擺動兩種方式:
默認情況下此設置HTML標記(!BOO),但如果設置了Mode="Encode"
屬性,它設置文本而不是。
這當然都非常混亂,沒有辦法設計一個web框架,但這就是我們需要處理的。
更多代碼,然後我們可以告訴。 –
我剛從文本框中取出數據並分配給標籤。我不確定爲什麼這個簡單的代碼行在XSS攻擊下。 –
也許安全團隊可以提供一些見解?我沒有看到任何會導致問題的東西,但我也不是安全專家 –