ASP.Net MVC 当中XSS攻击的防范

XSS攻击的防范

什么是XSS攻击?

XSS攻击中文为跨站脚本攻击,这种攻击方式分为两种:

  • 被动注入

在被动注入当中,用户将“不干净”的内容输入到文本框中,这些数据又会保存在数据库中,以后又重新在页面上面显示。

  • 主动注入

用户把内容输入到文本框当中,这些内容会立即在屏幕当中显示出来。

MVC中如何阻止XSS攻击?

  • 对所有内容进行HTML编码

只需要在视图当中使用@Html.Encode与@Html.AttributeEncode方法对特性值的编码转换。
对于已经“净化”或者来自信任的数据源,我们可以使用@Html.Raw(Model.HtmlContent)辅助输出。

  • 使用AntiXSS库作为ASP.Net的默认编码器

Install-Packeg AntiXSS

@using Microsoft.Security.Application
@{
	ViewBag.Title = "HomePage"
}
@section featured{
	<section class="featured">
		<div class="title">
			<hgroup class="content-wrapper">
				<h1>@ViewBag.Title.</h1>
				<h2 id="welcome-message"></h2>
			</hgroup>
		</div>
	</section>
}

@section scripts{
	@if(ViewBag.UserName != null){
	<script type="text/javascript">
		$(function(){
			var msg = 'Welcome,@Encoder.JavaScriptEncode(ViewBag.UserName,false)!';
			$("#welcome-message").html(msg).hide().show('slow');
		});
	</script>
	}
}