Web程序安全机制

  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>节来定义网站的安全性。

1  <configuaration>
2     <system.web>
3         <authentication mode=”Forms”>
4             <forms name=”myCookies” loginUrl=”../Login.aspx” protection=”All” timeout=”50” path=”/” />
5         </authentication>
6     </system.web>
7 </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>节中设置访问控制的规则。

1 <configuaration>
2    <system.web>
3         <authorization>
4             <allow users=”*” />
5         </authorization>
6     </system.web>
7 </configuaration>

    设置限制性规则

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

1 <configuaration>
2     <system.web>
3         <authorization>
4             <allow users=”?” />
5         </authorization>
6     </system.web>
7 </configuaration>

    控制进入特定的目录地址

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

1 <configuaration>
2     <system.web>
3         <authorization>
4             <deny users=”?” />
5       </authorization>
6     </system.web>
7 </configuaration>

    限制特定的用户 

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

1 <authorization>
2     <deny users=”?”/>
3     <deny users=”admi,shine”/>
4     <deny users=”light”/>
5     <allow users=”*”>
6 </authorization>

    控制进入特定的文件

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

 1 <configuration>
 2     <system.web>
 3         <authorization>
 4             <allow users=”*” />
 5         </ authorization >
 6     </system.web >
 7     <location path=”Page1.aspx”>
 8         <system.web>
 9             <authorization>
10                 <deny users=”?”>
11             </authorization >
12         </system.web>
13     </location>
14 </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认证,示例代码如下:

1 <configuration>
2     <system.web>
3         <authentication mode=”Windows”/>
4     </system.web>
5 </configuration>

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

1 <authentication>
2         <deny users=”?”/>
3         <allow roles=”Administrator,Light”/>
4         <deny users=”light”/>
5 </authentication>

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

      默认的Windows角色:

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

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

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

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

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

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

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

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

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

时间: 2024-08-21 16:44:44

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

Web的工作机制

简要的介绍一下Web的工作机制,以便对开发JavaWeb项目有个更好的理解. 一.Web的概念     1.1    何为Web:Web是万维网(World Wide Web)的简称.Web出现以前,用户查询信息时,需要记住信息的详细地址和各种网络命令.有了万维网,就可以利用链接从Internet的一个站点方便的访问另一个站点,我们今天将这种行为称为"浏览".   1.2   Web的核心标准:URL.HTTP.HTML URL统一资源定位符:URL为描述网页和其他资源地址提供了一种标

《Go语言入门》第一个Go语言Web程序——简单的Web服务器

概述 上一篇讲了 <Go语言入门>第一个Go语言程序--HelloWorld,接下来讲一下Go语言Web开发入门必修课:第一个Go语言Web程序--简单的Web服务器. 与其它Web后端语言不同,Go语言需要自己编写Web服务器. 有关本地环境的搭建与基础学习,请参考: <Go语言入门>如何在Windows下安装Go语言编程环境 Go语言Web应用:IBM的云平台Bluemix使用初体验--创建Go语言 Web 应用程序,添加并使用语言翻译服务 Web服务器代码 Google在ht

web安全认证机制知多少

如今web服务随处可见,成千上万的web程序被部署到公网上供用户访问,有些系统只针对指定用户开放,属于安全级别较高的web应用,他们需要有一种认证机制以保护系统资源的安全,本文将探讨五种常用的认证机制及优缺点. Basic模式 HTTP协议规范中有两种认证方式,一种是Basic认证,另外一种是Digest认证,这两种方式都属于无状态认证方式,所谓无状态即服务端都不会在会话中记录相关信息,客户端每次访问都需要将用户名和密码放置报文一同发送给服务端,但这并不表示你在浏览器中每次访问都要自己输入用户名

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

一.会话机制 Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份. 由于HTTP协议是无状态的,而出于种种考虑也不希望使之成为有状态的,因此,后面两种方案就成为现实的选择.具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案.同时我们也看到,由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所

WEB端缓存机制

什么是WEB缓存 Web缓存是指一个Web资源(如html页面,图片,js,数据等)存在于Web服务器和客户端(浏览器)之间的副本.缓存会根据进来的请求保存输出内容的副本:当下一个请求来到的时候,如果是相同的URL,缓存会根据缓存机制决定是直接使用副本响应访问请求,还是向源服务器再次发送请求.比较常见的就是浏览器会缓存访问过网站的网页,当再次访问这个URL地址的时候,如果网页没有更新,就不会再次下载网页,而是直接使用本地缓存的网页.只有当网站明确标识资源已经更新,浏览器才会再次下载网页 数据库数

java web 程序---购物车选商品,购买,付款

虚函数使用的时机 为什么虚函数不总是适用? 1. 虚函数有事会带来很大的消耗: 2. 虚函数不总是提供所需的行为: 3. 当我们不考虑继承当前类时,不必使用虚函数. 必须使用虚函数的情况: 1. 当你想删除一个表面上指向基类对象,实际却是指向派生类对象的指针,就需要虚析构函数. java web 程序---购物车选商品,购买,付款,布布扣,bubuko.com

使用MyEclipse开发第一个Web程序

MyEclipse环境配置 首先,安装一个MyEclipse,然后进行一些相关的环境配置(Window->Preferences): 比如字体.Formatter等. 也可以从Eclipse中导出配置,然后在MyEclipse中导入. 这里需要特别注意的是两个配置: 1.JSP的打开方式: 选为用编辑器打开: Window->Preferences->General->File Associations 然后在右边窗口选jsp,下面选择MyEclipse JSP Editor,在右

《Python入门》第一个Python Web程序——简单的Web服务器

上一篇讲了<Python入门>Windows 7下Python Web开发环境搭建笔记,接下来讲一下Python语言Web服务的具体实现:第一个Python Web程序--简单的Web服务器. 与其它Web后端语言不同,Python语言需要自己编写Web服务器. 如果你使用一些现有的框架的话,可以省略这一步: 如果你使用Python CGI编程的话,也可以省略这一步: 用Python建立最简单的web服务器 利用Python自带的包可以建立简单的web服务器.在DOS里cd到准备做服务器根目录

使用Node.js的socket.io模块开发实时web程序

首发:个人博客,更新&纠错&回复 今天的思维漫游如下:从.net的windows程序开发,摸到nodejs的桌面程序开发,又熟悉了一下nodejs,对“异步”的理解有了上上周对操作系统的学习而更能理解.然后发现了Node.js中的socket.io这个模块,又觉得跟前几天用.net做客户端的socket游戏了.技术世界,兜兜转转,相逢一笑,疑是故人. socket.io用来做实时web程序,解决之前的B/S程序只有无状态连接,特定需求还需要用长连接这种“奇技淫巧”的问题.当然,这是html