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. libtool: line 990: g++: command not found的解决

    yum -y install gcc+ gcc-c++

  2. PRINCE2的思维结构

    PRINCE2的思维结构   PRINCE是PRoject IN Controlled Environment(受控环境下的项目管理)的简称.PRINCE2是这种方法的第二个重要版本,由英国政府商务部 ...

  3. C语言-两个库函数

    两个库函数 --1-- printf函数 1.1 printf 函数的介绍 1.2 格式控制字符串 1.3 %f输出精度的问题 1.4 printf 函数使用注意事项 --2-- scanf函数 2. ...

  4. 浅析call和apply的不同

    call, apply都属于Function.prototype的一个方法,它是JavaScript引擎内在实现的,因为属于Function.prototype,所以每个Function对象实例,也就 ...

  5. Hibernate的映射文件

    映射文件的结构和属性 一个映射文件(mapping file)由一个根节点<hibernate-mapping>和多个<class>节点组成, 首先看看根节点<hiber ...

  6. django之DB操作

    先来区分一下什么是一对一.多对多 一对一:子表从母表中选出一条数据一一对应,母表中选出来一条就少一条,子表不可以再选择母表中已被选择的那条数据: 一对多:子表从母表中选出一条数据一一对应,但母表的这条 ...

  7. 把CentOS 7.x网卡名称eno16777736改为eth0

    CentOS 7.x系统中网卡命名规则被重新定义,可能会是"eno167777xx"等,下面我们把网卡名称改为eth0这种. 一.cd  /etc/sysconfig/networ ...

  8. nginx安装方式

    1.首先安装pcre库 获取pcre到一个目录 wget http://ftp.exim.llorien.org/pcre/pcre-8.21.tar.gz 解压缩pcre包 tar -zxvf pc ...

  9. mysql 数据库 表字段添加表情兼容

    项目中的几个需要支持Emoji表情符号,手机自带的表情,其实添加也很简单: 1 修改数据库 配置my.cnf  init-connect='SET NAMES utf8mb4'             ...

  10. 未解决的问题,登录163邮箱http://mail.163.com/,用xpath的方式定位密码输入框的时候,总是报找不到该元素

    退出的时候出现: xpath定位方法: 注意xpath路径写的太长,如果层级全部写完定位不到,就尝试去掉一些层级