ASP.NET 2.0 程序安全的基础知识
成员关系的概念在人类社会中是一个层次比较低的概念,源于希望属于某个群组的意识。我们希望能觉得自己是某个团队的一部分,让别人知道我们是谁,因此Web搭上这个流行趋势,采用这个概念只是时间早晚的问题。如果坐下来想一想曾经登录过多少个站点并在这些站点上保存了简单的用户信息,可能会发现自己所属的群组比一开始想象的要多得多。从出售书籍和小器具的站点到讨论拥有一辆Ford Puma的好处的社区,或者宣传一个名为Look Around You的BBC TV喜剧节目的站点,作者发现自己是会员的站点多得无法一一列举。接下来就会碰到一个熟悉的困难“登录这个站点要使用哪个用户名和口令?”
Web上最成功的站点之一,Amazon.com,一开始只是一个书店,但后面经营的范围越来越大。现在当用户登录Amazon时,将发现整个页面上全是与该用户的消费习惯有关的商品。
在开始开发涉及到成员关系的应用程序时,必须首先理解几个关键的概念,这些概念是身份、验证和授权。
1、身份——我是谁
在考虑身份时,我们可以用几种独一的特性来描述自己。例如,我是一个头发金黄的女人,喜欢看科幻电影和组装PC机,但这些信息对于对我的羽毛球技术感兴趣的人来说并不是必需的。保存在站点中的身份信息很可能只与一个人的某些方面相关。例如,一个购物站点会保存用户的姓名、电话号码、电子邮件地址和家庭地址,这些信息都与商品的销售有关。它们可能不会关心您的个人兴趣(除非它们和Amazon的规模一样大),所以它们并不需要保存关于用户的这类信息,但是这并不妨碍它们拥有这些方面的身份信息。
因此身份,也就是我是谁的概念,是一组范围很广的实际情况的集合。您可能曾经在简历里写下了很多实际情况,但这些情况同样只与潜在的雇主相关。在简历中保存和删除哪些情况由自己决定。在保存一个站点的成员的信息时,情况也是一样的,必须在开发阶段就确定要保存成员的哪些实际情况。
2、身份验证——这就是我
在试图登录一个网站的时候,用户要输入某些证书。例如,邮件地址及其口令的组合。网站接下来必须判断用户是否就是自己声明的那个人,因此用户输入的邮件地址和口令的组合必须与保存在服务器文件中特定的邮件地址和口令组合相匹配。
身份验证的过程就是证明自己是自己所声明的那个人的过程。很多站点,不论它们是零售商品还是提供社区服务,都使用邮件地址和口令的组合作为身份验证方法,这是一种经过反复考验的方法。虽然这种方法不是绝对安全,但是只要选择一个足够可靠的口令并严格保密,同时站点的代码经过严格的测试,那么用户的配置文件将只能由用户本人使用。
3、授权——这是我能做的
在向网站输入用户名和口令之后,Web服务器将不仅会验证口令和用户名是否匹配,还将查看站点管理员给用户授予了什么权限。身份验证之后的下一个步骤是授权,这个步骤将检索您所拥有的用户账户类型的更多信息。
例如,以一个银行网站为例。在用户的登录信息通过验证之后,服务器将查看用户在该站点上的权限。与大多数用户一样,您可以查询账户、在账户之间转账或者支付账单。然而,如果银行受到某个安全方面的恐吓(类似于Internet上到处流传的网络钓鱼(phishing)电子邮件),您可能会发现自己突然无法通过这个在线应用程序添加任何第三方代理订单,直到安全危机解除为止。功能的关闭很可能是由管理员为一些或所有用户设置一个特殊的标记而进行控制的,在页面上告诉用户他们不再有权限修改他们账户的详细信息。
4、登录站点
登录站点的过程,从用户的角度看,就是输入一组证书,然后根据自己的配置文件看到不同用户界面的过程。通常,用户所使用的证书是用户名加口令的组合;然而,对于安全性更高的站点,例如银行站点,可以使用其他的方式登录,包括PIN和安全认证。如果不考虑向服务器传送身份验证证书的方法,那么身份验证的基本原则是一样的。一旦验证完成之后,通过身份验证机制查询用户具有什么样的权限就比较简单了。
相关推荐
-
ASP.NET MVC小结之基础篇(一)
前言:前几天要准备一个演讲,所以准备了MVC的一些基本的东西,以前也使用过MVC,但是只是使用,而不是去了解,所以趁着这个机会好好的把别人的MVC视频看了一下(是一个微软的MVP会员发布的视频,相信有些人都看过),整理除了这个笔记,共享一下子,基本MVC的所有东西都介绍了,但是都是很基础的东西.本来打算一篇发表完的,但是发现东西有点多,所以分成了两篇文章! 什么是ASP.NET MVC (1) ASP.NET MVC是微软官方提供的MVC模式编写ASP.NET Web应用程序的一个框架 (2)M
-
ASP.NET中实现文件的保护性下载基础篇
一.文件保护性下载的需求 如果我们需要在站点上出售数字形式的商品,如电子书.数字油画等,那么如何在供授权用户正常下载的同时又阻止非授权用户非法下载您的产品呢? 通过Forms身份验证,只能使这个问题得到部分解决.本文中,我将讲解如何防止某些用户访问站点上的某些文件;即使这些文件能够被这些用户直接浏览. 解决这个问题的方法有多种,但是有些方法本身就有问题.本文中,我们将考察软件供应厂商常用的一些技术,然后再介绍一种新的解决方案.需要注意的是,这里介绍的是针对ASP.net站点的. 二.常见的文件保
-
ASP.NET MVC小结之基础篇(二)
整理除了这个笔记,共享一下子,基本MVC的所有东西都介绍了,但是都是很基础的东西.本来打算一篇发表完的,但是发现东西有点多,所以分成了两篇文章,这是最后一篇了! 1.ASP.NET MVC请求过程 1 2.Controller (1) 控制器在ASP.NET MVC中扮演着处理客户端请求的角色 1)必须实现System.Web.Mvc.IController接口 ->通常直接继承System.Web.MVC.Controller类 2)必须要以Controller结尾 3)通过不同的Action
-
从零开始学ASP.NET-基础篇第1/7页
第一天 学习目的: 掌握最基本的Label.TextBox.Button控件用法 掌握用StringBuider类连接字符串 理解服务器的环境变量 StringBuilder类: 命名空间是:System.Text. StringBuilder类是个高效的类,StringBuilder.Append连接字符串的方法是非常快的.用于连接大量的字符串,其速度的优越性就会体现出来. 先举几个例子: 在cs或vb文件的头部加上 [C#]using System.Text; [VB]Imports Sys
-
ASP.NET MVC基础
一.MVC与ASP.NET MVC基础概念 MVC是Model-View-Controller的缩写. MVC将应用程序划分为3大组件:模型\视图\控制器. MVC不是ASP.NET所特有,它只是一种开发理念.java中的struts2也是一种MVC模型. ASP.NET MVC从2008年发布1.0版以来,截至2014年ASP.NET MVC最新版本已经是5.0. ASP.NET MVC从1.0版开始,就已经开放源代码(源码地址:aspnetwebstack.codeplex.com). AS
-
[ASP.NET Ajax] ECMAScript基础类以及Asp.net Ajax对类<Object>的扩展
"Everything is Object",在面向对象的编程语言中谁都知道这句话,但对我来说这是一种感觉,只可意会很难言传.由于我对JavaScript和薄弱,所以在看Asp.net Ajax类库的同时也翻出了ECMAScript顺便学习学习.在.NET中所有类都是继承自Object,同样在JS中也一样说有都继承Object,因此如果对Object进行了扩展,那所有继承Object类的后代肯定会拥有祖先的血缘. 既然开始学习JavaScript那就顺便在这里提一提他的原始数据类型,在
-
ASP.net基础知识之常见错误分析
1:command调用存储过程的时候,如果输出是dataset,selectcommand的command对象的connection先要指出,否则catch一辈子也是空的.. 2:存储过程的varchar字段如果是x.x的这种格式,容易出现细微的傻错误,注意不要漏了[]. 3:如果ascx文件的默认服务器控件的事件不重写的话在control控件里面没有自动回送!切记. 4:Page.RegisterOnSubmitStatement在ascx文件中小心使用... 5:viewstate在true
-
ASP.NET母版页基础知识介绍
模板页是做什么的? 利用模板页可以方便快捷的创建统一风格的ASP.NET网站,并且容易管理和维护,提高了效率. 模板页为网页定义所需要的外观和标准,在母版的基础上创建包含显示内容的各个内容页.当用户请求内容页时,这些内容页与母版页合并,这样,模板页的布局与内容页的布局就可以组合在一起输出了. 模板页一般用来: 1.通过修改模板页来处理网页的通用功能. 2.可以方便的创建一组控件和代码,并应用于一组网页. 3.通过允许控制占位符控件的呈现方式,模板页可以在细节上控制最终页的布局. 模板页与普通页
-
ASP.NET 5已终结,迎来ASP.NET Core 1.0和.NET Core 1.0
ASP.NET 在过去的 15 年里是个非常不错的"品牌". ASP.NET 4.6 已经支持在生产环境使用:http://get.asp.net. 但是,命名是新的,完全截取自 ASP.NET 框架 -- "ASP.NET 5",但这并不是个好主意,其中一个原因是:5 > 4.6,这样看起来 ASP.NET 5 比 ASP.NET 4.6 版本号更大,更好,甚至是可以替代 ASP.NET 4.6. 所以修改了名字,选择了一个更好的版本号. 重新引入 ASP.
-
ASP.NET 2.0 程序安全的基础知识
成员关系的概念在人类社会中是一个层次比较低的概念,源于希望属于某个群组的意识.我们希望能觉得自己是某个团队的一部分,让别人知道我们是谁,因此Web搭上这个流行趋势,采用这个概念只是时间早晚的问题.如果坐下来想一想曾经登录过多少个站点并在这些站点上保存了简单的用户信息,可能会发现自己所属的群组比一开始想象的要多得多.从出售书籍和小器具的站点到讨论拥有一辆Ford Puma的好处的社区,或者宣传一个名为Look Around You的BBC TV喜剧节目的站点,作者发现自己是会员的站点多得无法一一列
-
asp.net 4.0+ webform程序中集成mvc4
本文为大家分享了asp.net 4.0+ webform程序中集成mvc4的方法,供大家参考,具体内容如下 1.新建packages.config文件,里面加上必要的程序集 <?xml version="1.0" encoding="utf-8"?> <packages> <package id="Microsoft.AspNet.Mvc" version="4.0.20710.0" target
-
在 .NET Framework 2.0 中未处理的异常导致基于 ASP.NET 的应用程序意外退出
但是,系统日志中可能会记录类似于以下内容的事件消息: 事件类型:警告 事件来源:W3SVC 事件类别:无 事件 ID: 1009 日期: 9/28/2005 时间:3:18:11 PM 用户:N/A 计算机:IIS-SERVER 描述: 为应用程序池"DefaultAppPool"提供服务的进程意外终止.进程 ID 是"2548".进程退出代码是"0xe0434f4d". 而且,应用程序日志中可能会记录类似于以下内容的事件消息: 事件类型:错误
-
在ASP.NET 2.0中操作数据之五十八:在程序启动阶段缓存数据
导言: 前面2章考察了在表现层和缓存层缓存数据.在第56章,我们探讨了在表现层设置ObjectDataSource的相关cache属性来缓存数据.在第57章,我们探讨了创建一个单独的分开的缓存层.这2章都是采用"应激装载"(reactive loading)的模式来缓存数据.该模式下,每次请求数据时,系统先检查其是否在内存,如果没有,则从数据源--比如数据库,来获取数据,然后将其存储在内存里.该模式的优势在于执行起来很容易:而缺点之一在于应"请求"(requests
-
在ASP.NET 2.0中操作数据之七十二:调试存储过程
导言: Visual Studio有很多的调试功能.我们只需要稍稍点点鼠标,敲敲键盘就可以使用断点(breakpoints)来打断某个程序的执行,并查看其状态.除了调试代码以外,Visual Studio也支持对SQL Server里面的存储过程进行调试.就像可以在ASP.NET页面的后台代码类或Business Logic Layer class类里设置断点一样,我们也可以在存储过程里设置断点. 本文我们将考察如何在Visual Studio的Server Explorer里进入存储过程并设置
-
在ASP.NET 2.0中操作数据之十六:概述插入、更新和删除数据
导言 结束前面的几节,我们已经探讨过了如何使用GridView.DetailsView和FormView控件来显示数据.这些控件简单地操作提供给它的数据.一般地,这些控件通过使用一个数据源控件,例如ObjectDataSource来存取数据.我们已经看过了ObjectDataSource是如何在ASP.NET页面和潜在的数据之间扮演一个代理的角色.当一个GridView需要显示数据时,它调用ObjectDataSource的Select()方法,这个方法转而调用一个来自我们的业务逻辑层(BLL)
-
在ASP.NET 2.0中操作数据之十七:研究插入、更新和删除的关联事件
导言 当使用GridView.DetailsView或FormView控件的内建插入.编辑或删除特征时,在用户添加一条新记录或更新/删除一条现在记录的过程中发生了多个步骤.正如我们之前一节里所讨论的,在GridView中编辑一行时,保存(Update)和取消(Cancel)按钮将取代编辑(Edit)按钮,并且绑定列转换成TextBox.在用户更新了数据并点击保存按钮之后,下述步骤在回传时执行: 1.该GridView控件根据当前编辑行的唯一标识字段(通过DataKeyNames属性)组装它的Ob
-
在ASP.NET 2.0中操作数据之十八:在ASP.NET页面中处理BLL/DAL层的异常
导言 在一个使用了分层体系架构的ASP.NET web应用系统里处理数据,一般遵循以下几步: 1.确定业务逻辑层需要调用哪个方法,并且需要出入哪些参数.这些参数可以通过硬编码设置,程序自动设定,或者由用户输入. 2.调用此方法. 3.处理结果.当调用一个返回数据的BLL方法时,这包括绑定数据到Data Web服务器控件.而对于修改数据的BLL方法而言,这包括基于返回值的基础上执行某些动作,或者适当地处理在第二步中引发的异常. 正如我们在前一节里看到的,无论ObjectDataSource控件还是
-
在ASP.NET 2.0中操作数据之一:创建一个数据访问层
导言 作为web开发人员,我们的生活围绕着数据操作.我们建立数据库来存储数据,写编码来访问和修改数据,设计网页来采集和汇总数据.本文是研究在ASP.NET 2.0中实现这些常见的数据访问模式之技术的长篇系列教程的第一篇.我们将从创建一个软件框架开始,这个框架的组成部分包括一个使用强类型的DataSet的数据访问层(DAL),一个实施用户定义的业务规则的业务逻辑层(BLL),以及一个由共享页面布局的ASP.NET网页组成的表现层.在打下这个后端的基础工作之后,我们将开始转向报表,示范如何显示,汇总
-
ASP基础知识Command对象讲解
Coonamd 对象定义了将对数据源执行的命令,可以用于查询数据库表并返回一个记录集,也可以用于对数据库表进行添加.更改和删除操作. 一.使用Command 对象的步骤: 当在 ASP 页面中使用 Command 对象处理数据时,应首先设置命令类型.命令文本以及相关的活动数据库连接等,并通过 Parameter 对象传递命令参数,然后通过调用 Execute 方法来执行 SQL 语句或调用存储过程,以完成数据库记录的检索.添加.更改和删除任务.其步骤如下: 1.使用 ActiveCommand
随机推荐
- JavaScript计算两个日期时间段内日期的方法
- php cache类代码(php数据缓存类)
- JavaBean(EJB) 3.0 全新体验
- jquery实现多次上传同一张图片
- 详解Vue2.0之去掉组件click事件的native修饰
- Windows上使用virtualenv搭建Python+Flask开发环境
- 修改yii2.0用户登录使用的user表为其它的表实现方法(推荐)
- php set_include_path函数设置 include_path 配置选项
- python网络编程之TCP通信实例和socketserver框架使用例子
- Python中的__slots__示例详解
- go语言执行windows下命令行的方法
- 删除sqlserver数据库日志和没有日志的数据库恢复办法
- jqueryMobile 动态添加元素,展示刷新视图的实现方法
- CentOS6.5下Tomcat7 Nginx Redis配置步骤教程详解
- jQuery实现的checkbox级联选择下拉菜单效果示例
- 基于jQuery实现返回顶部实例代码
- Javascript 陷阱 window全局对象
- C++画正弦线实例代码
- Ajax实现搜索引擎自动补全功能
- httpclient 请求http数据,json转map的实例