知识大全 开发安全的ASP.NET应用程序
Posted 知
篇首语:万事须己运,他得非我贤。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 开发安全的ASP.NET应用程序相关的知识,希望对你有一定的参考价值。
开发安全的ASP.NET应用程序 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Web应用程序会遭到几种类型的攻击 其破坏效果会因程序本身的不同而不同 因此 安全性是与程序的用法和用户与其功能交互的方式密切相关的 那么 应该如何来设计和编码ASP NET应用程序呢?
从应用程序的角度来看 安全性通常指对用户的鉴别以及对系统资源授予访问权限 ASP NET提供了许多鉴别和授权机制 它们与IIS NET Framework以及操作系统底层的安全服务是相连的
当一个客户端发出一个Web请求时 将发生下列顺序的鉴别和授权事件
IIS鉴别
ASP NET鉴别
ASP NET授权
鉴别用户
如果页面是可以被察看的 而请求来自一个非受限的IP地址 IIS将通过预定义的鉴别机制来对调用请求进行鉴别 首先IIS确保请求来自一个可信任的IP地址 如果不是 请求将以HTTP错误 而被拒绝 第二个措施是检查被请求的资源是否可以被读或被浏览 如果不是 请求将以HTTP错误 而被拒绝 然后IIS尝试使用Intergrated Digest或Basic方法来鉴别这个调用 如果用到了Windows的Intergrated方法 Kerberos或NTLM将被使用 如果请求通过了这一关 就轮到ASP NET出场了
ASP NET支持三种类型的鉴别方法 Windows Forms和Passport 如果ASP NET被配置为Windows鉴别 则它不需要其它的步骤 而是直接承认任何从IIS传来的安全标记 如果ASP NET被配置为Forms鉴别 将使用一个HTML表单提示用户输入信任资料 通过用户ID和密码在存储的合法用户列表中查寻 应用程序可以任意选择最合适的存储机制 包括SQL Server数据库或Active Directory服务 最后如果ASP NET被配置为Passport鉴别 用户将被转入一个Passport Web站点并由Passprot服务来鉴别
第四中类型的鉴别是None 这意味着ASP NET并不执行自己的鉴别而是完全依靠已经由IIS执行的鉴别 在这种情况下 匿名用户可以连接进来 而访问资源使用的是ASP NET账户 将ASP NET鉴别模式设定为None并不妨碍程序实现自己的鉴别层
在nfig文件中通过使用<authentication>区段来选择ASP NET的鉴别机制 默认的鉴别模式是Windows
授权
当然 鉴别只是意味着用户被确认为是其本身 下一步是确认用户拥有足够的权限来访问请求的资源
在鉴别完之后 ASP NET将校验调用是否被授权用以访问请求的资源来执行操作 一对HTTP模块提供了这项服务 UrlAuthorizationModule和FileAuthorizationModule 前者确保nfig文件中<authorization>区段中的授权规则完全实现 后者在使用Windows鉴别时来检查调用是否有足够的访问许可来访问请求的资源 在这种情况下 通过比较访问资源的控制列表(ACL)调用的标记来执行校验 在处理过程中 也可以用 NET roles来改变调用者的权限以便使用某个资源
授权规则由两部分独立的信息组成 它们定义了哪些是允许的那些事禁止的 在<authorization>区段内 标记<allow>定义了允许的用户 任务和操作 相反 在<deny>标记中包含了不被允许的用户 任务和操作
你也许注意到鉴别模式只能在nfig文件或在程序层的nfig文件中设置 子目录继承了程序的鉴别模式 但是 授权设置可以在每个子目录的nfig文件中设置 换句话说 授权比鉴别支持更细
基于角色的安全
如果你需要鉴别用户 你同样需要为他们建立个性化的页面 这里有两大的选择 一是实现一个个人资料系统 为每个用户存储配置信息 二是定义一些角色 把用户映射到这些角色上
在第一种情况下 要维护个人资料记录 可能需要存储与用户界面有关的设置以及打开或关闭的功能 在设计页面时 访问这些个人资料记录来为当前用户生成相应的页面
如果你不必维护每个用户的信息 而只是要将用户分类并维护基于每一类的信息 那基于角色的方法就显得更好 一个角色是一个名称——一个简短的描述性字符串——它为属于这个角色的每个用户定义了一组功能 用户界面元素以及权限
定义角色需要两个步骤 首先 定义所有可能的角色 为每个用户分配其中的一个或多个 这通常在数据库层完成 典型的 你在存储用户名字和密码的数据库中加入一列来存储每个用户的角色
鉴别一个用户时 其身份并没有和任何角色信息关联 但是 有一个功能用来来检查某一个身份是否属于特定的已定义角色 可以使用Page User对象的IsInRole功能来检验一个用户的角色 if(User IsInRole( Boss ))
Response Write( The user is the boss )
定义角色的第二步是将每个已鉴别的用户与角色相关联 要这样做 你必须创建一个新的主体对象 其类型可以是普通的或与授权种类相同 通常在Global asax文件中处理AuthenticateRequest事件时完成 //角色是根据当前用户从数据库中读出的字符串
Context User=new GenericPrincipal(User Identity role)
这时 鉴别模块能够通过本地nfig文件的<authorization>区段来检验用户的角色 例如 一个其nfig文件如下所示的文件夹里的页面只能被属于Boss角色的用户访问 <authorization>
<allow roles= Boss />
<deny users= * />
</authorization>
鉴别模块使用IsInRole函数通过角色来授权
保护你的应用程序
cha138/Article/program/net/201311/11702相关参考
ASP.NET开发应用编程中的十大技巧 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 手动用户界
开发ASP.NET下的MP3小偷程序 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! MP资源都在
知识大全 基于ASP.NET MVC框架开发Web论坛应用程序[1]
基于ASP.NETMVC框架开发Web论坛应用程序[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下
知识大全 基于ASP.NET MVC框架开发Web论坛应用程序[3]
基于ASP.NETMVC框架开发Web论坛应用程序[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下
知识大全 基于ASP.NET MVC框架开发Web论坛应用程序[2]
基于ASP.NETMVC框架开发Web论坛应用程序[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下
知识大全 结合JavaScript与ASP.NET Web窗体进行程序开发
结合JavaScript与ASP.NETWeb窗体进行程序开发 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来
ASP.NET应用程序结构及安全规划[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 安全规
ASP.NET应用程序结构及安全规划[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 图三层
ASP.NET应用程序结构及安全规划[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 通过上
五种常见的ASP.NET应用程序安全缺陷 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一不能盲