2010-07-08 117 views
19

最近,我注意到,我在我的應用程序中的大洞,因爲我做了一些這樣的:如何避免ASP.Net(MVC)中的XSS漏洞?

<input type="text" value="<%= value%>" /> 

我知道,我應該使用Html.Encode,但有沒有辦法做到這一點的所有值,而不必須明確地做?

回答

22

有幾個方法:

  • 使用<%: %>語法ASP.NET MVC2/.NET 4.0。 (這只是Html.Encode()的語法糖)
  • 請按照指示laid out by Phil Haack的說明使用Anti-XSS庫作爲ASP.NET的「默認」編碼引擎。
7

在ASP.Net 4.0或更高版本中,始終使用<%:...%>而不是<%= ...%> ...它會爲您編寫HTML編碼。

Scott Gu's explanation

完成此操作後,爲了安全起見,定期對代碼<%=進行grep相當簡單。

此外,你使用的是Microsoft Anti-XSS library

+4

我們在三秒內回答對方。紐曼,你好。 – 2010-07-08 19:34:33

9

從Scott Hanselman和Phil Haack處看到這個video。它們涵蓋了使用ASP.Net MVC專門針對XSS,CSRF和JSON劫持。

+0

不錯的網址參考..真的很有用。 – Saravanan 2011-08-08 06:27:35

1

潛在危險的HTML標籤:

雖然不是一個詳盡的清單,以下常用的HTML標籤可能允許惡意用戶注入腳本代碼:

<applet> 
<body> 
<embed> 
<frame> 
<script> 
<frameset> 
<html> 
<iframe> 
<img> 
<style> 
<layer> 
<link> 
<ilayer> 
<meta> 
<object> 

攻擊者可以使用諸如src,lowsrc,style和href之類的HTML屬性與前面的標記一起注入跨站點腳本。例如,標籤的src屬性可以是注入源,如以下示例所示。

<img src="javascript:alert('hello');"> 
<img src="java&#010;script:alert('hello');"> 
<img src="java&#X0A;script:alert('hello');"> 

攻擊者還可以使用該標記通過更改MIME類型來注入腳本,如下所示。

<style TYPE="text/javascript"> 
    alert('hello'); 
</style> 
+0

您可能希望使用白名單方法而不是黑名單方法。還要考慮諸如「onclick」,「onblur」和「onhover」等屬性。 – Fred 2016-06-15 09:49:22