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攻击:

  1. public class IsPostedFromThisSiteAttribute : AuthorizeAttribute
  2. {
  3. public override void OnAuthorize(AuthorizationContext filterContext)
  4. {
  5. if (filterContext.HttpContext != null)
  6. {
  7. if (filterContext.HttpContext.Request.UrlReferrer == null)
  8. throw new System.Web.HttpException("Invalid submission");
  9. if (filterContext.HttpContext.Request.UrlReferrer.Host !=
  10. "mysite.com")
  11. throw new System.Web.HttpException
  12. ("This form wasn't submitted from this site!");
  13. }
  14. }
  15. }

然后再Register 上面添加自定义的过滤器

  1. [IsPostedFromThisSite]
  2. 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 安全性[笔记]的更多相关文章

  1. ASP.NET MVC学习笔记-----Filter2

    ASP.NET MVC学习笔记-----Filter(2) 接上篇ASP.NET MVC学习笔记-----Filter(1) Action Filter Action Filter可以基于任何目的使用 ...

  2. ASP.NET MVC学习笔记-----Filter

    ASP.NET MVC学习笔记-----Filter(1) Filter类型 接口 MVC的默认实现 Description Authorization IAuthorizationFilter Au ...

  3. ASP.NET MVC学习笔记-----Filter(2)

    接上篇ASP.NET MVC学习笔记-----Filter(1) Action Filter Action Filter可以基于任何目的使用,它需要实现IActionFilter接口: public ...

  4. ASP.NET MVC 学习笔记-2.Razor语法 ASP.NET MVC 学习笔记-1.ASP.NET MVC 基础 反射的具体应用 策略模式的具体应用 责任链模式的具体应用 ServiceStack.Redis订阅发布服务的调用 C#读取XML文件的基类实现

    ASP.NET MVC 学习笔记-2.Razor语法   1.         表达式 表达式必须跟在“@”符号之后, 2.         代码块 代码块必须位于“@{}”中,并且每行代码必须以“: ...

  5. 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 ...

  6. 【MVC5】ASP.NET MVC 项目笔记汇总

    ASP.NET MVC 5 + EntityFramework 6 + MySql 先写下列表,之后慢慢补上~ 对MySql数据库使用EntityFramework 使用域用户登录+记住我 画面多按钮 ...

  7. 【转】ASP.NET MVC学习笔记-Controller的ActionResult

    1. 返回ViewResult public ActionResult Index()   {       ViewData["Message"] = "Welcome ...

  8. ASP.NET MVC学习笔记-----使用自定义的View Engine

    我们都知道在ASP.NET MVC中自带了Razor View Engine,Razor十分的强大,可以满足我们绝大部分的需要.但是ASP.NET MVC的高度可扩展性,使我们可以使用自定义的View ...

  9. ASP.NET MVC学习笔记-----ActionInvoker

    还是这张图: 当ControllerFactory生成Controller实例后,这时就需要使用ActionInvoker来选择调用一个合适的Action执行.ASP.NET MVC提供的基类Cont ...

随机推荐

  1. lintcode:Binary Search 二分查找

    题目: 二分查找 给定一个排序的整数数组(升序)和一个要查找的整数target,用O(logn)的时间查找到target第一次出现的下标(从0开始),如果target不存在于数组中,返回-1. 样例 ...

  2. 什么是struts2?

    一.我对struts2的理解. 1.struts2 是一个按MVC模式设计放入web层框架,其实它就是一个servlet.这个servlet命名为ActionServlet,或者是它的一个子类.它的工 ...

  3. Servlet获取当前服务器的实际路径

    Servlet/Jsp需要操作服务器所拥有的资源,为此需要得到其绝对路径或实际路径, 在Servlet的doGet方法中加入以下代码可以查看服务器的实际路径. package com.mhb; imp ...

  4. 关于ssh的一篇很好的文章

    源地址:http://www.w3hacker.com/?p=156   ssh-agent的manual写得倒是挺详细,可看了好几次都没怎么搞明白.08年在网上找到了非常好的一篇文章,An Illu ...

  5. Git使用简介

    git创建分支并直接切换到分支:git checkout -b name git提交分支到远程服务器: git push origin name/git push origin name:name   ...

  6. bzoj3571

    同样的最小乘积XXX模型,这里显然是二分图带权匹配 我不会写KM……于是写了个费用流,由于是稠密图,会退化到n^4 然后本地跑了56s,交上去过了………………一定是我电脑太慢…… 改天写个KM吧 *; ...

  7. Discuz 7.2 /faq.php SQL注入漏洞

    测试方法: 提供程序(方法)可能带有攻击性,仅供安全研究与教学之用,风险自负!   Discuz 7.2 /faq.php SQL注入漏洞   http://www.xxx.com/faq.php?a ...

  8. jquery 滚动条插件 jquery.nanoscroller.js

    $(".listcontent .nano").nanoScroller();   $(".chatcontent .nano").nanoScroller({ ...

  9. Android异常之 unable to write jarlist cache file

    异常: android开发调试时候不能运行,出现  unable to write jarlist cache file  错误. 解决方法: 1.找到appcompt文件夹如下的位置.

  10. 【轻院热身赛】级数求和、进制转换、candy

    [题目链接:级数求和] Problem A: 级数求和 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 409  Solved: 240 SubmitSt ...