说说ASP.NET的表单验证
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的表单验证的更多相关文章
- Asp.net Mvc 表单验证(气泡提示)
将ASP.NET MVC或ASP.NET Core MVC的表单验证改成气泡提示: //新建一个js文件(如:jquery.validate.Bubble.js),在所有要验证的页面引用 (funct ...
- WCF服务实现客户端Cookie共享,表单验证的解决方案
基于前几篇的文章,如果理解了通道 拦截器 服务转发的概念,相信你肯定也能理解咋的玩了. 说白了就是创建客户端的拦截器: 实现接口:IClientMessageInspector. 里面的方法就是客户 ...
- Jquery Validate 表单验证的多种方式
ASP.NET MVC Jquery Validate 表单验证的多种方式 在我们日常开发过程中,前端的表单验证很重要,如果这块处理不当,会出现很多bug .但是如果处理的好,不仅bug会很少,用户体 ...
- ASP.NET MVC Jquery Validate 表单验证的多种方式
在我们日常开发过程中,前端的表单验证很重要,如果这块处理不当,会出现很多bug .但是如果处理的好,不仅bug会很少,用户体验也会得到很大的提升.在开发过程中我们可以不借助 JS 库,自己去手写 JS ...
- asp.net 登陆验证 Form表单验证的3种方式 FormsAuthentication.SetAuthCookie;FormsAuthentication.RedirectFromLoginPage;FormsAuthenticationTicket
我们在登陆成功后,使用下面的3种方法,都是同一个目的:创建身份验证票并将其附加到 Cookie, 当我们用Forms认证方式的时候,可以使用HttpContext.Current.User.Ident ...
- [转]ASP.NET MVC Jquery Validate 表单验证的多种方式介绍
在我们日常开发过程中,前端的表单验证很重要,如果这块处理不当,会出现很多bug .但是如果处理的好,不仅bug会很少,用户体验也会得到很大的提升.在开发过程中我们可以不借助 JS 库,自己去手写 JS ...
- ASP.NET MVC Form表单验证与Authorize特性
一.Form表单验证 1.基本概念 表单验证是一个基于票据(ticket-based)[也称为基于令牌(token-based)]的系统.当用户登录系统以后,会得到一个包含基于用户信息的票据(tick ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(33)-MVC 表单验证
系列目录 注:本节阅读需要有MVC 自定义验证的基础,否则比较吃力 一直以来表单的验证都是不可或缺的,微软的东西还是做得比较人性化的,从webform到MVC,都做到了双向验证 单单的用js实现的前端 ...
- ASP.NET 表单验证实现浅析
首先,自然是配置 Web.config,在 <system.web> 下设定: <authentication mode="Forms"> <form ...
随机推荐
- libtool: line 990: g++: command not found的解决
yum -y install gcc+ gcc-c++
- PRINCE2的思维结构
PRINCE2的思维结构 PRINCE是PRoject IN Controlled Environment(受控环境下的项目管理)的简称.PRINCE2是这种方法的第二个重要版本,由英国政府商务部 ...
- C语言-两个库函数
两个库函数 --1-- printf函数 1.1 printf 函数的介绍 1.2 格式控制字符串 1.3 %f输出精度的问题 1.4 printf 函数使用注意事项 --2-- scanf函数 2. ...
- 浅析call和apply的不同
call, apply都属于Function.prototype的一个方法,它是JavaScript引擎内在实现的,因为属于Function.prototype,所以每个Function对象实例,也就 ...
- Hibernate的映射文件
映射文件的结构和属性 一个映射文件(mapping file)由一个根节点<hibernate-mapping>和多个<class>节点组成, 首先看看根节点<hiber ...
- django之DB操作
先来区分一下什么是一对一.多对多 一对一:子表从母表中选出一条数据一一对应,母表中选出来一条就少一条,子表不可以再选择母表中已被选择的那条数据: 一对多:子表从母表中选出一条数据一一对应,但母表的这条 ...
- 把CentOS 7.x网卡名称eno16777736改为eth0
CentOS 7.x系统中网卡命名规则被重新定义,可能会是"eno167777xx"等,下面我们把网卡名称改为eth0这种. 一.cd /etc/sysconfig/networ ...
- nginx安装方式
1.首先安装pcre库 获取pcre到一个目录 wget http://ftp.exim.llorien.org/pcre/pcre-8.21.tar.gz 解压缩pcre包 tar -zxvf pc ...
- mysql 数据库 表字段添加表情兼容
项目中的几个需要支持Emoji表情符号,手机自带的表情,其实添加也很简单: 1 修改数据库 配置my.cnf init-connect='SET NAMES utf8mb4' ...
- 未解决的问题,登录163邮箱http://mail.163.com/,用xpath的方式定位密码输入框的时候,总是报找不到该元素
退出的时候出现: xpath定位方法: 注意xpath路径写的太长,如果层级全部写完定位不到,就尝试去掉一些层级