(完整版)同学录系统毕业设计

发布时间:2017-08-28 23:24:24   来源:文档文库   
字号:

同学录系统

生:

号:

业:计算机科学与技术

级:

指导教师:



Internet飞速发展的今天,互联网成为人们快速获取、发布和传递信息的重要渠道,它在人们政治、经济、生活等各个方面发挥着重要的作用。因此网站建设在Internet应用上的地位显而易见,它已成为人们日常生活中相互沟通和联系的重要平台,从而倍受人们的重视。

这次我们所设计的课题正是互联网与社会生活之间的紧密关系的体现。现今的社会,人们已经离不开了网络,网络已经成为人与人之间交流的一种形式。心缘同学录网站的建设不仅能够使同学们的联络方式有所改变,也大大地方便了同学们的相互交流,更重要的是为我们同学们提供了一个相互沟通和联系的平台,使他们保持彼此之间的联系,加深彼此间的感情。

该同学录网站使用ASP.NET进行设计与实现,具有留言板管理,通讯录管理,班级管理,照片管理,信息查询,其他功能,例如友情提醒、热点信息、通过E-mail通知校友注册等功能。

【关键字】安全 ; 应用 ; 管理; SQL



Abstract

The application scope of the computer network expands unceasingly along with the computer technology rapid progress and the computer network rapid development, so the people take more and more attention to the computer network. This article obtains from the network security foundation concept, it analyzed each kind of security danger to the current computer network, and analyzed many kinds of attacks method of the appearance is because the evil intention of the who attempts to obtain some kind of advantage or to people intentionally. It may see the network security that not merely enable network not to . We must even more take the security policy of computer network system and the research of the development direction along with the computer network system rapid development.KEYWORDS application; SQL; management



第一章 绪论

11同学录背景及意义

近年来随着计算机技术的快速发展,特别是计算机网络的发展,越来越深刻的改变了人们生活的方方面面。Internet是目前世界上最大的计算机互联网络,它遍布全球,将世界各地各种规模的网络连接成一个整体。作为Internet上一种先进的,易于被人们所接受的信息检索手段,World Wide Web(简称)发展十分迅速,成为目前世界上最大的信息资源宝库。据估计,目前Internet上已有上百万个Web站点,其内容范围跨越了教育科研、文化事业、金融、商业、新闻出版、娱乐、体育等各个领域,其用户群十分庞大,因此,建设一个好的Web站点对于一个机构的发展十分重要。近年来,随着网络用户要求的不断提高及计算机科学的迅速发展,特别是数据库技术在Internet中的广泛应用,Web站点向用户提供的服务将越来越丰富,越来越人性化。

1.2课题的目的及意义

目前各种在线服务系统,深刻的影响了人们的联系方式,使得人们可以在远隔千里之遥随时通讯。过去的种种陈旧的联系方式,已经不能满足现代生活的需要。同学录作为一种方便同学们之间联系的实用系统便应运而生,为班级同学之间进行交流和联系提供的一个平台,通过提供完善的服务和规范同学录的管理,可以达到增进同学们之间、同学与母校之间的感情,方便同学们联系的目的。

此次所设计的课题正是互联网与社会生活之间的紧密关系的体现。心缘同学录网站的建设不仅能够使同学们的联络方式有所改变,也大大地方便了同学们的相互交流,更重要的是为同学们提供了一个相互沟通和联系的平台,使他们保持彼此之间的联系,加深彼此间的感情。

因此,开发和设计一个好的同学录系统成为很有必要的事情,在下面的各章中将进行分析与设计。

1.3相关技术介绍

1)ASP.NET简介

ASP.NET又叫ASP+,但并不仅仅是ASP的简单升级,而是MicroSoft推出的新一代Active Server Pages脚本语言。ASP.NET是微软发展的新型体系结构.NET的一部分,它的全新技术架构会让每一个人的网络生活都变得更简单。首先需要特别指出的是,ASP.NET不仅仅只是有了一个新界面并且修复了一些缺陷的ASP3.0的升级版本(即不同于ASP2.0级到ASP3.0的转变)。更为重要的是,ASP.NET吸收了ASP以前版本的最大优点并参照JavaVB语言的开发优势加入了许多新的特色,同时也修正了以前的ASP版本的运行错误。ASP.net提供许多比现在的Web开发模式强大的优势。

1.执行效率的大幅提高

ASP.net是把基于通用语言的程序在服务器上运行。不像以前的ASP即时解释程序,而是将程序在服务器端首次运行时进行编译,这样的执行效果,当然比一条一条的解释强很多。

2.世界级的工具支持

ASP.net构架是可以用MicrosoftR)公司最新的产品 Visual Studio.net开发环境进行开发,WYSIWYGWhat You See Is What You Get所见即为所得)的编辑。这些仅是ASP.net强大化软件支持一小部分。

3.强大性和适应性

因为ASP.net是基于通用语言的编译运行的程序,所以它的强大性和适应性,可以使它运行在Web应用软件开发者的几乎全部的平台上(笔者到现在为止只知道它只能用在Windows 2000 Server上)。通用语言的基本库,消息机制,数据接口的处理都能无缝的整合到ASP.netWeb应用中。ASP.net同时也是language-independent语言独立化的,所以,你可以选择一种最适合你的语言来编写你的程序,或者把你的程序用很多种语言来写,现在已经支持的有C#C++Java的结合体),VBJscript。将来,这样的多种程序语言协同工作的能力保护您现在的基于COM+开发的程序,能够完整的移植向ASP.net

4.简单性和易学性

ASP.net是运行一些很平常的任务如表单的提交客户端的身份验证、分布系统和网站配置变得非常简单。例如ASP.net页面构架允许你建立你自己的用户分界面,使其不同于常见的VB-Like界面。另外,通用语言简化开发使把代码结合成软件简单的就像装配电脑。

5.高效可管理性

ASP.net使用一种字符基础的,分级的配置系统,使你服务器环境和应用程序的设置更加简单。因为配置信息都保存在简单文本中,新的设置有可能都不需要启动本地的管理员工具就可以实现。这种被称为"Zero Local Administration"的哲学观念使Asp.net的基于应用的开发更加具体,和快捷。一个ASP.net的应用程序在一台服务器系统的安装只需要简单的拷贝一些必须得文件,不需要系统的重新启动,一切就是这么简单。

6.多处理器环境的可靠性

ASP.NET已经被刻意设计成为一种可以用于多处理器的开发工具,它在多处理器的环境下用特殊的无缝连接技术,将很大的提高运行速度。即使你现在的ASP.NET应用软件是为一个处理器开发的,将来多处理器运行时不需要任何改变都能提高他们的效能,但现在的ASP确做不到这一点。

7.自定义性,和可扩展性

ASP.NET设计时考虑了让网站开发人员可以在自己的代码中自己定义"plug-in"的模块。这与原来的包含关系不同,ASP.NET可以加入自己定义的如何组件。网站程序的开发从来没有这么简单过。

8.安全性

基于Windows认证技术和每应用程序配置,你可以确性你的原程序时绝对安全的。ASP.NET的语法在很大程度上与 ASP 兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。可以通过在现有 ASP 应用程序中逐渐添加 ASP.NET 功能,随时增强 ASP 应用程序的功能。

2)SQL Server 2005简介

SQL Server 是一个关系数据库管理系统它最初是由Microsoft Sybase Ashton-Tate三家公司共同开发的于1988 年推出了第一个OS2 版本在Windows NT 推出后MicrosoftSybase SQL Server 的开发上就分道扬镳了Microsoft SQL Server 移植到Windows NT 系统上专注于开发推广SQL Server Windows NT 版本Sybase 则较专注于SQL ServerUNIX 操作系统上的应用在本书中介绍的是Microsoft SQL Server 以后简称为SQL ServerMS SQL ServerMicrosoft SQL Server 2005特性如下:

1.内置安装选项:任何建立应用程序的人都可以创建一个集成的安装:在一个操作中完成应用程序和数据库的安装。

2.自动配置:自动配置简化了普通数据库管理任务。

3.动态自管理:数据库可以在需要时自动增加分配的资源,不会过多占用:当它们不再需要这些资源,又能够自动释放,减少资源占用量。这消除了数据库管理员手工调整内存、磁盘分配、锁定和用户账号的必要。

4.扩展的服务器管理员功能:管理员能够从一个中心服务器管理多个服务器。这一功能使普通管理工作降至最少,帮助实现分公司自动化。

5.加强的性能特性:动态锁定、改善的查询处理和其它特性加强了重负荷、企业级应用程序。

6SQL代理技术:这一技术使批量预定操作成为可能,包括具有依赖性的多步工作和中心化的错误报告。

7Profiler:开发人员和数据库管理员可以监控应用程序和查明性能问题。

8XML支持:集成了对XML的支持



第二章 系统分析

2.1可行性分析

2.1.1经济可行性

本系统使用了IIS服务器,简单易用,因此,构架一个基于网络的,在经济上是可行的

2.1.2技术可行性

为了使平台具有更好的实用性和安全性,本平台基于当今广泛使用的Windows XP操作系统,数据库的设计上则使用了安全性比较高的SQLSERVER,服务器选用了 微软公司的IIS。而在Web与数据库的接口采用了时下流行的NHIBERNATE框架技术。页面设计选用Dream weaver工具进行编写,每一种选用的技术都被现在的编程者广泛使用。

平台的构建对硬件的要求如下:

服务器端:CPU 586或以上

浏览器端:CPU 586或以上

内存 128MB

硬盘 1G

综合上述软、硬件方面的需求,本系统的构建过程在技术上是可行的。

2.1.3操作可行性

同学录具有友好的界面和简单的操作过程,使平台的使用过程对于教师和管理员来说都一目了然,对于教师在教学命题的开展具有很好的推动作用。由于平台简单易懂,易于使用 ,同时在构建构成中使用了MVC三层结构,对数据库的操作进行封装,易于维护,所以平台在操作上也是具有可行性的。

2.2需求分析

2.2.1系统功能需求

本系统主要包括用户注册管理留言板管理照片管理信息查询具体功能如下:

1)用户注册管理,包括新用户注册、用户身份注销、找回密码、个人资料修改等;

2)留言板管理,包括班级留言、个人留言及查看留言等;

3)通讯录管理;

4)班级管理,包括注册新班级、添加删除成员、任命班长、班级群发邮件、班级通告、辞职等;

5)照片管理,包括上传照片、查看相册,班长还可以删除照片;

6)信息查询,包括查看学校和班级、查找同学、查看个人信息、查看邮件;

7)其他功能,例如友情提醒、热点信息、通过E-mail通知校友注册等。

2.2.2系统性能需求

在查询时,应保证所有满足条件的记录都能查到。数据库记录通常在几百条以上,如有遗漏将会对客户的统计造成影响。一般操作的响应时间应该在1-2秒内。采用菜单界面,对用户比较友好。同学录所需要的资源较少,相对来说所需要的磁盘容量、工作站数量、网络传输能力、显示器质量均要求比较低。同学录以处理文字和数字类数据为主,较少涉及声音、图像、多媒体数据的动态传递等复杂需求,因此实现起来容易得多。当然,同学录要求数据的精确度很高。还有查询时应保证查全率,所有相应域包含查询关键字的记录都应能查到,查到的记录应与给定的单项或组合查询条件完全匹配。并能满足操作员的使用要求。能够简洁大方,并能在一般条件下运行。

还有同学录应该比较容易维护,能让操作员作简单的增加、删除、保存数据等功能。



第三章 系统设计

3.1体系结构规划

本次设计的系统采用″客户服务器″体系,为了便于理解,我们先从二层客户服务器″体系结构来阐述:

客户服务器是在网络基础上,以数据库管理为后援,以计算机为网上工作站的一种系统结构。该结构的关键在把网络环境上的数据库存取和应用程序一分为二,分别由网上的数据库服务器和网上客户来执行。虽然本系统客户服务器是建立在LAN的基础上,但它比以往的文件服务系统有了很大的改进。首先,它消除了不必要的网络传输负担;其次,它可以使作为数据库服务器的计算机被高度优化,以适应数据处理的需要。客户服务器已经能够应用于复杂的网络上,并使之能够更有效地进行选择、检索、索引排序等数据处理。作为一种高级的分布式计算机环境、客户服务器有足够的能力把处理后的结果(不是整个文件)通过网络传输出去,并根据用户需求灵活地配置各种大、中、小型计算机系统。

3.2功能模块分析

1. 系统模块结构图:

1)用户注册管理,包括新用户注册、用户身份注销、找回密码、个人资料修改等;

2)留言板管理,包括班级留言、个人留言及查看留言等;

3)通讯录管理;

4)班级管理,包括注册新班级、添加删除成员、任命班长、班级群发邮件、班级通告、辞职等;

5)照片管理,包括上传照片、查看相册,班长还可以删除照片;

6)信息查询,包括查看学校和班级、查找同学、查看个人信息、查看邮件;

7)其他功能,例如友情提醒、热点信息、通过E-mail通知校友注册等。

3.3 系统逻辑结构图

3.1.3安全设计

在用户注册过程中使用了时下非常流行的MD5摘要加密技术,MD5摘要加密原理:MD5的全称是message-digest algorithm 5(信息-摘要算法),它的作用是让大容量信息在用数字签名软件签署私人密匙前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数)。MD5采用的是单向加密的加密算法,对于MD5而言,有两个非常重要的特性:第一是任意两段明文数据,加密之后的密文都是不相同的;第二是任意一段明文数据,经过加密之后,其结果必须是永远不变的。前者的意思是不可能有任意两段明文加密之后可以的得到相同的密文,后者则是说如果我们加密特定的数据,得到的密文一定是相同的。本系统在用户注册时则采用了这种方法,由于密文不能解出原文,不能够破解出用户注册的密码,所以增强了实验平台上的使用安全性。

(2) 在数据库的设计上,我们采取了混合验证方式,在SQLServer系统中创建用户登录账号,同时设置了用户的密码,禁止普通用户访问,只有管理员有权限登陆到SQLServer服务器对数据库进行更改操作。

3.2详细设计

3.2.1系统界面

3.2 系统页面

3.2.2功能模块及相应的页面

(1)用户登录模块

对于用户登录注册模块的设计,为了页面的简洁与美观,不直接设计到单独的页面,而是设计到主页面中的一个用户的登录窗口,在这里,没有注册的用户可以点击注册按钮进行注册。已经注册过的用户则可以直接输入用户名和密码进行登录,在用户注册时,用户的密码是通过MD5摘要加密存入数据库中的用户表中的,所以登录时,密码正确,则会通过用户的身份进入不同的页面进行操作。

3.3 登录模块流程图

输入:用户名和密码;输出:管理首页,应用界面中包括用户所具有的某些功能;用户登陆界面如下:

3-221a 登陆窗口界面

(2)班级管理

3-222 系统用户

(3)班级动态

3-22 班级动态

(4)同学情谊

3-22资源访问

(5)班级相册

3-25 班级相册

(6)同学录信息

3-22同学录

(7)后台管理

3-28班级信息管理

3.3数据库设计

3.3.1数据库设计原则

要设计一个高质量的数据库管理软件,首先则要解决建立良好的数据库结构这一问题。关系数据库设计理论主要包括三方面内容,数据依赖、范式和模式设计方法。其中数据依赖起着核心的作用。为了便于程序设计,提高软件的可靠性和运行效率,我们必须在信息分析的基础上合理的建立数据库。

3.9 系统与数据库连接的具体框架

3.3.2数据库概要设计

根据系统的各种需求分析,数据库中设计了八章数据表,每个数据表都代表着一个操作的实体,它们之间都有着密切的关系。

3.3.3数据库详细设计

SQL(Structured Query Language,结构查询语言)是一个功能强大的数据库语言。SQL通常使用于数据库的通讯。ANSI(美国国家标准学会)声称,SQL是关系数据库管理系统的标准语言。SQL语句通常用于完成一些数据库的操作任务,比如在数据库中更新数据,或者从数据库中检索数据。使用SQL的常见关系数据库管理系统有:Oracle Sybase Microsoft SQL Server Access Ingres等等。虽然绝大多数的数据库系统使用SQL,但是它们同样有它们自立另外的专有扩展功能用于它们的系统。但是,标准的SQL命令,比如"Select" "Insert" "Update" "Delete" "Create" "Drop"常常被用于完成绝大多数数据库的操作。MS SQL Server 就是用的Transact- SQL

SQL语言有着非常突出的优点,主要是:

非过程化语言

统一的语言

是所有关系数据库的公共语言

SQL语句:SQL功能强大,是一种完备的数据处理语言,不仅用于数据库查询,而且用于数据库中的数据修改和更新,概括起来,它可以分成以下几组:

DMLData Manipulation Language,数据操作语言):用于检索或者修改数据;

DDLData Definition Language,数据定义语言): 用于定义数据的结构,比如 创建、修改或者删除数据库对象;

DCLData Control Language,数据控制语言):用于定义数据库用户的权限。

DML组可以细分为以下的几个语句:

SELECT:用于检索数据;

INSERT:用于增加数据到数据库;

UPDATE:用于从数据库中修改现存的数据;

DELETE:用于从数据库中删除数据。

DDL语句可以用于创建用户和重建数据库对象。下面是DDL命令:

CREATE TABLEALTER TABLEDROP TABLECREATE INDEXDROP INDEX

3.5 数据库逻辑设计

数据字典是各类数据描述的集合,是进行详细的数据收集和数据分析所获得的主要结果。因此需要数据字典来为数据流图中的每个数据流、文件、加工,以及组成数据流或文件的数据项做出说明,其中,约束值的含义为:

PK:表示主键 NN:表示非空字段 U:表示唯一性 FK:表示外键 UNIQUE:独立的唯一的标识 N:表示有效性

管理员表

文章表

班级信息表

来宾表

新闻表

同学表

3.6 E-R

同学录

4.2.3数据库的完整性和安全性

数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或者破坏。安全性问题不是数据库系统所独有的,所有计算机系统都有这个问题,只是在数据库系统中大量的数据集中存放,而且为许多最终用户直接共享,从而使安全等问题更为突出,系统安全保护措施是否有效是数据库系统的主要指标之一。在一般的计算机系统中,安全措施是一级一级层层设置的。

例如可以有如下的模型:

用户标识和鉴别 存取控制 操作系统安全保护 数据密码存储

在以上安全模型中,用户要求进入计算机系统时,系统首先根据输入的用户标识进行用户身份鉴定,只有合法的用户才能进入计算系统。对于进入的用户,只允许用户执行合法操作其次数据库的完整性。

以上四个模型图主要是讲述了人员操作月数据库之间的联系,从用户标识到鉴别到存取控制时描述权限机制与数据库管理员之间的必然性和联系性。

操作系统则在整个系统中担任非常重要的工作,操作系统是DB数据库的

数据库的完整性是指数据的正确性和相容性。例如本系统中信息的ID必须唯一;科技成果与科研方向的管理是相关联的等。数据库是否具备完整性关系到数据库系统能否真实地反映现实世界,因此维护数据库的完整性是非常重要的。

第四章 系统的实现

4.1开发环境的配置

4.1.1安装

首先在服务器上安装WindowsXP操作系统,配置好服务器。

安装IIS,在这里我们设默认安装目录,安装完毕,重新启动计算机。

安装Visual Studiao.Net

安装Dreamweaver MX

安装SQLSERVER

4.1.2配置

在系统桌面中,右键【我的电脑】,选择【管理】命令,弹出【管理】对话框。在【Inertnet信息服务】选项卡中,单击【默认网站】按钮,弹出【属性】对话框。在【ASP.NET用户】选项组中,选择asp.net2.0用户。

启动IIS服务器,在浏览器的【地址】下拉列表框中输入“ the next page shows key security issues associated with data access.

The key issues shown in Figure 12.1 and discussed throughout the remainder of this chapter are summarized below:

1. Storing database connection strings securely. This is particularly significant, If your application uses SQL authentication to connect to SQL Server or connects to non-Microsoft databases that require explicit logon credentials. In these cases, connection strings include clear text usernames and passwords.

2. Using an appropriate identity or identities to access the database. Data access may be performed by using the process identity of the calling process, one or more service identities, or the original caller s identity (with impersonation delegation). The choice is determined by your data access model trusted subsystem or impersonationdelegation.

3. Securing data that flows across the network. For example, securing login credentials and sensitive data passed to and from SQL Server.

4. Authenticating callers at the database. SQL Server supports Windows authenti- cation (using NTLM or Kerberos) and SQL authentication (using SQL Server s

built-in authentication mechanism).

5. Authorizing callers at the database. Permissions are associated with individual database objects. Permissions can be associated with users, groups, or roles.

Windows Authentication

Windows authentication is more secure than SQL authentication for the following reasons:

(1) Credentials are managed for you and the credentials are not transmitted over the network.

(2)You avoid embedding user names and passwords in connection strings.

(3)Logon security improves through password expiration periods, minimum

lengths, and account lockout after multiple invalid logon requests. This mitigatesthe threat from dictionary attacks.

Use Windows authentication in the following scenarios:

You is not configured for impersonation.

In this scenario, use the ASP.NET process identity or a serviced component identity (obtained from the account used to run an Enterprise Services server application).

You are intentionally delegating the original caller s security context by using delegation (and are prepared to sacrifice application scalability by foregoing database connection pooling).

Consider the following key points when you use Windows authentication to connect to SQL Server:

Use the principle of least privilege for the ASP.NET process account. Avoid giving the ASP.NET process account the “Act as part of the operating systemprivilege to enable LogonUser API calls.

Determine which code requires additional privileges, and place it within serviced components that run in out-of-process Enterprise Services applications.

Using Windows Authentication

You you use Windows authentication to connect to

(1) SQL Sever from an ASP.NET application (or Web service, or remote component ASP.NET.

(3) Use serviced components.

(4) Use the LogonUser API and impersonating a specific identity.

(5) Use the original caller s identity.

(6) Use the anonymous Internet User account.

Recommendation

The recommendation is to configure the local ASP.NET process identity by changing the password to a known value on the Web server and create a mirrored account onthe database server by creating a local user with the same name and password. Further details for this and the other approaches are presented below.

Using the ASP.NET Process Identity

If you connect to SQL Server directly from an ASP.NET application (or Web s ervice,or remote component approach and the application defines the trust boundary, that is, the database trusts the ASP.NET account to access database objects.

You account.

Use Mirrored ASPNET Local Accounts

This is the simplest approach and is the one generally used when you own the target database (and can control the administration of local database-server accounts). With this option, you use the ASPNET least-privileged, local accountto run ASP.NET and then create a duplicated account on the database server.

SQL Authentication

If your application needs to use SQL authentication, you need to consider the following key points:

Use a least-privileged account to connect to SQL.

Credentials are passed over the wire so they must be secured.

The SQL connection string (which contains credentials) must be secured.

Connection String Types

If you connect to a SQL Server database using credentials (user name and pass- word) then your connection string looks like this:

SqlConnectionString = "Server=YourServer; Database=YourDatabase;

uid=YourUserName;pwd=YourStrongPassword;"

If you need to connect to a specific instance of SQL Server (a feature available only

in SQL Server 2000 or later) installed on the same computer then your connection

string looks like this:

SqlConnectionString = "Server=YourServer\Instance; Database=YourDatabase;uid=YourUserName; pwd=YourStrongPassword;"

If you want to connect to SQL Server using your network credentials, use the Integrated Security attribute (or Trusted Connection attribute) and omit the user- name and password:

SqlConnectionString = "Server=YourServer; Database=YourDatabase; Integrated Security=SSPI;"

- or -

SqlConnectionString = "Server=YourServer; Database=YourDatabase; Trusted_Connection=Yes;"

If you are connecting to an Oracle database by using explicit credentials (user name and password) then your connection string looks like this:

SqlConnectionString = "Provider=MSDAORA;Data Source=YourDatabaseAlias; User ID=YourUserName;Password=YourPassword;"

Note that this does not address the issue of storing credentials in plain text in your Web.config files. All you’ve done so far is limit the scope of damage possible in the event of a compromise, by using a least-privileged account. To further raise the security bar, you should encrypt the credentials.

Authorization

SQL Server provides a number of role-based approaches for authorization. These revolve around the following thee types of roles supported by SQL Server:

User-defined Database Roles. These are used to group together users who the database. You add Windows user or

group accounts to user database roles and establish permissions on individual database objects (stored procedures, tables, views, and so on) using the roles.

Application Roles. These are similar to user database roles in that they are used when establishing object permissions. However, unlike user database roles, they

do not contain users or groups. Instead, they must are activated by an applica- tion using a built-in stored procedure. Once active, the permissions granted to the role determine the data access capabilities of the application.

Application roles allow database administrators to grant selected applications access to specified database objects. This is in contrast to granting permissions to users.

Fixed Database Roles. SQL Server also provides fixed server roles such as db_datareader and db_datawriter. These built-in roles are present in all data- bases and can be used to quickly give a user read specific (and other commonly used) sets of permissions within the database.

Using Multiple Database Roles

If your application each category require the same permissions within the database, your application re- quires multiple roles.

Each role requires a different set of permissions within the database. For example, members of an Internet User role may require read-only permissions to the majority

of tables within a database, while members of an Administrator or Operator role may require readwrite permissions.

Options

To accommodate these scenarios, you options for role-based authori- zation within SQL Server:

User-defined SQL Server Database Roles. These are used to assign permissionsto database objects for groups of users who the database.

When you use user-defined database roles, you check at the gate, map users to roles, (for example, in an ASP.NET Web application or in a middle-tier serviced component in an Enterprise Services server application) and use multiple identi- ties to connect to the database, each of which maps to a user-defined database

role.

SQL Application Roles. These are similar to user-defined database roles in that they are used when you assign permissions to database objects. However, unlike user-defined database roles, they do not contain members and are activated from individual applications by using a built-in stored procedure.When you use application roles, you check at the gate, map users to roles, con- nect to the database using a single, trusted, service identity, and activate the appropriate SQL application role.

User-Defined Database Roles

If you elect to use user-defined database roles, you must:

(1)Create multiple service accounts to use for database access.

(2)Map each account to a user-defined database role.

(3)Establish the necessary database permissions for each role within the database.

(4) Authorize users within your application (ASP.NET Web application, Web service,or middle tier component) and then use application logic within your data access layer to determine which account to connect to the database with. This is basedon the role-membership of the caller.

Declaratively, you can configure individual methods to allow only those users

that belong to a set of roles. You then add imperative role-checks within methodcode to determine precise role membership, which determines the connection to use.

附录B 外文翻译-译文

数据访问安全性

1 显示与数据访问相关的重要安全性问题。

1

1中显示的重要问题

1. 安全存储数据库连接字符串。如果您的应用程序使用 SQL 身份验证连接到 SQL Server,或者连接到需要显式登录凭据的非 Microsoft 数据库,则这一点尤其重要。在这些情况中,连接字符串包含明文形式用户名和密码。

2. 使用正确的标识来访问数据库。利用调用进程的进程标识、一个或多个服务标识或者原调用方的标识(使用模拟委派)可以执行数据访问。选择什么样的标识由数据访问模型确定受信任的子系统或模拟委派。

3. 保护通过网络传递的数据的安全。例如,保护登录凭据以及传入和传出 SQL Server 的机密数据。 仅在您使用 SQL 身份验证而非 Windows 身份验证的网络上公开登录凭据。 SQL Server 2000 利用服务器证书支持 SSLIPSec 还可以用于对客户端计算机(例如 Web 或应用程序服务器)和数据库服务器之间的通信进行加密。

4. 对数据库调用方进行身份验证。SQL Server 支持 Windows 身份验证(利用 NTLM Kerberos)和 SQL 身份验证(利用 SQL Server 内置的身份验证机制)。

5. 向数据库调用方授权。权限与单独的数据库对象关联,也可以与用户、组或角色关联。

Windows 身份验证

Windows 身份验证比 SQL 身份验证更安全,原因是前者有以下优点:

(1) 为您管理凭据,并且不在网络上传递凭据。

(2) 使您避免在连接字符串中嵌入用户名和密码。

(3) 通过设置密码失效期限、最小长度和在多次无效登录请求后锁定帐户,登录安全性得以提高。(4) 这减轻了字典攻击带来的威胁。

在以下方案中应使用 Windows 身份验证:

(1)您使用了受信任的子系统模型并且要使用单个固定标识连接到 SQL Server。如果您从 ASP.NET 进行连接,这会假定 Web 应用程序配置中没有设置模拟。

在这一方案中,请使用 ASP.NET 进程标识或服务组件标识(从用来运行 Enterprise Services 服务器应用程序的帐户中获得)。

(2)您打算利用委派来委派原调用方的安全上下文(并准备通过放弃数据库连接池来牺牲应用程序的可伸缩性)。

当您使用 Windows 身份验证来连接到 SQL Server 时,请考虑以下关键点:

(1)使用 ASP.NET 进程帐户的最少权限原则。不要通过将充当操作系统的一部分这一权限授予 ASP.NET 进程帐户来启用 LogonUser API 调用。

(2)确定哪些代码需要更多权限,然后将这些代码放到在进程外 Enterprise Services 应用程序中行的服务组件内

使用 Windows 身份验证

使用 Windows 身份验证从 ASP.NET 应用程序(或 Web 服务,或者 ASP.NET 承载的远程组件)连接到 SQL Server 时,您可以从以下方法中选择:

(1)使用 ASP.NET 进程标识。

(2)使用 ASP.NET 中的固定标识。

(3)使用服务组件。

(4)使用 LogonUser API 并模拟特定标识。

(5)使用原调用方的标识。

(6)使用匿名 Internet 用户帐户。

建议

建议通过在 Web 服务器上将密码更改为某个已知值来配置本地 ASP.NET 进程标识,然后在数据库服务器上通过创建具有相同用户名和密码的本地用户创建镜像帐户。下面详细介绍这一方法以及其他方法。

使用 ASP.NET 进程标识

如果您直接从 ASP.NET 应用程序(或 Web 服务,或者 ASP.NET 承载的远程组件)连接到 SQL Server 时,请使用 ASP.NET 进程标识。这是一种常用方法,并且该应用程序定义了信任界线,也就是说,数据库信任 ASP.NET 帐户访问数据库对象。

您有三个选项:

(1)使用镜像的 ASPNET 本地帐户。

(2)使用镜像的自定义本地帐户。

(3)使用自定义的域帐户。

SQL 身份验证

如果您的应用程序需要使用 SQL 身份验证,您需要考虑以下关键点:使用具有最少权限的帐户连接到 SQL

凭据通过网络传递,因此必须对它们进行保护。

必须保护 SQL 连接字符串(它包含凭据)。

连接字符串类型

如果您使用凭据(用户名和密码)来连接到 SQL Server 数据库,则连接字符串形式如下:

Using the SQL Server .NET Data Provider:

SqlConnection conn = new SqlConnection(

"server=YourServer; uid=YourUserName; pwd=YourStrongPwd;" +

"database=YourDatabase");

Using the OLE DB .NET Data Provider:

OleDbConnection conn = new OleDbConnection(

"Provider=SQLOLEDB; Data Source=YourServer;" +

"uid=YourUserName; pwd=YourStrongPwd; Initial Catalog=YourDatabase");

如果您需要连接到安装在同一计算机上的 SQL Server 的特定实例(只在 SQL Server 2000 或以后版本中提供的功能),则连接字符串形式如下:

Using the SQL Server .NET Data Provider:

SqlConnection conn = new SqlConnection(

"server=YourServer\Instance; uid=YourUserName; pwd=YourStrongPwd;" +

"database=YourDatabase");

如果您利用显式凭据(用户名和密码)连接到 Oracle 数据库,则连接字符串形式如下:

OleDbConnection conn = new OleDbConnection(

"Provider=MSDAORA; Data Source=YourDatabaseAlias;" +

S "User ID=YourUserName; Password=YourStrongPwd;");

选择用于连接的 SQL 帐户

不要使用内置的 sa 帐户或任何属于 SQL Server sysadmin 固定服务器角色或 db_owner 固定数据库角色的成员的帐户进行数据访问。sysadmin 的成员在SQL Server中能执行任何动作。db_owner 的成员在数据库中具有不受限制的权限。您应该使用具有最少权限的、采用强密码的帐户。

避免使用以下连接字符串:

qlConnectionString = "Server=YourServer\Instance;

Data0base=YourDatabase; uid=sa; pwd=;"

使用具有最少权限的、采用强密码的帐户,例如:

SqlConnectionString= "Server=YourServer\Instance;

Database=YourDatabase;

uid=YourStrongAccount;

pwd=YourStrongPassword;"

注意,这并没有解决在 Web.config 文件中以明文形式存储凭据的问题。您到目前为止所做的一切是利用具有最少权限的帐户限制在发生危害时可能造成的损失范围。要进一步提高安全门槛,您应当对凭据加密。

如果您在安装 SQL Server 时选择区分大小写的排序顺序,那么您的登录 ID 也区分大小写。

授权

SQL Server 提供了许多基于角色的授权方法。这些方法都围绕 SQL Server 支持的以下三种类型的角色:

(1) 用户定义的数据库角色

这些角色用于将数据库中拥有相同安全权限的用户归集成组。创建 SQL Server 登录,然后与特定的数据库用户进行匹配。接着向用户数据库角色添加数据库用户,并使用这些角色分别建立各个数据库对象(存储过程、表、视图等等)的权限。

应用程序角色。这些角色与用户数据库角色的相似之处是:在创建对象权限时需要使用它们。但是,与用户数据库角色不同的是,它们不包含用户或组,而是必须由一个使用内置存储过程的应用程序激活。激活后,授予角色的权限决定应用程序的数据访问能力。

应用程序角色允许数据库管理员向指定的数据库对象授予选定的应用程序访问权限。这与向用户授予权限不同。

(2)固定的数据库角色

SQL Server 还提供固定的服务器角色,比如 db_datareader db_datawriter。这些内置的角色存在于所有数据库中,可用于将数据库中的一组特定的(和其他常用的)读取权限快速授予某个用户。

(3)使用多个数据库角色

如果您的应用程序有多个用户类别,同一类别内的用户需要数据库中的相同权限,那么您的应用程序需要多个角色。各个角色分别需要数据库中的一组不同的权限。例如,Internet 用户角色的成员需要对数据库中的大多数表具有只读权限,而管理员或操作员角色的成员需要读写权限。

在这方案中,可以使用多个用户定义的 SQL Server 数据库角色。这些角色用于向那些在数据库内拥有相同安全权限的用户组授予数据库对象权限。使用这种方法,则必须:

创建用于数据库访问的多个服务帐户。

为每个帐户创建SQL Server登录。创建数据库用户,授予其对数据库的登录访问权限

将每个数据库用户添加到用户定义的数据库角色。

为数据库中的每个角色建立必要的数据库权限。

在应用程序(ASP.NET Web 应用程序、Web 服务或中间层组件)中向用户授权,然后使用数据访问层中的应用逻辑来确定让哪一个帐户连接到数据库。这是基于调用方的角色成员身份。

本文来源:https://www.2haoxitong.net/k/doc/3e81d90ef6ec4afe04a1b0717fd5360cba1a8dd9.html

《(完整版)同学录系统毕业设计.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式