最近,我注意到,我在我的應用程序中的大洞,因爲我做了一些這樣的:如何避免ASP.Net(MVC)中的XSS漏洞?
<input type="text" value="<%= value%>" />
我知道,我應該使用Html.Encode
,但有沒有辦法做到這一點的所有值,而不必須明確地做?
最近,我注意到,我在我的應用程序中的大洞,因爲我做了一些這樣的:如何避免ASP.Net(MVC)中的XSS漏洞?
<input type="text" value="<%= value%>" />
我知道,我應該使用Html.Encode
,但有沒有辦法做到這一點的所有值,而不必須明確地做?
有幾個方法:
<%: %>
語法ASP.NET MVC2/.NET 4.0。 (這只是Html.Encode()
的語法糖)在ASP.Net 4.0或更高版本中,始終使用<%:...%>而不是<%= ...%> ...它會爲您編寫HTML編碼。
完成此操作後,爲了安全起見,定期對代碼<%=進行grep相當簡單。
此外,你使用的是Microsoft Anti-XSS library?
語法HTML編碼
<%:model.something%>在WebForms的語法
它是自動的在剃刀即@ model.something會自動編碼自動無 需要做的任何編碼。
MVC3 HTML Helper方法自動返回編碼的字符串。例如Html.Label將返回編碼字符串
瞭解跨站點腳本
http://thirum.wordpress.com/2013/10/24/how-asp-net-mvc-prevents-cross-site-scriptingxss-attack/
潛在危險的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
script:alert('hello');">
<img src="java
script:alert('hello');">
攻擊者還可以使用該標記通過更改MIME類型來注入腳本,如下所示。
<style TYPE="text/javascript">
alert('hello');
</style>
您可能希望使用白名單方法而不是黑名單方法。還要考慮諸如「onclick」,「onblur」和「onhover」等屬性。 – Fred 2016-06-15 09:49:22
我們在三秒內回答對方。紐曼,你好。 – 2010-07-08 19:34:33