ASP.NET安全问题--Froms验证的具体介绍(中篇)

前言:今天是端午节,大家节日快乐!别忘了过我们的传统节日!!!因为前一篇文章已经谈论了与Forms验证有关的一些理论的知识,所以本篇主要讲述Forms验证一般的使用方法,也给出一些代码。可能有些话题之前园子里有朋友谈论过,如果有重复,那么就权当是复习也行!

本篇的话题如下:

启用Forms身份验证

用户信息的存储

web.config配置的一些用法

Forms验证简单的功能介绍

Forms验证中的Cookie问题

启用Forms身份验证

相信大家对很清楚如何启用 Forms验证,但是这里我还是罗嗦一下。

我们只要在 web.config文件中配置如下就行了:

<authentication mode="Forms"/>

这样之后,ASP.NET运行时就知道我们启用了Forms验证,在生命周期的验证阶段就激活FormsAuthenticationModule模块。

还有一点要特别注意:<authentication/>元素节点只能在应用程序的根文件夹中的 web.config中配置。如果在子文件夹中使用这个节点就会报错。这也说明了每个应用程序只能定义一个身份验证类型。

而且在<authentication/>节点中,我们还可以进行更多的设置。如下:

<authentication mode="Forms ">
       <forms name="MyCookie"
               loginUrl="Login.aspx"
              timeout="60"
              path="/"
              protection="All">

       </forms>
  </authentication>

我们下面就看看<forms>节点中的属性的含义和用途:

name:定义身份验证cookie的名称。因为我们把身份验证的票据是存放在cookie中的,而且我们必须给身份验证cookie取具有唯一性的名称,防止和其他的应用程序中的cookie冲突。

loginUrl:从英文名字就可以知道是关于登录的。实际上就是标明把用户重定向到哪个页面取登录。

timeout:设置身份验证cookie持续的时间,以分钟为单位的。而且这个时间是一个相对的时间,就是说每次对用户进行验证时,cookie的期限就会被重新设置。如果在60分钟内用户再没有向服务器发起请求,那么cookie就过期,之后如果用户再次发起请求,那么就要重新输入用户名和密码等信息。

path:设置cookie的保存的路径,一般是设置为"/",我们不要轻易的改变。

我们之前也说过,我们的身份验证的票据是加密以后再存放如cookie中的,然后再把cookie发送到客户端。当客户端再次请求的时候,再服务器端就会解析客户端发送来的cookie信息,我们必须要确认:客户端发送来的cookie信息就是我们之前从服务器端发送过去的,也就是说,我们要判断,我们的cookie在客户端是否被篡改了。

所以,这就是<forms/>中属性protection的用途。protection的值有四个:

Encryption:对cookie的内容信息进行加密。

Validation:向cookie中的内容添加MAC(消息验证代码),以便服务器判断cookie是否被篡改了。

None:禁用加密和篡改检查

All:同时启用加密和篡改检查。

默认情况下是"All",因为它可以把数据加密放入cookie中,而且对返回到服务器端的cookie进行验证。

时间: 2024-11-03 04:36:56

ASP.NET安全问题--Froms验证的具体介绍(中篇)的相关文章

ASP.NET表单验证方法详解第1/2页_实用技巧

1.使用验证控件 这属于客户端验证,微软开发人员将最常用的验证功能进行了封装,使得我们开发效率明显提高,而且特别是自定义验证控件,非常灵活,我们可以自行设计验证逻辑.但是验证控件收到了浏览器的限制,记得在一次开发过程中,使用FireFox浏览器进行浏览,发现所有的验证控件失灵,这个并非是ASP.NET设计的漏洞,只能说浏览器标准的不唯一造成的. ASP.NET公有六种验证控件,分别如下: RequiredFieldValidator(必须字段验证) 用于检查是否有输入值 CompareValid

ASP.NET窗体身份验证详解_实用技巧

asp.net的身份验证类型如下:   在我们实际的工作中,froms身份验证用的还是比较多的,我们接下来详细说一下: 做为web开发的程序员,我想登录窗体是接触的太多了.可是,我发现有的程序员在对身份验证的时候是把验证的用户名保存在一个session里的,然后进入系统的每个页面都去验证session是否为空,如果不为空那么就response.redirect("......aspx").  我认为这种方法相对于asp.net提供的form身份验证来说是不足的,首先,就是增加代码量,因

ASP.NET通用权限验证的实现代码思路_实用技巧

本篇介绍通用权限验证的实现代码思路,总共分为导入参数.解析XML.根据XML配置进行处理.返回结果. 代码架构图 一. 类介绍 1.SFWebPermission:实现IHttpModule接口,权限验证入口: 2.SFConfig:导入XML配置类: 3.SFPermission:解析XML配置进行权限验证: 4.SFAccessOper:数据库操作类: 5.SFPermissionSQL:XML节点实体类: 6.SFParameter:XML节点实体类: 7.SFCommon:系统变量定义类

浅谈asp.net Forms身份验证详解_实用技巧

在做网站的时候,都会用到用户登录的功能.对于一些敏感的资源,我们只希望被授权的用户才能够访问,这让然需要用户的身份验证.对于初学者,通常将用户登录信息存放在Session中,笔者在刚接触到asp.net的时候就是这么做的.当我将用户信息存在在Session中时,常常会遇到Session丢失导致用户无法正常访问被授权的资源,保持用户登录状态时的安全性问题,无休其实,在asp.net中,我们有更好的解决方案,那就是通过Forms身份验证,从而对用户进行授权,这种方法可以轻松的保持用户的登录状态(如果

Asp.net Mvc 身份验证、异常处理、权限验证 代码

本问主要介绍asp.net的身份验证机制及asp.net MVC拦截器在项目中的运用.现在让我们来模拟一个简单的流程:用户登录>权限验证>异常处理. 1.用户登录 验证用户是否登录成功步骤直接忽略,用户登录成功后怎么保存当前用户登录信息(session,cookie),本文介绍的是身份验证(其实就是基于cookie)的,下面看看代码. 引入命名空间  代码如下 复制代码 using System.Web.Security; Users ModelUser = new Users() { ID

ASP.NET 2.0验证cookie详解

对于ASP.NET Forms验证,想必大家都非常的熟悉.然而,在控制用户的(过期时间)expired time的时候,你是否遇到过一些奇怪的现象呢?虽说只是一个小小的cookie,但是其中可能有很多的东西你都不知道.今天我将和大家详细讨论一下cookie的注意点. 在ASP.NET 的Forms验证中,通常我们会使用ASP.NET自带的Login控件来进行验证.同时,在web.config文件中,我们所有的Forms设置都设为默认.现在,问题就来了. 1) 为什么我明明点了"Remember

带数据库的ASP用户名密码登录验证代码

  带数据库的ASP用户名密码登录验证代码,这个代码里有登录判断的完整逻辑,包括连接数据库,查询判断用户名和密码是否正确,返回重填,关闭数据库记录集等,对ASP初学者有相当好的借鉴价值: 这里连接的是SQLSERVER数据库,数据库就不上传了,里面有两个字段,name是存储用户名,userpassword是密码字段,自己手动创建个,修改本代码里面的数据库连接信息就可测试了.

通过扩展改善ASP.NET MVC的验证机制[使用篇]

原文:通过扩展改善ASP.NET MVC的验证机制[使用篇] ASP.NET MVC提供一种基于元数据的验证方式是我们可以将相应的验证特性应用到作为Model实体的类型或者属性/字段上,但是这依然具有很多的不足.在这篇文章中,我结合EntLib的VAB(Validation Application Block)的一些思想通过扩展为ASP.NET MVC提供一种更为完善的验证机制.[源代码从这里下载] 目录: 一.扩展旨在解决怎样的验证问题 二.一个简单的消息维护组件 三.多语言的支持 四.基于某

asp.net mvc3 数据验证(三)—自定义数据注解

原文:asp.net mvc3 数据验证(三)-自定义数据注解         前两节讲的都是asp.net mvc3预先设定的数据注解,但是系统自由的数据注解肯定不适合所有的场合,所以有时候我们需要自定义数据注解.         自定义数据注解有两种,一种是直接写在模型对象中,这样做的好处是验证时只需要关心一种模型对象的验证逻辑,缺点也是显而易见的,那就是不能重用.                                             还有一种是封装在自定义的数据注解中,优