asp.net MVC 安全性[笔记]
1. 跨站脚本(XSS)
1.1 介绍
1.1.1 被动注入,利用输入html,javascript 等信息伪造链接,图片等使用提交信息,调转页面等
1.1.2 主动注入,黑客主动参与攻击,不会傻等倒霉的用户上钩
1.2 防御
1.2.1 HTML 编码
Html.Encode
1.2.2 HTML 属性编码
Html.AttributeEncode
1.2.3 url 编码
URL.Encode
1.2.4 java script 编码
Ajax.JavaScriptStringEncode
1.2.5 CSS 编码
1.3 使用AntiXSS的NuGet包
install-package AntiXSS
1.3.1 AntiXss使用的是白名单,而asp.net默认是黑名单,着用AntiXSS的安全性比ASP.NET 高
1.3.2 AntiXss注重安全漏洞, asp.net注重HTML页面的不被破坏
1.3.3 使用
@using Microsoft.Security.Application
@Encoder.JavaScriptEncode();
2.请求伪造(CSPF)
2.1 介绍
在网站上通过图片链接等伪造银行等机构的请求(混淆代理),例如现在很多银行用的get 请求,url 会在地址栏上显示,这就给了黑客机会,黑客可以通过任何吸引你的内容,让你点击,伪造相同的请求发给银行,正好你银行在登陆状态,就可以转账盗取金钱。
2.2 令牌验证
通过验证用户是否资源提交站点数据来达到防御目的,可以在Html隐藏元素来实现。
MVC 中
@Html.AntiForgeryToken(), 会输出一个加密值作为隐藏元素
在提交表单时,ActionFilter就会验证2个值是否匹配:
[ValidateAntiForgertToken]
public ActionResult Register(..)
2.3 幂等的get 请求
仅通过post 请求来修改数据或内容,就可有效的防御全部伪造攻击。
2.3 HttpReferrer 验证
ActionFilter 来阻止CSRF攻击:
- public class IsPostedFromThisSiteAttribute : AuthorizeAttribute
- {
- public override void OnAuthorize(AuthorizationContext filterContext)
- {
- if (filterContext.HttpContext != null)
- {
- if (filterContext.HttpContext.Request.UrlReferrer == null)
- throw new System.Web.HttpException("Invalid submission");
- if (filterContext.HttpContext.Request.UrlReferrer.Host !=
- "mysite.com")
- throw new System.Web.HttpException
- ("This form wasn't submitted from this site!");
- }
- }
- }
然后再Register 上面添加自定义的过滤器
- [IsPostedFromThisSite]
- public ActionResult Register(…)
3.cookie盗窃
3.1 介绍
利用XSS获取用户cookie,用用户的Id登陆目标网站
3.2HttpOnly 阻止
web.config 里设置
<HttpCookies httpOnlyCookies="true" ...>
3.3单独设置httponly
Response.Cookies["MyCookie"].HttpOnly=true;
4.重复提交
4.1 介绍
MVC 尊顺命名约束把输入元素映射到模型属性中,恶意用户可以向查询字符串或提交的表单中添加其他属性(模型中存在,但用户没权操作的属性)来干预表单提交。甚至可以得到其他账户的权限。
4.2 使用bind 特性防御重复提交,下面展示的Product 模型只能映射name 和age 属性。无权操作其他的属性。
[Bind(Include="Name","Age")]
pulbic class Product{
......
}
4.3 使用UpdateModel 后TryUpdataModel 的重载本版接受bind 列表。
UpdateModel(product,"product",new string[] {"Name","Age"} ")
4.4 避免直接绑定试图
使用view model.
asp.net MVC 安全性[笔记]的更多相关文章
- ASP.NET MVC学习笔记-----Filter2
ASP.NET MVC学习笔记-----Filter(2) 接上篇ASP.NET MVC学习笔记-----Filter(1) Action Filter Action Filter可以基于任何目的使用 ...
- ASP.NET MVC学习笔记-----Filter
ASP.NET MVC学习笔记-----Filter(1) Filter类型 接口 MVC的默认实现 Description Authorization IAuthorizationFilter Au ...
- ASP.NET MVC学习笔记-----Filter(2)
接上篇ASP.NET MVC学习笔记-----Filter(1) Action Filter Action Filter可以基于任何目的使用,它需要实现IActionFilter接口: public ...
- ASP.NET MVC 学习笔记-2.Razor语法 ASP.NET MVC 学习笔记-1.ASP.NET MVC 基础 反射的具体应用 策略模式的具体应用 责任链模式的具体应用 ServiceStack.Redis订阅发布服务的调用 C#读取XML文件的基类实现
ASP.NET MVC 学习笔记-2.Razor语法 1. 表达式 表达式必须跟在“@”符号之后, 2. 代码块 代码块必须位于“@{}”中,并且每行代码必须以“: ...
- ASP.NET MVC 学习笔记-7.自定义配置信息 ASP.NET MVC 学习笔记-6.异步控制器 ASP.NET MVC 学习笔记-5.Controller与View的数据传递 ASP.NET MVC 学习笔记-4.ASP.NET MVC中Ajax的应用 ASP.NET MVC 学习笔记-3.面向对象设计原则
ASP.NET MVC 学习笔记-7.自定义配置信息 ASP.NET程序中的web.config文件中,在appSettings这个配置节中能够保存一些配置,比如, 1 <appSettin ...
- 【MVC5】ASP.NET MVC 项目笔记汇总
ASP.NET MVC 5 + EntityFramework 6 + MySql 先写下列表,之后慢慢补上~ 对MySql数据库使用EntityFramework 使用域用户登录+记住我 画面多按钮 ...
- 【转】ASP.NET MVC学习笔记-Controller的ActionResult
1. 返回ViewResult public ActionResult Index() { ViewData["Message"] = "Welcome ...
- ASP.NET MVC学习笔记-----使用自定义的View Engine
我们都知道在ASP.NET MVC中自带了Razor View Engine,Razor十分的强大,可以满足我们绝大部分的需要.但是ASP.NET MVC的高度可扩展性,使我们可以使用自定义的View ...
- ASP.NET MVC学习笔记-----ActionInvoker
还是这张图: 当ControllerFactory生成Controller实例后,这时就需要使用ActionInvoker来选择调用一个合适的Action执行.ASP.NET MVC提供的基类Cont ...
随机推荐
- 再谈PCA
其实之前写过PCA相关的博文,但是由于之前掌握的理论知识有限,所以理解也比较浅.这篇博文,我们以另外一种角度来理解PCA看,这里我假设大家对PCA都有一个初步的了解.首先,我们举一个二维空间中 ...
- java基础面试题(转)
JAVA相关基础知识1.面向对象的特征有哪些方面 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时 ...
- JAVA:23种设计模式详解(转)
设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...
- python optparse模块
为了从更快的的使用这个模块,我们会省略一些东西,开始吧. 1. 加载模块 from optparse import OptionParser 2. 实例化OptionParse,可以理解为表明usea ...
- Linux命令学习笔记(1)
groupadd 1.作用 groupadd命令用于将新组加入系统.2.格式groupadd [-g gid] [-o]] [-r] [-f] groupname3.主要参数-g gid:指定组ID号 ...
- Maven中心仓库
当你使用Maven构建一个项目,Maven会检查你的pom.xml文件,找出需要下载的依赖包.首先它会到本地仓库查找所需的文件,如果没找到,就到默认的中心仓库(这是新的http://search.ma ...
- EINTR错误
慢系统调用(slow system call):此术语适用于那些可能永远阻塞的系统调用.永远阻塞的系统调用是指调用有可能永远无法返回,多数网络支持函数都属于这一类.如:若没有客户连接到服务器上,那么服 ...
- nyoj-291 互素数个数 欧拉函数
LK的数学题 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 LK最近遇到一个问题,需要你帮她一下.一个整数n,求[1,n)中,和n互素的数的个数. 输入 多组测 ...
- 07-语言入门-07-A Famous Music Composer
题目地址: http://blog.csdn.net/sevenmit/article/details/8231994 描述 Mr. B is a famous music composer. On ...
- BZOJ 2005 能量采集(容斥原理)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2005 题意:给定n和m,求 思路:本题主要是解决对于给定的t,有多少对(i,j)满足x= ...