#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>
}
}