Presentation is loading. Please wait.

Presentation is loading. Please wait.

基于.NET的需求分析和解决方案设计 第1章 商务解决方案设计 第2章 收集和分析信息 第3章 解决方案的构思 第4章 概念设计的创建

Similar presentations


Presentation on theme: "基于.NET的需求分析和解决方案设计 第1章 商务解决方案设计 第2章 收集和分析信息 第3章 解决方案的构思 第4章 概念设计的创建"— Presentation transcript:

1 基于.NET的需求分析和解决方案设计 第1章 商务解决方案设计 第2章 收集和分析信息 第3章 解决方案的构思 第4章 概念设计的创建
第1章 商务解决方案设计 第2章 收集和分析信息 第3章 解决方案的构思 第4章 概念设计的创建 第5章 逻辑设计的创建 第6章 物理设计的创建 第7章 表示层的设计 第8章 数据层的设计 第9章 设计安全规范 第10章 完成计划阶段 第11章 稳定和部署方案 目的: 本章介绍如何设计安全的应用程序,其中涉及到如何规划应用程序安全性和应用到的一些相关策略; 难点: 明确应用程序的常见安全威胁和缺陷; 规划应用程序的安全策略; 讲解.NET提供的安全方面的特性; 在应用程序的重要层次结构中设计授权、验证和审核策略; 注意: 本章的推荐教学课时为4课时; 加下划线为即将学到的内容; 课前温习: 复习上章内容,问题如下: 在规划阶段如何设计数据模型? 在概念设计阶段,需要分析和调研数据需求;这些需求将有助于决定解决方案最终存储和处理哪些数据; 在逻辑设计阶段,需要从需求中确定一组数据实体,它们之间的关系和数据结构; 在数据库中指定数据类型的意义? 确定了数据如何在数据库中存储; 确定了数据的格式; 有助于验证数据有效性; 选择合适的数据类型能优化数据库存储。

2 第9章 设计安全规范 应用程序开发的安全性概述 为应用程序安全性制定计划 使用.NET框架中的安全性 设计授权、验证和审核策略 注意:
第9章 设计安全规范 应用程序开发的安全性概述 为应用程序安全性制定计划 使用.NET框架中的安全性 设计授权、验证和审核策略 注意: 加下划线为即将学到的内容。

3 应用程序开发的安全性概述 常见的安全漏洞类型 传统安全模型的不足 创建安全策略的原则 主要安全性术语 9.1 应用程序开发的安全性概述
9.1 应用程序开发的安全性概述 常见的安全漏洞类型 传统安全模型的不足 创建安全策略的原则 主要安全性术语 重点: 说明常见的应用程序缺陷,以及攻击者如何利用这些缺陷进行攻击; 回顾传统安全模型中存在的一些问题,并介绍编写安全代码的基本原则; 难点: 了解应用程序中常见的一些安全漏洞; 了解传统安全模型和其中存在的一些缺点; 掌握编写安全代码的原则; 安全方面的术语。

4 常见的安全漏洞类型 弱密码 举例 员工使用空密码或者自己的生日作为密码 影响 攻击者能通过不断尝试取得密码 9.1.1 常见的安全漏洞类型
常见的安全漏洞类型 弱密码 举例 员工使用空密码或者自己的生日作为密码 影响 攻击者能通过不断尝试取得密码 重点: 开始分类介绍一些常见的安全隐患;第一种:弱密码; 课堂讨论: 如使用暴力破解密码的方式(即通过一个字典尝试所有可能的密码组合直到最终猜对密码)破解1位、5位、10位密码大约分别需要多少时间?破解时间跟哪些因素有关? 提示:破解时间跟密码长度和复杂度有关;若密码为随机产生,则增加一位密码长度破解时间以指数级上升; 参考: 微软在Windows产品中越来越注意这方面的问题: 在Windows XP的本地策略和Windows 2000的域的安全策略中可以设置对管理员密码的一些限制和策略; 在Windows Server 2003中,为了更好的提高安全性,管理员密码默认必须符合复杂性规定; 关于”密码必须符合复杂性要求” : 如果启用该设置,则用户密码符合以下要求: 密码长度至少有 6 个字符; 密码至少包含以下 5 类字符中的 3 类字符: 英语大写字母(A – Z); 英语小写字母(a – z); 10 个基数数字(0 – 9); 非字母数字(例如:!、$、# 或 %); Unicode 字符 密码不得包含三个或三个以上来自用户账户名中的字符。

5 常见的安全漏洞类型 未配置正确的软件 举例 网络 应用程序 主机 影响 攻击者能利用这些服务取得访问系统的权限 如防火墙 如应用程序配置文件
常见的安全漏洞类型 未配置正确的软件 举例 网络 如防火墙 应用程序 如应用程序配置文件 主机 如某些服务有过高的权限(超过正常运行所需的权限)、一些以系统账户启动的服务 影响 攻击者能利用这些服务取得访问系统的权限 重点: 介绍未配置正确的软件对安全性的影响; 注意: 某些网管会认为只要计算机或者网络内部安装了软件或者硬件的防火墙就可以彻底保护网络不受外部攻击,这样的认识十分偏颇; 防火墙无论软件或者硬件其配置是否合理会对防护效果产生极大影响; 在局域网内部很容易病毒泛滥,其中一个很重要的原因在于用户薄弱的安全意识; 始终要牢记”最小权限”这个概念,即对所有应用程序的配置都以用户最小可能用到的权限为准; 不可贪图方便,将所有人都设成管理员或者在计算机上创建了所有人完全控制的共享文件夹。

6 常见的安全漏洞类型 社会工程陷阱 举例 攻击者装作技术支持人员骗取用户密码 影响 攻击者能利用骗来的密码或管理员账户进行破坏
常见的安全漏洞类型 社会工程陷阱 举例 攻击者装作技术支持人员骗取用户密码 影响 攻击者能利用骗来的密码或管理员账户进行破坏 重点: 介绍社交活动的安全漏洞; 注意: 此类安全漏洞通常是由于用户或管理员受恶意人员或攻击者欺骗或诱骗,导致权限较高的账户泄露。

7 常见的安全漏洞类型 未加密的数据传输 举例 验证包以明文方式传送 重要数据通过互联网明文传播 影响
常见的安全漏洞类型 未加密的数据传输 举例 验证包以明文方式传送 重要数据通过互联网明文传播 影响 攻击者能方便的获取数据对企业或者应用程序进行攻击 重点: 介绍数据未加密带来的安全隐患; 参考: 此类安全性问题可以再细分为两类: 明文的数据传输,如MSN聊天内容; 数据仅做了简单编码,如采用Base64编码的数据; 攻击者可通过在局域网内或者某台被攻陷的重要服务器上安装嗅探器(Sniffer)对网络通信进行侦听,截获数据包并获取通信内容。

8 常见的安全漏洞类型 缓存溢出 举例 受信任的进程运行未受信任的代码 影响 攻击者能让操作系统或应用程序崩溃 通过出错信息发现更多的安全漏洞
常见的安全漏洞类型 缓存溢出 举例 受信任的进程运行未受信任的代码 影响 攻击者能让操作系统或应用程序崩溃 通过出错信息发现更多的安全漏洞 获取能运行任何程序的系统内存 重点: 介绍缓存溢出; 注意: 此类安全性问题在微软安全公告中比较常见; 参考: 缓存溢出的过程:通常在用户输入超过系统已分配的最大内存空间时发生;在使用未经托管代码编写的程序中,若应用程序在执行时并未对用户输入进行限制,攻击者能利用这一点,覆盖内存堆栈中函数的返回地址,执行恶意代码;这也是缓存溢出造成的常见后果。

9 常见的安全漏洞类型 代码注入 举例 跨站点脚本 SQL注入 利用缓存溢出注入恶意代码 影响
常见的安全漏洞类型 代码注入 举例 跨站点脚本 SQL注入 利用缓存溢出注入恶意代码 影响 攻击者能在客户端、Web服务器、数据库服务器上注入恶意代码 重点: 说明代码注入以及常见的安全漏洞; 参考: 跨站点脚本攻击的概念? 攻击的目标是应用程序的其他用户,通常发生在应用程序会根据用户输入自动生成Web页面的情况下; 攻击者能利用这一点以其他用户的权限运行脚本等恶意代码; SQL注入的概念? 通常发生在应用程序根据用户输入动态生成SQL语句的情况下。

10 常见的安全漏洞类型 代码中的秘密信息 举例 从代码中直接获取秘密信息 在调试方式下运行不同的安全应用程序 在客户端页面文件中获取秘密信息
常见的安全漏洞类型 代码中的秘密信息 举例 从代码中直接获取秘密信息 在调试方式下运行不同的安全应用程序 在客户端页面文件中获取秘密信息 影响 密码、密钥泄漏 重点: 介绍代码中的秘密信息带来的安全隐患; 课堂讨论: 举例说明代码中的秘密信息是如何泄露的? 把秘密信息未加密地存放在注册表、可执行文件或者数据文件中; 在调试模式下运行应用程序; 攻击者可设置断点获取代码中的秘密信息; 应用程序内存如果写到了页面文件中,攻击者能通过分析Pagefile.sys获取秘密信息。

11 传统安全模型的不足 没有对代码本身提供特定的限制访问机制 病毒、蠕虫可通过以下途径感染受信任的用户 打开电子邮件的附件
传统安全模型的不足 没有对代码本身提供特定的限制访问机制 病毒、蠕虫可通过以下途径感染受信任的用户 打开电子邮件的附件 运行Web页面内嵌的脚本 打开从互联网上下载的文件 重点: 说明传统安全模型的不足之处; 课堂讨论: 用户感染病毒的常见途径有哪些? 提示:电子邮件、网站恶意脚本、下载文件、未配置正确的盗版软件等; 注意: 在传统安全模型中,限制用户访问某些资源仅通过判定执行代码用户的身份来完成;而没有一种对代码本身的访问限制机制;如果用户无意中运行了恶意代码,对资源访问的安全机制很容易被绕过;这一缺陷能被病毒、木马所利用来攻击系统。

12 创建安全策略的原则 仅信任测试过并证明为安全的系统 不要信任外部输入 假设外部系统不安全 应用最小权限原则 减小数据暴露区域
创建安全策略的原则 仅信任测试过并证明为安全的系统 不要信任外部输入 假设外部系统不安全 应用最小权限原则 减小数据暴露区域 重点: 介绍在设计一个安全的系统时应遵循哪些原则; 课堂讨论: 以某一网上银行为例,说明它采用了哪些方法保障系统的安全性? 提示:常见的方法有:SSL、数字证书、数字签名等; 参考: 常见的安全机制: 加密算法:通过对明文数据按照某些公认的算法(通常是某些数学难题)进行变换成密文,如常见的DES、TripleDES等; 常分为两类:对称加密和非对称加密,对称加密指加密解密过程通过同一把密钥进行,非对称加密有两把密钥,通过让所有人知道的公钥进行加密,而解密时通过只有个人知道的私钥进行; 数字证书:证书将公钥与该密钥持有者的姓名和一段时间内计划该密钥的使用进行绑定,保证公钥属于特定的实体; 数字签名:信息发送者用私钥对从所发送信息中提取出的特征数据(或称数字指纹)进行计算,保证发信人无法抵赖曾发过该信息并且签名后未经篡改; 关于加密和微软公钥基础结构(PKI)可参考: 最小权限:仅提供给用户所使用到最小限度的权限; STRIDE原则(模型):对常见攻击情况的总结,以每种方式的第一个英文字母缩写而成:伪造用户、篡改数据(完整性)、否认、信息泄露、拒绝访问、权限提升,在本章接下来内容中会有详细说明。 默认设置为安全模式 不要信任未知的东西 遵循STRIDE原则

13 主要安全性术语 验证 主动识别客户端的身份(客户端包括最终用户、服务、进程或计算机) 授权 规定验证用户能看到或者能做什么
主要安全性术语 验证 主动识别客户端的身份(客户端包括最终用户、服务、进程或计算机) 授权 规定验证用户能看到或者能做什么 重点: 介绍安全方面的一些重要术语; 比较验证和授权; 课堂讨论: 验证和授权有何区别与联系? 提示:验证确定的身份,授权确定的访问权限; 注意: 应用系统通过验证用户身份,判断其是否授权访问某些资源来做到对资源访问的权限控制。

14 主要安全性术语 模拟 服务器应用程序以客户端身份访问资源的方式 委派 一种扩展形式的模拟 服务器进程代表客户端访问远程计算机的资源
主要安全性术语 模拟 服务器应用程序以客户端身份访问资源的方式 委派 一种扩展形式的模拟 服务器进程代表客户端访问远程计算机的资源 重点: 介绍安全方面的一些重要术语; 比较模拟和委派; 课堂讨论: 模拟和委派有何区别和联系? 模拟和委派都是服务器端通过使用客户端身份访问特定资源的一种方式,委派是一种扩展形式的模拟; 区别在于模拟只能访问服务器端的本地资源,而委派则能让服务器以客户端的身份去访问远程资源。

15 主要安全性术语 安全通信 确保通信过程中信息私密性和完整性 安全上下文 能影响进程、线程安全方面动作的设置集合
主要安全性术语 安全通信 确保通信过程中信息私密性和完整性 安全上下文 能影响进程、线程安全方面动作的设置集合 由进程的登录会话和访问标志组成 身份 惟一表征用户、进程 重点: 介绍安全方面的一些术语; 注意: 身份必须是惟一的,即两个不同用户在应用程序中的身份必须不同; 参考: 常见的安全通信方式:SSL、IPSec等; 关于微软安全通信的配置与实施可参考:

16 第9章 设计安全规范 应用程序开发的安全性概述 为应用程序安全性制定计划 使用.NET框架中的安全性 设计授权、验证和审核策略 注意:
第9章 设计安全规范 应用程序开发的安全性概述 为应用程序安全性制定计划 使用.NET框架中的安全性 设计授权、验证和审核策略 注意: 加下划线为即将学到的内容。

17 为应用程序安全性制定计划 MSF 阶段和安全性措施 STRIDE威胁模型 创建威胁模型 使用威胁模型 安全策略
9.2 为应用程序安全性制定计划 MSF 阶段和安全性措施 STRIDE威胁模型 创建威胁模型 使用威胁模型 安全策略 重点: 介绍应用程序常见的一些安全方面的威胁,以及在设计过程中针对这些威胁所应采取的措施; 难点: 在整个微软解决方案框架(MSF)中需要完成的安全性方面的任务; 了解应用程序的安全威胁; 掌握威胁模型; 创建安全策略尽可能避免安全威胁。

18 MSF 阶段和安全性措施 构思 规划 开发 稳定 部署 9.2.1 MSF 阶段和安全性措施 收集安全性方面的需求 将这些需求写入文档中
创建威胁模型 规划安全性方面的功能减轻找出的威胁 规划 实施功能规格说明书中涉及的安全性方面的功能 开发 重点: 介绍在微软解决方案框架(MSF)的各个阶段在安全性方面应主动考虑采取的措施; 注意: 在设计解决方案的实施环境网络架构时,必须考虑防火墙、DMZ、中间层应用服务器的部署策略等; 课堂提问: 回顾微软解决方案框架中,开发应用程序通常可分为哪几个步骤? 课堂讨论: 在解决方案开发过程的每个步骤中应考虑哪些安全性方面的威胁,应如何减轻这方面的威胁? 在实施解决方案时你能想到哪些方面可能的安全性问题? 网络中是否提供了安全通信? 网络内部是否有防火墙? 在网络架构上是否采用了一定的限制措施来保障安全性? 参考: 关于DMZ: 为解决安装防火墙后外部网络不能访问内部网络服务器的问题,而在外部网络和内部网络之间设立的一个缓冲区; 在这个区域内可防止公司的Web服务器等; 外部网络仅能访问到DMZ,而DMZ无法访问企业内部网络; 这样对于攻击者来说又多了一道关卡。 稳定 进行安全性测试 部署 监控对应用程序安全性方面的威胁

19 S T R I D E STRIDE威胁模型 伪造身份 篡改数据(完整性) 否认 信息泄露 拒绝服务 权限提升
重点: 介绍STRIDE模型的含义; 参考: 伪造身份的几种常见方式: 攻击者通过骗取或猜测受信任用户的密码,从而对某些受限的内容取得访问权限; 攻击者以其他人的身份发送邮件; 伪造IP,攻击者通过在数据包中嵌入一个看似受信任的IP地址来访问某些资源; 否认: 否认是指系统管理员或安全代理无法证明用户(攻击者)进行了某些操作; 拒绝访问常见症状: 应用程序或者操作系统停止响应; CPU一直在进行无意义的计算; 系统内存被大量占用使应用程序或者操作系统的性能降低; 网络带宽耗尽; 常见的拒绝访问方式: Web服务器被大量错误的请求淹没; 病毒将系统文件删除导致系统无法启动; 恶意用户远程配置打印机,使其瘫痪。 拒绝服务 D 权限提升 E

20 1 2 3 4 5 6 创建威胁模型 组织集思广益的会议 列出所有可能的威胁 使用STRIDE模型中的类别 记录笔记 调研
创建威胁模型 组织集思广益的会议 1 列出所有可能的威胁 2 使用STRIDE模型中的类别 3 记录笔记 4 重点: 说明如何创建威胁模型; 课堂讨论: 在创建威胁模型时需要记录一些什么内容? 威胁类型; 攻击对企业造成的影响; 攻击者可能采用的技术; 攻击的可能性; 减轻攻击造成影响可采用的技术。 调研 5 将威胁按照严重性分级 6

21 LDAP:缓存在客户端或者在联机状态下从域中获得
示例 创建威胁模型 创建威胁模型 浏览器 LDAP:缓存在客户端或者在联机状态下从域中获得 验证 SSL 通过Sockets 的SQL 基于Web的报销系统 公司Web服务器 数据库服务器 员工数据 时间报表信息 用户验证信息 审核信息 演示: 如何创建威胁模型; 图示为一个基于Web的报销系统,指出其可能收到的攻击; 参考: 攻击一:员工和时间报表数据可能被未授权用户访问; 攻击二:数据库服务器可能遭受TCP/IP包攻击; 攻击三:审核信息可能被未经授权的用户修改; 攻击四:LDAP验证信息可能被侦听; 攻击五:浏览器和Web服务器之间传递的信息可能被侦听; 攻击六:Web服务器可能遭受拒绝访问攻击; 攻击七:Web服务器传送的页面可能带有恶意代码。

22 使用威胁模型 对每种威胁提出应对方案 通知用户 削减功能(Remove features) 使用减轻威胁的技术 9.2.4 使用威胁模型
使用威胁模型 对每种威胁提出应对方案 通知用户 削减功能(Remove features) 使用减轻威胁的技术 重点: 介绍如何使用威胁模型来减轻攻击的可能性和带来的损失; 课堂讨论: 在使用应用软件和操作系统时可采用哪些途径减少受攻击的可能性? 提示:安装杀毒软件、网络防火墙等。

23 使用威胁模型 减轻安全性方面威胁可采用的技术 验证和授权 安全通信 服务质量(QoS) 限制(Throttling) 审核 筛选 最小权限
使用威胁模型 减轻安全性方面威胁可采用的技术 验证和授权 安全通信 服务质量(QoS) 限制(Throttling) 审核 筛选 最小权限 重点: 介绍减轻安全性方面威胁可采用的技术; 参考: 服务质量(QoS):允许管理员为某些网络通信设置更高的优先级;如一台Media服务器可把HTTP请求设置高优先级; 关于服务质量可参考微软文档: 节流:限制发送给计算机的数据量; 审核:将用户活动和一些重要的网络通信信息收集起来用作将来分析。

24 安全策略 安全策略 定义了保护企业计算机和网络安全性的需求 决定了应用程序能做什么,哪些用户能使用该应用程序 对比安全策略决定威胁的应对措施
安全策略 安全策略 定义了保护企业计算机和网络安全性的需求 决定了应用程序能做什么,哪些用户能使用该应用程序 对比安全策略决定威胁的应对措施 容忍威胁 委派其他公司解决威胁 采取保护措施 重点: 介绍安全策略的概念以及应用; 参考: 安全策略目标举例: 保护互联网上用户的所有交互过程,如用户信息、现金等; 保障用户信息不泄露; 数据不会直接在互联网上传输,而是通过安全的中间层进行; 所有数据库通信必须保密; 设计安全策略时可考虑的问题: 网络通信是否安全? 内部是否安装了防火墙? 是否有远程应用服务器? 网络架构中是否采取了一些限制措施保障安全性? 是否考虑了Web Farm的问题? 目标环境有怎样的信任级别?

25 第9章 设计安全规范 应用程序开发的安全性概述 为应用程序安全性制定计划 使用.NET框架中的安全性 设计授权、验证和审核策略 注意:
第9章 设计安全规范 应用程序开发的安全性概述 为应用程序安全性制定计划 使用.NET框架中的安全性 设计授权、验证和审核策略 注意: 加下划线为即将学到的内容。

26 使用.NET框架的安全特性 类型安全验证 代码签名 加密和数据签名 代码访问安全 基于角色的安全性 独立存储 .NET的安全特性
重点: 介绍.NET框架中提供的一些重要的安全特性; 难点: 了解类型安全验证; 了解代码签名; 加密和数据签名; 代码访问的安全性; 基于角色的安全性; 独立存储; 了解.NET Web中的安全特性; 参考: 关于ASP.NET安全性方面的特性可参考:

27 类型安全验证 类型安全代码 仅能访问有权限的特定内存 仅能访问对象可以访问的成员 符合以下条件的运行时是类型安全的
类型安全验证 类型安全代码 仅能访问有权限的特定内存 仅能访问对象可以访问的成员 符合以下条件的运行时是类型安全的 对类型的引用与引用的类型相一致 对象仅被调用了适当定义后的操作 通过定义好的接口调用方法,避免安全检测被跳过 重点: 介绍类型安全代码的定义,以及如何验证运行时是类型安全的; 注意: 非类型安全的代码能够随意的访问Native code而类型安全的代码需要经授权后才能访问Native code; 参考: Native code的定义:Native code是指可直接运行的机器代码; 关于.NET安全可参考微软网站:

28 代码签名 代码签名保证了真实性和完整性 .NET框架中的代码签名 依靠强名称签名 支持Authenticode数字证书和签名
代码签名 代码签名保证了真实性和完整性 .NET框架中的代码签名 依靠强名称签名 支持Authenticode数字证书和签名 重点: 介绍代码签名的定义,使用代码签名的意义; 参考: 强名称:使用私钥对代码进行数字签名的一种方式; 关于强名称的应用场景可参考: Authenticode技术:Authenticode技术用来确认签名的软件作者以及是否被篡改; 关于Authenticode可参阅微软网站:

29 加密和数据签名 加密 将明文转成密文 使用哈希和数据签名 哈希 将任何长度的数据变换成惟一且长度固定的字节序列 数据签名
加密和数据签名 加密 将明文转成密文 使用哈希和数据签名 哈希 将任何长度的数据变换成惟一且长度固定的字节序列 数据签名 可包含通过哈希加密后的任何形式内容的签名数据 哈希保证数据签名者的身份并且确保数据未经篡改 重点: 介绍加密和数据签名的方法; 参考: 用于数据加密:RSA、DES等; 用户数字签名:RSA、MD5、SHA1等; .NET框架中的加密算法:

30 代码访问安全 好处 限制了代码能做的事情 示例:一个文件访问的应用程序可限制可访问的文件 限制了哪些代码能访问你的代码
代码访问安全 好处 限制了代码能做的事情 示例:一个文件访问的应用程序可限制可访问的文件 限制了哪些代码能访问你的代码 示例:仅允许企业中开发的其他程序访问你的程序集 识别代码 示例:可通过强名称、URL或者哈希值来识别代码 重点: 介绍代码访问安全带来的好处。

31 代码访问安全 组成部分 代码 证据(Evidence) 权限 策略 代码组 9.3.4 代码访问安全 重点: 介绍代码访问安全的组成部分;
代码访问安全 组成部分 代码 证据(Evidence) 权限 策略 代码组 重点: 介绍代码访问安全的组成部分; 参考: 代码:所有托管代码都符合代码访问安全;当程序加载时,系统会给出一组代码安全权限集合,规定了代码能访问的资源和所能做的操作; 证据:证据用来表征程序集,通过它能给程序集赋予正确的权限; 权限:权限代表了程序集能访问的资源和所能做的操作; 策略:策略由管理员配置,规定了程序集的权限; 代码组:每个策略文件包含了按层次结构分类的一组代码,代码组用来给程序集赋予相应的权限; 关于代码访问安全的实际情况可参考:

32 基于角色的安全性 防止未授权的用户进行特定操作 用户 资源 9.3.5 基于角色的安全性 用户名 = Fred .NET 框架 验证
基于角色的安全性 防止未授权的用户进行特定操作 用户名 = Fred 用户 .NET 框架 验证 Windows用户和组成员 普通身份和策略 重点: 介绍基于角色的安全性; 参考: 关于角色:角色表征了一组特定用户的特定权限; 回顾验证和授权: 验证:确认用户身份的过程; 授权:确认用户是否有做某些操作权限的过程; 关于基于角色的安全性可参考: 验证 资源

33 独立存储 为应用程序提供安全的数据存储 使用虚拟文件系统 允许设置大小 对存储的访问许可基于下列身份 用户 程序集 应用程序
独立存储 为应用程序提供安全的数据存储 使用虚拟文件系统 允许设置大小 对存储的访问许可基于下列身份 用户 程序集 应用程序 重点: 介绍独立存储的意义; 注意: 独立存储权限对建立在基础文件系统之上的特殊文件存储机制提供支持,又能确保不同应用程序的存储彼此隔离且不暴露具体的文件系统特征(如路径名、可用的驱动器等); 如果使用独立存储,则仍没有授予文件读写权限的不完全受信任的程序集在本地存储应用程序特定的数据;但是,由于对这些存储区域的严格隔离和访问限制,这些程序集不会有危害本地文件系统或机器本身的风险; 这一点在运行不完全受信任的代码(如Internet 应用程序)而同时又允许本地存储强大功能时特别有用。

34 .NET的安全特性 技术 验证 授权 安全通信 9.3.7 .NET的安全特性 ASP.NET
无(自定义)、 Windows、表单、Passport 文件权限、URL权限、主体权限、.NET角色 SSL Web服务 Windows、无(自定义)、消息级验证 SSL和 消息级加密 远程处理 Windows SSL和消息级加密 企业服务 企业服务(COM+) 角色、NTFS权限 RPC加密 SQL Server Windows(Kerberos /NTLM)、SQL验证 服务器登录名、数据库登录名、数据库默认角色、自定义角色、应用程序角色 重点: 概览.NET中的主要安全特性; 参考: ASP.NET中的安全性: Web服务的安全性: .NET Remoting安全性: 企业服务的安全性: SQL Server的安全性:

35 第9章 设计安全规范 应用程序开发的安全性概述 为应用程序安全性制定计划 使用.NET框架中的安全性 设计授权、验证和审核策略 注意:
第9章 设计安全规范 应用程序开发的安全性概述 为应用程序安全性制定计划 使用.NET框架中的安全性 设计授权、验证和审核策略 注意: 加下划线为即将学到的内容。

36 设计授权、验证和审核策略 设计授权和身份验证策略 为用户界面组件设计授权策略 为业务组件设计授权策略 为数据访问组件设计授权
9.4 设计授权、验证和审核策略 设计授权和身份验证策略 为用户界面组件设计授权策略 为业务组件设计授权策略 为数据访问组件设计授权 为用户界面组件设计身份验证策略 为数据访问组件设计身份验证策略 设计审核策略 重点: 介绍采用验证、授权和审核的方式跟踪用户和业务活动的安全性,以及怎样设计相关策略减少安全性的威胁; 难点: 设计授权和身份验证策略的过程; 分别设计用户界面组件、业务组件、数据访问组件的授权和验证策略; 审核策略的设计。

37 1 1 2 2 3 3 4 4 5 5 6 6 设计授权和身份验证策略 确定资源 确定资源 选择授权策略 选择授权策略 选择访问资源的身份
设计授权和身份验证策略 确定资源 1 选择访问资源的标识 3 确定标识是否需要在系统内流转 4 选择身份验证方法 5 确定标识如何在系统内流动 6 选择授权策略 2 确定资源 1 实例: Web服务器资源如 Web页面、Web服务和静态资源(HTML页面和图片) 数据库资源如每个用户的数据或应用程序的数据 网络资源如远程文件系统资源和活动目录中存储的数据 选择授权策略 2 选择访问资源的身份 3 基于角色 基于资源 确定身份是否需要在系统内流转 4 调用者的身份 进程身份 服务账户 自定义身份 选择身份验证方式 5 确定哪些身份需要在整个应用程序中传递 例如,一个后端资源管理器需要在每次调用时进行授权,调用者的身份必须传递给资源管理器 重点: 介绍设计授权和身份验证策略需要考虑的问题以及步骤; 课堂讨论: 需要在应用程序的哪几个组件中考虑授权和验证策略? 提示:用户界面组件、业务组件、数据访问组件; 参考: 确定资源: Web服务器资源,如 Web页面、Web服务和静态资源(HTML页面和图片); 数据库资源,如每个用户的数据或应用程序的数据; 网络资源,如远程文件系统资源和活动目录中存储的数据; 选择授权策略: 基于角色; 基于资源; 选择访问资源的身份: 调用者的身份; 进程身份; 服务账户; 自定义身份; 确定身份是否需要在系统内流转:确定哪些身份需要在整个应用程序中传递;例如,一个后端资源管理器需要在每次调用时进行授权,调用者的身份必须传递给资源管理器; 选择验证方式:表单、Passport、Windows集成(Kerberos或NTLM)、Basic、 Digest; 确定身份如何在系统内流转: 应用程序级别; 操作系统级别。 确定身份如何在系统内流转 6 表单、Passport、Windows集成(Kerberos或NTLM)、Basic、 Digest 应用程序级别 操作系统级别

38 为用户界面组件设计授权策略 在用户界面组件上进行授权限制用户输入或查看 用户界面组件授权指导方针 仅显示给需要看到的用户
为用户界面组件设计授权策略 在用户界面组件上进行授权限制用户输入或查看 用户界面组件授权指导方针 仅显示给需要看到的用户 设置用户界面程序集代码的访问权限 用户进程组件授权指导方针 按照用户不同在用户交互过程中添加删除步骤或者用户界面组件 重点: 介绍为用户界面组件设计授权策略需要遵循的原则; 课堂提问: 表示层可分为哪两部分? 答案:用户界面组件和用户进程组件; 课堂讨论: 在设计用户界面组件时需要考虑哪些权限方面的问题? 在设计用户进程组件时需要考虑哪些权限方法的问题? 控制用户是否能开始一个用户界面交互进程

39 为业务组件设计授权策略 指导方针 业务进程授权应独立于用户上下文 尽可能使用基于角色的权限 9.4.3 为业务组件设计授权策略 重点:
为业务组件设计授权策略 指导方针 业务进程授权应独立于用户上下文 尽可能使用基于角色的权限 重点: 介绍为业务组件设计授权策略时需要考虑的原则; 课堂提问: 角色的定义? 答案:角色表示了一组用户的权限; 为何要尽可能使用基于角色的权限? 答案:类似活动目录的安全组,便于管理。

40 为数据访问组件设计授权 对数据访问组件进行授权
为数据访问组件设计授权 对数据访问组件进行授权 Windows验证情况下,使用企业服务角色和.NET PrincipalPermission属性 Windows安全上下文情况下,使用.NET角色和相关属性 在数据存储中采用相同用户上下文的情况下,使用数据库授权功能 重点: 介绍为数据访问组件设计授权遵循的原则; 课堂提问: SQL Server 2000有哪些默认的数据库角色? 答案:系统管理员、数据读取者、数据写入者等。 限制用户仅能访问需要的程序集

41 为用户界面组件设计身份验证策略 基于Web界面的验证方式 根据情况选择验证机制 基于Windows界面的验证方式 自定义验证
为用户界面组件设计身份验证策略 基于Web界面的验证方式 根据情况选择验证机制 基于Windows界面的验证方式 自定义验证 Windows登录 用户进程组件的验证方式 不进行验证 通过在程序开始设置的安全上下文 重点: 介绍为用户界面组件设计身份验证策略可参考的原则; 课堂提问: ASP.NET有哪些验证方式? 答案:Windows集成、表单和Passport验证; IIS有哪些验证方式? 答案:匿名、Basic、Digest和Windows集成。

42 匿名+Cookie 匿名+Passport
示例 基于Web界面的验证方式 为用户界面组件设计身份验证策略 用户一定 需要登录? 开始 匿名+Cookie 匿名+Passport 是否需要 个性化 不需要知道 用户身份 匿名 用户在操作系统中 是否有账户 用户通过登录访问服务和内容 用户是否有 Passport账户 是否需要 确保登录安全 是否交互用户 登录 证书 表单验证 通过SSL 表单验证 Passport验证 系统是否 运行于互联网 是否需要委派 安全上下文 服务器和客户端是否 只有Windows 2000 是否需要 安全登录 是,运行在 互联网上 Basic/SSL Digest/SSL 表单验证/SSL Basic NTLM 自定义身份映射 Kerberos Digest 否,只有 局域网 演示: 一种基于Web界面的验证方式; 课堂讨论: 在该演示中分别用到了哪些验证机制? 提示:表单验证、Passport验证、Basic验证、Digest验证、Windows集成验证等。

43 为数据访问组件设计身份验证策略 使用服务账户 在连接数据源时,对最初调用者的身份模拟无法进行 对登录其他系统的账户只有很小的更改权利
为数据访问组件设计身份验证策略 使用服务账户 在连接数据源时,对最初调用者的身份模拟无法进行 对登录其他系统的账户只有很小的更改权利 访问的数据存储与其他应用程序使用不同的验证机制 使用调用者的身份模拟 数据存储根据登录用户进行授权 数据存储需要审核每个最终用户的活动 安全计划示例 重点: 介绍为数据访问组件设计身份验证策略; 参考: 在以下情况中不要使用服务账户: 无法安全地存储服务账户; 必须采用用户账户访问某些数据; 数据存储会审核用户的活动。

44 设计审核策略 确保恶意用户无法篡改审核日志 用户界面和用户进程组件的审核 审核全局事件,如登录、注销、修改密码和安全异常 业务进程组件的审核
设计审核策略 确保恶意用户无法篡改审核日志 用户界面和用户进程组件的审核 审核全局事件,如登录、注销、修改密码和安全异常 业务进程组件的审核 对业务进程进行审核 收集关于重要业务活动的执行者和时间的信息 数据访问组件的审核 实现审核的恰当位置 在数据库中实现审核 重点: 介绍如何设计审核策略; 参考: 如何审核SQL Server 2000的活动:

45 课堂活动 威胁模型和减轻威胁 练习1 识别潜在的威胁 练习2 使用减轻威胁的技术 实验
课堂活动 威胁模型和减轻威胁 练习1 识别潜在的威胁 练习2 使用减轻威胁的技术 实验 根据Adventure Works Cycles销售人员下单方法,识别潜在的威胁; 按照上面一个实验的结果,说明如何使用减轻威胁的技术; 注意: 两种下单方式都有许多潜在的威胁; 使用STRIDE模型和该应用的设计图找出威胁; 针对不同的威胁,指出相应所能采取的减轻威胁的技术。

46 回顾 学习完本章后,将能够: 了解应用程序中常见的安全隐患和挑战 掌握如何为应用程序安全性制定计划 了解.NET框架中的安全性
掌握设计授权、验证和审核策略的方法 重点: 回顾应用程序通常会碰到的安全性问题,怎样在设计阶段为应用程序安全性制定计划减少这方面的威胁,以及.NET框架中的主要安全特性; 课堂提问: 传统安全模型的一些缺点? 基于用户身份而非代码的安全性; 容易受到病毒和蠕虫的攻击; 在微软解决方案框架中的那个阶段就要创建威胁模型? 答案:在规划阶段就要创建威胁模型; STRIDE模型的定义? 答案:STRIDE模型对常见攻击情况的总结,以每种方式的第一个英文字母缩写而成:伪造用户、篡改数据(完整性)、否认、信息泄露、拒绝访问、权限提升。


Download ppt "基于.NET的需求分析和解决方案设计 第1章 商务解决方案设计 第2章 收集和分析信息 第3章 解决方案的构思 第4章 概念设计的创建"

Similar presentations


Ads by Google