一。阻止跨站脚本攻击(XSS)

1. 对所有内容进行Html编码,对于Asp.Net MVC 而言,只需要在视图中使用Html.Encode或者Html.AttributeEncode方法就可实现对特定值的编码替换。

Razor视图默认输出内容采用Html编码,所以使用@Model.FirstName.显示的模型属性将被进行Html编码,而程序员不需要进行任何工作

2.  Url.Encode或者Html.AttributeEncode方法: 对预期的URL进行编码

3. JavaScript编码:使用Ajax.JavaScriptStringEncode辅助函数对在JavaScript中使用的字符串进行编码

二。阻止跨站请求伪造(Cross-Site Request Forgery, CSRF)

  1) 令牌验证

  在每个表单请求中插入一个唯一的隐藏输入元素,代码如下:

  

@using (Html.BeginForm())
{@Html.AntiForgeryToken()
}

  用 @Html.AntiForgeryToken辅助方法会输出一个加密值作为隐藏的输入元素:

<input type="hidden" value="012386uuudefuye0123456" />

  该值将于作为会话Cookie储存在用户浏览器中的另一个值进行匹配。在提交表单时,ActionFilter就会验证这两个值是否匹配

  [HttpPost][ValidateAntiForgeryToken]public ActionResult Create([Bind(Include = "ID,Name")] Product product){if (ModelState.IsValid){db.Products.Add(product);db.SaveChanges();return RedirectToAction("Index");}return View(product);}

  2) 幂等的Get请求

  如果一个操作时幂等的,则执行多次而不会改变执行结果。一般情况下,仅仅通过Post请求来修改数据库或者网站中的内容,这里的修改包含Registration,Logout, Login

  3) HttpReferrer验证

  使用ActionFilter来查看提交表单值的客户端是否确实在目标站点

  

public class IsPostFromThisSiteAttribute: AuthorizeAttribute{public override void OnAuthorization(AuthorizationContext filterContext){if (filterContext.HttpContext != null){if (filterContext.HttpContext.Request.UrlReferrer == null){throw new System.Web.HttpException("Invalid submission");}// 判断返回的url是否是自己所在站点if (filterContext.HttpContext.Request.UrlReferrer.Host != "localhost"){throw new System.Web.HttpException("this form wasn't submitted from this site!");}}}}

三。阻止Cookie盗窃

  Cookie主要分为2种,

  1. 会话Cookie: 储存在浏览器的内存中,在浏览器的每次请求中通过Http头进行传递

2.持久Cookie:持久性Cookie储存在计算机内存上的实际文本文件中,与会话Cookie采用同样的方式传递

二者的区别在与:会话Cookie通常在会话结束后忘记会话Cookie,而持久性Cookie则不同,在下一次站点时依然会记住它

若盗取某人在一个网站上的身份验证Cookie,就可以在站点上冒充某人进行此人权限内的所有操作

     1. 用HttpOnly阻止Cookie盗窃

在web.config中对所有Cookie进行设置

 <httpCookies domain="" httpOnlyCookies="true" requireSSL="false"/>

或者在程式中单独设置

Response.Cookies["MyCookies"].HttpOnly = true

四。使用Bind特性防止重复提交(Over-posting)攻击

  防御重复提交攻击的最简单办法就是使用[Bind]属性显示的控制需要由模型绑定器绑定的属性。Bind特性既可以放到模型类上,或者放到控制器操作参数中。可以使用[Bind(Include="Name, Comment")]指定绑定哪些字段,也可以使用[Bind(Exclude="Name, Comment")]排除绑定的字段。

  另一种方法可以使用UpdateModel或者TryUpdateModel方法中的一个重载版本来接收一个绑定列表,例如代码:

  

UpdateModel(review, "Review", new string{"Name", "Content"})

  

转载于:https://www.cnblogs.com/kittyguo/p/4630901.html

Asp.Net MVC Web应用程序中的安全向量相关推荐

  1. 如何使用recaptcha_在Spring MVC Web应用程序中使用reCaptcha

    如何使用recaptcha CAPTCHA是一个程序,可以生成人类可以通过但计算机程序" 不能 "通过的测试并对其进行评分. 所采取的策略之一是向用户显示具有扭曲文本的图像,并且用 ...

  2. 在Spring MVC Web应用程序中添加社交登录:集成测试

    我已经写了关于为使用Spring Social 1.1.0的应用程序编写单元测试的挑战,并为此提供了一种解决方案 . 尽管单元测试很有价值,但是它并不能真正告诉我们我们的应用程序是否正常运行. 这就是 ...

  3. 在Spring MVC Web应用程序中添加社交登录:单元测试

    Spring Social 1.0具有spring-social-test模块,该模块为测试Connect实现和API绑定提供支持. 该模块已从Spring Social 1.1.0中删除,并由 Sp ...

  4. 在Spring MVC Web应用程序中使用reCaptcha

    CAPTCHA是一种程序,可以生成人类可以通过的测试并对其进行评分,而计算机程序" 不能 "通过. 所采取的策略之一是向用户显示具有扭曲文本的图像,并且用户应在输入区域中书写文本. ...

  5. 使用.NET Core MVC Web应用程序中的ResponseCache属性处理缓存

    HTTP响应的缓存意味着当发出HTTP请求时,服务器生成的响应由浏览器或服务器存储在某个地方,以便在对同一资源的连续HTTP请求中重复使用.实质上,我们正在存储生成的响应,并将该响应重用于后续请求一段 ...

  6. 一步步学会使用ASP.NET 4 WEB应用程序中使用URL Routing(翻译)

    创建路由 路由就是将URL路径映射到具体的物理文件.若要将路由添加到网站中,请使用 RouteCollection.MapPageRoute 方法将它们添加到RouteTable类的静态Routes属 ...

  7. 集成spring mvc_向Spring MVC Web应用程序添加社交登录:集成测试

    集成spring mvc 我已经写了关于为使用Spring Social 1.1.0的应用程序编写单元测试的挑战,并为此提供了一种解决方案 . 尽管单元测试很有价值,但它并不能真正告诉我们我们的应用程 ...

  8. 将社交登录添加到Spring MVC Web应用程序:配置

    过去,用户使用用户名和密码组合登录. 尽管如今有些人仍然偏爱传统方式,但越来越多的用户希望使用其社交媒体帐户登录. 这就是使Spring Social(及其子项目)成为Spring项目组合有用的补充的 ...

  9. UkrGuru.SqlJson非常适合您的ASP.NET Core Web应用程序!

    目录 背景 介绍 使用代码 服务设置 提供在页面中使用的DbService Index页 创建页面 编辑页面 详细信息页面 删除页面 在本技巧中,您将了解一种无需在ASP.NET Core Web应用 ...

  10. ASP.NET Core Web 应用程序系列(三)- 在ASP.NET Core中使用Autofac替换自带DI进行构造函数和属性的批量依赖注入(MVC当中应用)...

    在上一章中主要和大家分享了在ASP.NET Core中如何使用Autofac替换自带DI进行构造函数的批量依赖注入,本章将和大家继续分享如何使之能够同时支持属性的批量依赖注入. 约定: 1.仓储层接口 ...

最新文章

  1. TVM Reduction降低算力
  2. 计算机科学与技术联合培养是什么意思,联合培养
  3. python中map()和dict()怎么用?你知道吗?-用法详解
  4. python设置图片透明度_学习python第40天
  5. ASP.NET Core MVC四种枚举绑定方式
  6. 三农电子商务创业创新大赛作品_全国大学生电子商务“创新、创意及创业”挑战赛五邑大学校赛...
  7. python if and函数_逻辑函数And,OR,IF
  8. 下推栈实现(c++编程思想 p136)
  9. DB2 SQL Error: SQLCODE=-668, SQLSTATE=57016,表挂起
  10. 2021-2025年中国电子台秤行业市场供需与战略研究报告
  11. Python 爬虫 —— scrapy
  12. 大佬对Maven进行深度讲解:什么是Maven?POM.XML如何解读?
  13. SQL语法提示工具SQL Prompt 发布v10.6
  14. 弱电工程项目管理软件
  15. vue-element-ui组件 layout布局(网格系统)
  16. 数人云|听说大神都在用这25种软件部署工具,你用过几种?
  17. 开发者 J 有意思|1024 开发者嘉年华活动正式启幕
  18. 嵌入式操作系统VxWorks简介
  19. python3.6+PyQt5安装
  20. AcWing 844.走迷宫

热门文章

  1. Kubernetes(K8s) 1.14.3常用操作命令
  2. poj3263 Tallest Cow 题解报告
  3. 蓝桥杯刷题 -- 第六届蓝桥杯
  4. HTML5的28个常用特性
  5. jdbc心得-2-数据库与java相结合
  6. GridControl中进行多选数据,可以做多行删除
  7. 软件需求与分析——大二下需会知识点
  8. ThinkPHP5集成JS-SDK实现微信自定义分享功能
  9. 图形界面组件实验的一点总结
  10. SQL server学习(一)数据库的基本知识、基本操作和基本语法