FormsAuthentication是ASP.NET运行时提供的一种Web身份验证方案,以cookie为信息载体,同其它身份验证方案相比,此方案广泛应用于各类的Web应用中,其实现原理其实和具体的Web服务器编程技术关系不大,理解FormsAuthentication,同样可以在Java或PHP中使用。

  FormsAuthenticationTicket其实是一个cookie,多数封装的操作也是从cookie使用的角度去实现的。出于业务的需求,我们会在通过身份认证的浏览器写入用户有关的信息,用户信息结合cookie属性可以构成基本的票据,票据是下次用户请求时认证和授权的依据。这是非常简便的思路,但如果这个依据是公开的、可构造的,那么这个票据的意义将大打折扣。通过构造票据就可以达到躲避认证、伪造身份和授权的目的,这对于应用而言非常危险。

  众所周知,网络通信的信道是非安全的公共网络。对于信息需要保护的系统,认证的过程和认证后的票据应该处于被保护的状态。首先,票据应该是加密的,加密虽然增加了读取票据是额外的解密运算,但增加了掌握票据内容的难度。FormsAuthentication的提供的Encrypt方法加密存储在浏览器的票据cookie,这可以说是APS.NET的一个安全福利。然而如前所说,加密仅仅是增加了掌握票据内容的难度,如果某人利用别人的合法认证票据,应用系统无法基于票据规避身份盗用的情况。

  cookie重放,或是票据盗用是Web安全中经常出现的身份冒用攻击。这种攻击方法不需要对cookie进行逆向理解,只要将获取的用户cookie注入浏览器中,就可以以该用户的身份访问目标站点,非法获取网络资源。目前国内多数微博服务、邮件服务都有这样的情况。

  那么这样的情况能否规避。通常我们的系统在业务设计时,总会信赖自己写入票据的内容,判别身份时也仅仅读取身份标识,就任务当前的操作由对应用户发出。这个非常要命的单因子判定是产生身份冒用的一个根源,解决的办法就是在用户信息中输入更多的认证时的网络情况,如浏览器的IP、特征等信息,甚至包括有服务器生成的唯一字符,在后续的再认证中在业务流程前加入额外信息的校验。双因子认证,利用当时的环境信息作为安全认证的重要内容,可以在一定程度上增加系统的安全度。

说说ASP.NET的表单验证的更多相关文章

  1. Asp.net Mvc 表单验证(气泡提示)

    将ASP.NET MVC或ASP.NET Core MVC的表单验证改成气泡提示: //新建一个js文件(如:jquery.validate.Bubble.js),在所有要验证的页面引用 (funct ...

  2. WCF服务实现客户端Cookie共享,表单验证的解决方案

    基于前几篇的文章,如果理解了通道 拦截器  服务转发的概念,相信你肯定也能理解咋的玩了. 说白了就是创建客户端的拦截器: 实现接口:IClientMessageInspector. 里面的方法就是客户 ...

  3. Jquery Validate 表单验证的多种方式

    ASP.NET MVC Jquery Validate 表单验证的多种方式 在我们日常开发过程中,前端的表单验证很重要,如果这块处理不当,会出现很多bug .但是如果处理的好,不仅bug会很少,用户体 ...

  4. ASP.NET MVC Jquery Validate 表单验证的多种方式

    在我们日常开发过程中,前端的表单验证很重要,如果这块处理不当,会出现很多bug .但是如果处理的好,不仅bug会很少,用户体验也会得到很大的提升.在开发过程中我们可以不借助 JS 库,自己去手写 JS ...

  5. asp.net 登陆验证 Form表单验证的3种方式 FormsAuthentication.SetAuthCookie;FormsAuthentication.RedirectFromLoginPage;FormsAuthenticationTicket

    我们在登陆成功后,使用下面的3种方法,都是同一个目的:创建身份验证票并将其附加到 Cookie, 当我们用Forms认证方式的时候,可以使用HttpContext.Current.User.Ident ...

  6. [转]ASP.NET MVC Jquery Validate 表单验证的多种方式介绍

    在我们日常开发过程中,前端的表单验证很重要,如果这块处理不当,会出现很多bug .但是如果处理的好,不仅bug会很少,用户体验也会得到很大的提升.在开发过程中我们可以不借助 JS 库,自己去手写 JS ...

  7. ASP.NET MVC Form表单验证与Authorize特性

    一.Form表单验证 1.基本概念 表单验证是一个基于票据(ticket-based)[也称为基于令牌(token-based)]的系统.当用户登录系统以后,会得到一个包含基于用户信息的票据(tick ...

  8. ASP.NET MVC5+EF6+EasyUI 后台管理系统(33)-MVC 表单验证

    系列目录 注:本节阅读需要有MVC 自定义验证的基础,否则比较吃力 一直以来表单的验证都是不可或缺的,微软的东西还是做得比较人性化的,从webform到MVC,都做到了双向验证 单单的用js实现的前端 ...

  9. ASP.NET 表单验证实现浅析

    首先,自然是配置 Web.config,在 <system.web> 下设定: <authentication mode="Forms"> <form ...

随机推荐

  1. 应用ERP系统与企业的关系

      随着ERP系统的深入发展,越来越多的企业开始实施ERP,ERP实施是借用一种新的管理模式来改造原企业旧的管理模式,是先进的.行之有效的管理思想和方法.ERP软件在实际的推广应用中,其应用深度和广度 ...

  2. 开发客户端软件时,出现System.Windows.Markup.XamlParseException错误

    开发客户端软件时,出现System.Windows.Markup.XamlParseException错误,通过查看错误消息,发现TCPIP的一个COM组件在安装软件过程中被删除了,重新注册了一下TC ...

  3. RK3288的gpio设置

    http://www.360doc.com/content/14/1227/18/14351252_436191812.shtml 目录 [隐藏]  1 简介 2 使用 2.1 输入输出 2.2 复用 ...

  4. 2016湖大校赛 L题 The Sequence likes Ladder

    题意:S1=a,Sn=a*(Sn-1)^k%m,且有(a,m)=1,给出i,求Si. 思路:首先我们可以写出Sn的通项a^(1+k+k^2+...k^n-1);其次注意到m的范围是10000以内,所以 ...

  5. C++多线程のpackage_task

    可以异步获取可调用对象的结果.

  6. 【前端】iterable类型的 forEach方法

    看三个例子: a = [ age: 1 , age: 2 ] a.forEach (item) -> item.age = 0 # 有效 console.log a # [ # age: 0 # ...

  7. 1、启动oracle的步骤

    1.启动oracle的步骤 Linux下启动oracle分为以下两步: 1.1.启动lsnrctl监听. 1.2.启动数据库实例. 2.启动oracle监听 首先登陆服务器,切换到oracle用户. ...

  8. MySQL INSERT插入条件判断:如果不存在则插入

    摘要: 我们经常需要进行sql的批量插入,要求:该条记录不存在则插入,存在则不插入.如果使用一条INSERT语句实现呢? 普通的 INSERT INTO 插入: INSERT INTO card(ca ...

  9. java.lang.classNotFound:明明已经导入了jar包,包里也有该类,却找不到的解决方法

    试一下:在web-inf文件夹下新建lib文件夹:将所有需要用到的jar包放在lib中,重启tomcat.

  10. jqury 右击事件插件

    在有些时候,网页中需要给一些标签对象加入右击的事件,在网上看了一些小的插件,但是不能根据this获取到当前的标签.所以相对他们进行改进一下.自己写了一个小的js右击事件.废话不多说了,看代码. $(f ...