MVC站点安全开发
一、XSS攻击
默认情况下,从@表达式生成的所有文本都是HTML编码过的,但由于某些情况下要显示HTML文本时,必须对于进行白名单过滤。
使用微软的 HtmlSanitizationLibrary.Dll库进行白名单过滤
Sanitizer.GetSafeHtmlFragment(InputHtml);
二、SQL注入
对所有的SQL语句及参数进行全面的过滤
三、防止CSRF(跨网站请求伪造),只针对POST请求
Action前加入[ValidateAntiForgeryToken(Salt ="密钥")]
在Form表单中加入@Html.AntiForgeryToken("密钥");
四、Cookie窃取
对用户输入进行过滤,避免被截持Cookie,避免被绕过过滤
五、其他细节
1.CustomErrors Mode=“on",发布网站时必须为On,避免错误暴露
2.[nonaction]锁定不开放的Action
3.[AcceptVerbs(HttpVerbs.Post)]限定页面的访问形式
http://www.cnblogs.com/htht66/archive/2012/01/29/2330831.html
内容介绍
- 常见网络安全攻击隐患
- 针对asp.net mvc防御体系
预备知识
- 安装VS2010
- 了解ASP.NET
- 了解Ajax基础知识
- 了解设计模式基本概念
安全性策略
SQL注入攻击
跨站脚本攻击
1 任何时候接受用户输入的时候都必须做好Encode,把所有的html标记去了.
2 永远不要对任何人使用不加检查的html操作输入
3 对cookie进行
常见攻击方式及其防范
·跨站脚本攻击
·跨域请求
·Cookie窃取
·超载攻击方式
Cross-site scripting (XSS)
- 跨站脚本攻击
使用XSS与CSS区别开
有两种,一种用户输入的信息有恶意脚本,信息没有过滤保存到数据库里面了。任何用户访问这个网页都可以看到这个脚本,所以就导致攻击了。这种称为被动攻击,因为被攻击者需要自己去查看这些信息。
另一种是主动攻击直接把信息推到用户端去。
被动攻击常见是使用iframe 的 src 到另一个网址。
主动注入常见篡改IE主页
避免XSS的办法
使用HTML.Encode来实现格式化所以内容
<%html.Encode(Model.FirstName)%>
<%:Model.FirstName)%> (mvc2 特性)
@webform已经内嵌Encode
Javascript 编码
对Url 传递过来的参数加以过滤
跨站请求
通过欺骗用户的浏览器来实现的。攻击者通过构造恶意代码,让浏览者替代攻击者去攻击其他目标网站。称为借刀杀人。
避免跨站欺骗攻击
盗用cookies
- Session cookies-
- 序列化cookies
持久化cookies的窃取
避免cookie被盗
httpOnly=true,意思是只可在服务端进行读写;在客户端读取,不可写。
可以在webconfig中设置。
关于重复提交、
使用白名单或者黑名单,限制那些列不可修改。、
避免暴露错误信息
发布网站改为On
保护你的controller
-【Authorize】来锁定你的Action
-【nonaction】来锁定所有不开发的Action
即没有Action的函数,供内部使用的函数。
总结
跨站脚本攻击
注入攻击
Cookies盗取
阿里云: www.aliyun.com
华赐软件: www.huacisoft.com
C#开源社区: www.opencsharp.net
清泓美肤苑: 清泓美肤苑
bootstrap权限管理系统: Asp.Net Mvc3 bootstrap权限管理系统