ASP.NET提供了一个多层的安全模型,这个模型能够非常容易的保护Web应用程序。

  安全策略没有必要非常复杂,但是需要应用安全策略的地方却是非常广泛的。程序员需要保证自己的应用程序不能被骗取,而把私有信息发送出去。

限制访问的文件类型

  ASP.NET自动提供一个基本的安全策略来阻止对特定文件的访问请求。ASP.NET向IIS注册这些文件类型,并把它们配置给IIS中的一个类HttpForbiddenHandler,这个类在它的生命周期中只有一个作用,就是拒绝所有向配置到它里面的文件发送请求。

  被限制访问的文件类型如下:

    1..asax:全局文件,提供了一些在一个中心位置响应应用程序级或模块级事件的方法。

    2..asc:Web服务文件,提供Web服务。

    3..config:配置文件,提供应用程序的配置。

    4..cs:源代码文件,由C#编写。

    5..csproj:C#项目文件,控制C#项目的生成。

    6..vb:源代码文件,由VB编写。

    7..vbproj:VB项目文件,控制VB项目的生成。

    8..resx:资源文件,主要用于存储各个版本的资源。

    9..resources:受控资源文件,可以存放位图、子串和自定义数据等资源。

安全概念

  安全有三种最基本的概念。

    1. 认证(Authentication):这个过程是要确定一个用户的身份以及迫使用户证明他们是谁。通常这些Windows用户账户被存储在一个文件或后端数据库中。

    2. 授权(Authorization):一旦一个用户通过认证,授权的过程就是确定用户是否有足够的权限来执行某一行为。通常,Windows设定授权检测。

    3. 模拟(Impersonation):所有代码都运行在一个固定的账户下,这个账户被定义在machine.config文件里。而模拟允许一部分代码运行在一个不同的身份之下。授权和认证是创建一个安全网站的两个基石。

安全策略

  IIS和ASP.NET的安全设置可以有几种互动的方式,在实际操作中,程序员可以把以下两个中心策略添加到ASP.NET安全机制中:

    1. 允许无身份的用户,使用ASP.NET表单认证模型来保证网站的安全。
    2. 禁止无身份的用户,使用IIS认证来强迫每个用户来使用集成的Windows认证。

  表单认证

    ASP.NET支持尖端验证算法,这种算法使得用户无法骗取自己的Cookie或试图欺骗应用程序以使他们进入。

    为了实现基于表单的安全,需要按照以下三个步骤进行操作:

      1.在Web.config文件里设置认证模型。

      2.限制无身份的用户访问应用程序中的特定页或地址。

      3.创建一个登录页面。

    Web.config设置 

      可以在Web.config文件里使用<authentication>节来定义网站的安全性。

  <configuaration>
<system.web>
<authentication mode=”Forms”>
<forms name=”myCookies” loginUrl=”../Login.aspx” protection=”All” timeout=”50” path=”/” />
</authentication>
</system.web>
</configuaration>

      表单认证的设置属性:

        1.name:设置Cookie的名字,默认值为ASPXAUTH。

        2.loginUrl:设置客户端登录页面地址,如果用户没有认证就会跳转到该地址,默认值为Default.aspx

        3.protection:设置安全Cookie的加密和验证类型,类型的值可以是All、None、Encryption或Validation。

        4.timeout:设置Cookie失效时间。

        5.path:设置Cookie作用的路径,默认值是“/”。

    授权规则 

      为了控制登录网站的权限,需要在Web.config文件中的<authorization>节中设置访问控制的规则。

 <configuaration>
<system.web>
<authorization>
<allow users=”*” />
</authorization>
</system.web>
</configuaration>

    设置限制性规则

      为了禁止任何用户都能访问应用程序,需要设置一种更具有限制性的规则。

 <configuaration>
<system.web>
<authorization>
<allow users=”?” />
</authorization>
</system.web>
</configuaration>

    控制进入特定的目录地址

      应用程序设计通常把文件放在一个单独的需要认证的文件目录中,使用ASP.NET配置文件可以很轻松地完成这些设置。可以在Web.config文件的<authorization>节中进行严格的安全目录设置,这样应用程序就会简单地拒绝所有无身份的用户。

 <configuaration>
<system.web>
<authorization>
<deny users=”?” />
</authorization>
</system.web>
</configuaration>

    限制特定的用户 

      使用<allow>节可以设置允许访问应用程序的用户列表,而使用<deny>节可以设置拒绝访问应用程序的用户列表。

 <authorization>
<deny users=”?”/>
<deny users=”admi,shine”/>
<deny users=”light”/>
<allow users=”*”>
</authorization>

    控制进入特定的文件

      通常,通过目录设置文件访问权限是最简洁和最容易的方式,然而,程序员也可以使用<location>标记来限制特定文件的访问。

 <configuration>
<system.web>
<authorization>
<allow users=”*” />
</ authorization >
</system.web >
<location path=”Page1.aspx”>
<system.web>
<authorization>
<deny users=”?”>
</authorization >
</system.web>
</location>
</configuration>

  Windows认证

    采用Windows认证,IIS将要掌管认证过程,如果虚拟目录采用默认的设置,用户就会被授权在无身份的IUSER_[ServerName]账户之下,但是当使用Windows认证时,必须强迫用户在他们被允许进入网站的安全内容之前登录IIS。

    用户登录的信息可以采用几种方式来转化,但是最终的结果是通过使用一个本地Windows账户来认证用户。通常情况下,这使得Windows认证成为最适合互联网的方案,其中,一组数量有限的已知用户被注册在一台网络服务器上。

    为了对已知的用户实行基于Windows的安全策略,需要遵循以下步骤:

      1.在Web.config文件里设置认证模型。

      2.采用授权规则拒绝所有无身份的用户访问 网站。

      3.在服务器上配置Windows用户账户。

    IIS设置

      为了设置拒绝无身份用户的进入 ,需设置IIS。

    Web.config设置

      一旦采用适当的虚拟目录安全设置,就应该在Web.config文件里把认证模式配置为Windows认证。在一个VS.NET项目中,默认的认证模式是Windows认证,示例代码如下:

 <configuration>
<system.web>
<authentication mode=”Windows”/>
</system.web>
</configuration>

      可以使用<allow>和<deny>元素来说明允许或限制用户去访问特定的文件或目录。也可以通过roles属性来限制某一类型的用户,这些用户具有相同的Windows组提供的账户。

 <authentication>
<deny users=”?”/>
<allow roles=”Administrator,Light”/>
<deny users=”light”/>
</authentication>

      如果使用Windows认证。必须用明确的语法说明用户的域名或服务器。

      默认的Windows角色:

        1.AccountOperator:负责管理一台计算机或域内用户账户的用户。

        2.Administrator:完全和不受限制进入计算机或域的用户。

        3.BackupOperator:用来备份操作的用户。

        4.Guest:具有用户角色但有更多的限制的用户。

        5.PowerUser:同Administrator相似但带有一些限制的用户。

        6.PrintOperator:负责打印机的用户。

        7.Replicator:在一个域内负责文件复制的用户。

        8.SystemOperator:同Administrator相似但带有一些限制的用户。

        9.User:不能更改系统设置的用户,但可以使用系统。

Web程序安全机制的更多相关文章

  1. 企业应用的Web程序的安全性

    提起安全性这个话题,大家恐怕依稀还记得Sony的PSP账户信息泄露的事故造成的重大损失.但是又隐隐觉得这事儿离我很远,无需过多考虑.也有的人会想,我们做的是企业内部系统所以不必太在意.但是,Web程序 ...

  2. 开发安全的Web程序

    目录0x1:什么是安全的Web应用程序0x2:过滤输入的数据0x3:转义输出的数据0x4:Register Globals0x5:magic_quotes_gpc0x6:错误信息的报告0x7:文件的安 ...

  3. Web的工作机制

    简要的介绍一下Web的工作机制,以便对开发JavaWeb项目有个更好的理解. 一.Web的概念     1.1    何为Web:Web是万维网(World Wide Web)的简称.Web出现以前, ...

  4. 深圳尚学堂:Web程序员应该会的知识

    互联网的行业里涌入了很多的程序员, 都在为互联网的发展添砖加瓦.程序员可以分为很多种,像Unix程序员.Windows程序员,或是C++程序员.Delphi程序员,等等.今天我们谈谈Web程序员,一名 ...

  5. Java Web(三) 会话机制,Cookie和Session详解

    很大一部分应该知道什么是会话机制,也能说的出几句,我也大概了解一点,但是学了之后几天不用,立马忘的一干二净,原因可能是没能好好理解这两种会话机制,所以会一直遗忘,一直重新回过头来学习它,今天好好把他总 ...

  6. web安全认证机制知多少

    如今web服务随处可见,成千上万的web程序被部署到公网上供用户访问,有些系统只针对指定用户开放,属于安全级别较高的web应用,他们需要有一种认证机制以保护系统资源的安全,本文将探讨五种常用的认证机制 ...

  7. Web程序报错:Error instantiating servlet

    ---恢复内容开始--- web程序的前期准备工作都做好了,也就是web程序的目录都建好了,在WEB-INF文件夹下建立了classes文件夹,用于存放编好的.class文件.我想这两个类应该都在相应 ...

  8. Java Web(三) 会话机制,Cookie和Session详解(转载)

    https://www.cnblogs.com/whgk/p/6422391.html 很大一部分应该知道什么是会话机制,也能说的出几句,我也大概了解一点,但是学了之后几天不用,立马忘的一干二净,原因 ...

  9. WEB端缓存机制

    WEB端缓存机制 什么是WEB缓存 Web缓存是指一个Web资源(如html页面,图片,js,数据等)存在于Web服务器和客户端(浏览器)之间的副本.缓存会根据进来的请求保存输出内容的副本:当下一个请 ...

随机推荐

  1. [NOIP2004]FBI树

    题目描述 我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全“1”串称为I串,既含“0”又含“1”的串则称为F串. FBI树是一种二叉树,它的结点类型也包括F结点,B结点和I结点三 ...

  2. 实用型的DJANGO ORM

    比较深入一点的内容,需要用时,用心看看. URL: https://www.sitepoint.com/doing-more-with-your-django-models/ https://www. ...

  3. 22、Java并发性和多线程-Java中的读/写锁

    以下内容转自http://ifeve.com/read-write-locks/: 相比Java中的锁(Locks in Java)里Lock实现,读写锁更复杂一些.假设你的程序中涉及到对一些共享资源 ...

  4. cojs1101. [Vijos1369] 难解的问题==codevs 2188 最长上升子序列

    [题目描述] 在你的帮助下,蔚蓝来到了埃及.在金字塔里,蔚蓝看到了一个问题,传说,能回答出这个问题的人就能受到埃及法老的祝福,可是蔚蓝日夜奋战,还是想不出来,你能帮帮他么?(XXX: 胡扯,教主怎么可 ...

  5. 使用Vitamio插件显示花屏

    Vitamio是一款 Android 与 iOS 平台上的全能多媒体开发框架,全面支持硬件解码与 GPU 渲染. 使用vitamio进行播放器的开发非常便捷,使用vitamio的解码,自己编写播放器界 ...

  6. java错误:无法将Object转换为int类型

    Object value java要想将Object转换为int类型,就必须先将Object转换为String,然后String再转换为int,如下: Integer.parseInt(String. ...

  7. YTU 2760: 字符串---首字母变大写

    2760: 字符串---首字母变大写 时间限制: 1 Sec  内存限制: 128 MB 提交: 343  解决: 136 题目描述 输入一行英文句子,将每个单词的第一个字母改成大写字母. 输入 一个 ...

  8. 如何的退出无响应的 SSH 连接

    ~. 具体操作是Shift+-,然后松开按.. tips如果无效,可以先按下Enter,然后进行上面的操作.

  9. RAID5配置及服务器2003系统安装方法。2000系统的安装要使用7.9版本的引导盘

    服务器2003系统安装方法.2000系统的安装要使用7.9版本的引导盘 RAID5配置: 1.为新到的惠普DL380服务器装系统,首先要配置RAID阵列. 如下图进行配置. 启动到如上图阶段,按F8. ...

  10. Bing Maps进阶系列一:初识Bing Maps地图服务

    Bing Maps进阶系列一:初识Bing Maps地图服务 Bing Maps提供了一组WCF的地图服务,使用这些服务我们可以方便的在自己的应用系统里实现地理位置搜索等相关功能.他们分别是地理编码服 ...