基于.net平台下的电子商务系统的研究与实现

基于.net平台下的电子商务系统的研究与实现

ID:35147605

大小:745.31 KB

页数:62页

时间:2019-03-20

上传者:U-22107
基于.net平台下的电子商务系统的研究与实现_第1页
基于.net平台下的电子商务系统的研究与实现_第2页
基于.net平台下的电子商务系统的研究与实现_第3页
基于.net平台下的电子商务系统的研究与实现_第4页
基于.net平台下的电子商务系统的研究与实现_第5页
资源描述:

《基于.net平台下的电子商务系统的研究与实现》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

基于.NET平台下的电子商务系统的研究与实现TheResearchandImplementationoftheE-CommerceSystemBasedon.NETPlatform作者姓名陈纪霞学位类型高校教师学科、专业计算机应用技术研究方向电子商务导师及职称欧阳一鸣副教授2011年5月 合肥工业大学本论文经答辩委员会全体委员审查,确认符合合肥工业大学硕士学位论文质量要求。答辩委员会签名:(工作单位、职称)主席:吴坚安徽科力信息产业有限责任公司高工委员:梁华国合肥工业大学教授谢涛圣地亚哥州立大学副教授周国祥合肥工业大学教授王伟合肥工业大学副教授导师:欧阳一鸣合肥工业大学副教授 独创性声明本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的研究成果。据我所知,除了文中特别加以标志和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得合肥工业大学或其他教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示谢意。学位论文作者签字:陈纪霞签字日期:2011年6月19日学位论文版权使用授权书本学位论文作者完全了解合肥工业大学有关保留、使用学位论文的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁盘,允许论文被查阅或借阅。本人授权合肥工业大学可以将学位论文的全部或部分论文内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编学位论文。(保密的学位论文在解密后适用本授权书)学位论文作者签名:陈纪霞导师签名:欧阳一鸣签字日期:2011年6月19日签字日期:2011年6月19日学位论文作者毕业后去向:工作单位:安徽财贸职业学院电话:18956007601通讯地址:皖、合肥市、翡翠路900号邮编:230601 基于.NET平台下的电子商务系统的研究与实现摘要上世纪90年代以来,随着互联网的发展,电子商务在社会经济领域发展迅速,电子商务推动了商业、贸易、营销、金融、广告运输、教育等社会经济领域的创新,给企业带来许多新的机会。现在电子商务正由起步迈入繁荣阶段,己呈现燎原之势,是二十一世纪经济发展的又一新增长点,这为我国的每一个企业带来了新的机遇和挑战。在网上发展商务为我们打开了一个崭新的世界,诸如改善服务水平,提高效率,降低费用,增进合作者之间的联系,缩短进入市场的时间以及更广泛的开拓市场。从而大大节约生产的成本,提高管理的水平,增强企业的市场竞争实力。网上书店就是一种典型的电子商务应用。如何设计开发出功能强大,费用低廉,通用性强,适合我国国情的购物网站系统,这将是我们急需解决的一个重要课题。本论文将通过一个网上书店零售网站的开发实例,对基于.NET技术的B2C模式网上书店零售网站的研究与开发进行了深入的探讨。本论文的主要工作如下:(1)介绍了电子商务的概念、发展现状及电子商务网站的实现技术,结合一个具体的电子商务站点,对网站进行了网站规划、概要设计、详细设计及编码开发,对电子商务系统开发过程中如何增强系统的复用性、可维护性、安全性、高效性和先进性作出了探讨。(2)深入分析了电子商务系统的特点,采用当前流行的B/S设计模式,基于Windows.NET开发平台,运用全新的面向对象语言C#,以ASP.NET为工具,运用Web服务和XML,利用SQLServer2005做后台,利用ADO.NET作为接口,设计和实现网上书店电子商务,构建了3层B/S模式系统架构。(3)针对电子商务系统的安全性问题,提出了较为完整的安全性解决方案。安全问题是电子商务推广过程中最大的障碍,本文对系统中的用户密码等敏感数据,采用了以其散列值在数据库中进行存储,避免直接存储敏感数据的明文;在用户权限管理方面:根据用户使用功能划分角色,采用窗体身份验证方式,编程运用基于角色的授权;在信息安全和身份认证方面:系统应用了.NET编程技术下数据加密技术、数字签名和身份认证技术。该方案最大程度上保障了电子商务系统的安全。关键词:电子商务;三层结构;角色;Web服务;安全 TheResearchandImplementationoftheE-CommerceSystemBasedon.NETPlatformAbstractSincethe90soflastcentury,withthedevelopmentoftheInternet,E-commercehasdevelopedrapidlyinthesocialandeconomicfields,promotee-commercebusiness,trade,marketing,finance,advertising,transportation,educationandothersocialandeconomicinnovationinthefield,manynewtotheenterpriseopportunities.E-commerceisnowenteringtheinitialboomphase,hasbeenpresentedLiaoyuanzhishi,economicdevelopmentinthetwenty-firstcenturymarksanewgrowthpoint,whichforeachofourbusinesshasbroughtnewopportunitiesandchallenges.Webdevelopmentbusinessforustoopenanewworld,suchasimprovingservicelevels,improveefficiency,reducecosts,enhancethelinksbetweenthepartners,reducetimetomarketandthebroadermarketdevelopment.Thussavingproductioncosts,improvemanagement,andenhancetheirmarketcompetitiveness.Onlinebookstoreisatypicale-commerceapplications.Howtodesignanddevelopapowerful,lowcost,versatility,suitableforChina'sshoppingsitesystem,whichwillbeoururgentneedtoaddressanimportantissue.Thisthesiswillbeonlinebookstoreretailsitesthroughadevelopmentinstance,basedon.NETtechnologyB2Cmodeofresearchanddevelopmentofretailsitesonlinebookstoreconductedin-depthstudy.Themainworkisasfollows:(1)ThisthesisintroducestheconceptoftheE-commerce,thedevelopmentofpresentsituationandtheimplementationofE-commercewebsitetechnology.Intermsofaspecifice-commercewebsite,thethesismakestherequirementanalysis,theoutlinedesign,detaileddesignandcodingdevelopment.Thethesisdiscusseshowtoimprovethereusability,maintainability,security,efficiencyandadvancedcharacteristicsoftheE-commercesystemduringthedevelopmentprocess.(2)DepthanalysisofthecharacteristicsoftheE-commerceSystem,ThesystemusesthecurrentpopularB/Sdesignmodel,basedonWindows.NETasdevelopmentplatform,takingASP.NETandanewobject-orientedlanguageC#.NETasthetools,utilizingtheWebservice,XML,SQLServer2000,andADO.NETforconnection,thesystemdesignsandimplementsanon-linebookstoreE-commerce,andfinallyconstrrctathree-tierdistributedframework.(3)Itproposesamorecomprehensivesolutiontothesystemsecurity.E-commercesecurityisthebiggestobstacleinthepromotionprocess,thesystem userpasswordsandothersensitivedata,usingitshashvaluestoredinthedatabase,toavoidstoringsensitivedataincleartextdirectly.Inuseraccesscontrol:usingWindowsidentityauthenticationaccordingtothefunctionalroleofusersandprogrammingbasedontheauthorizationoftherole.Ininformationsecurityandidentityauthentication:appliingthesystem.NETprogrammingtechnologiessuchasdatahash,dataencrypt,digitalsignatureandidentityauthentication.Theprogramguaranteesthemaximumextentpossiblethesafetyofe-commercesystems.Keywords:E-commerce;Three-tierArchitecture;Roles;WebService;Security 致谢在这里,首先我要真诚感谢我的导师欧阳一鸣副教授!欧阳老师严谨细致、一丝不苟的作风一直是我学习的榜样;他循循善诱的教导和不拘一格的思路给予我无尽的启迪。从本文的选题、研究设计到初稿的审阅修改,欧阳老师都倾注了很多心血,提出了很多有益意见。欧阳老师在学术和科研上严谨态度和勇于探索的精神深深地感染了我,将使我终身受益。谨向欧阳老师致以崇高的敬意和衷心的感谢!同时,我还要感谢计算机与信息学院的全体老师,正是他们辛勤的教诲,我的学识和能力才得以很大的提高。也非常感谢在完成论文过程中关心和帮助过我的同学、朋友们;在与他们交流的过程中,我获得了相当大的启发。感谢我的父母和家人,正是你们的关心和支持才使我顺利地完成了学业。感谢在百忙之中评阅本论文的专家、教授,感谢你们对本论文提出的宝贵意见和建议。最后,再次请所有关心、帮助过我的老师和同学接受我诚挚的谢意!作者:陈纪霞2011年5月 目录第一章绪论.....................................................................................................11.1系统研究开发背景..............................................................................11.2电子商务概述......................................................................................11.3电子商务的发展与现状.......................................................................11.4电子商务的相关技术...........................................................................21.5Microsoft.NET概述.............................................................................41.6本文研究的目标、内容和意义............................................................6第二章系统的总体规划和概要设计................................................................82.1系统总体目标......................................................................................82.2系统工作流程......................................................................................82.3系统的逻辑体系结构...........................................................................92.4系统开发及运行环境.........................................................................112.5系统功能模块....................................................................................112.6系统解决方案项目构成.....................................................................13第三章数据层的设计与实现.........................................................................153.1数据库设计原则................................................................................153.2数据库逻辑结构设计.........................................................................153.3数据库表结构设计............................................................................173.4索引设计...........................................................................................173.5视图设计...........................................................................................183.6存储过程设计....................................................................................193.7事务处理设计....................................................................................193.8数据库安全设计................................................................................19第四章业务逻辑层设计与实现.....................................................................214.1设计规划...........................................................................................214.2类的设计和业务功能的提取.............................................................224.3代码设计...........................................................................................23第五章表示层设计与实现.............................................................................255.1服务器端用户控件和母板设计..........................................................255.2前台子系统设计................................................................................265.3后台子系统设计................................................................................32第六章电子商务系统的安全.........................................................................386.1安全认证协议....................................................................................386.2单向散列算法及应用.........................................................................406.3RSA数据加密技术及应用.................................................................416.4RSA数字签名技术及应用.................................................................45结论..............................................................................................................49参考文献...........................................................................................................51研究生期间撰写的论文.............................................53 插图清单图1-1.NET平台体系结构..................................................................5图2-3系统功能模块图......................................................................11图2-4解决方案项目构成图..............................................................14图3-1数据库表主外键约束关系图....................................................17图3-2表结构图.................................................................................17图5-1首页效果图.............................................................................28图5-2购物车界面效果图..................................................................30图5-3结账页面.................................................................................31图5-4模拟虚拟网上支付界面..........................................................32图5-5基于窗体身份验证的工作原理................................................35图6-1模拟虚拟网上支付界面..........................................................44图6-2数字签名技术原理示意图.......................................................45图6-3结账页面数据签名..................................................................46图6-4发货时验证收货地址的数字签名验证....................................47 第一章绪论1.1系统研究开发背景上世纪90年代以来,随着互联网的发展,电子商务在社会经济领域发展迅速,电子商务推动了商业、贸易、营销、金融、广告运输、教育等社会经济领域的创新,并因此形成了一个又一个新产业,给企业带来许多新的机会。现在电子商务正由起步迈入繁荣阶段,己呈现燎原之势,是二十一世纪经济发展的又一新增长点,这为我国的每一个企业带来了新的机遇和挑战。企业从事电子商务就是通过网络来实现从原料的查询、采购、产品展示、定购到销售、储运以及电子支付等一系列商务活动。在网上发展商务为我们打开了一个崭新的世界,诸如改善服务水平,提高效率,降低费用,增进合作者之间的联系,缩短进入市场的时间以及更广泛的开拓市场。从而大大节约生产的成本,提高管理的水平,增强企业的市场竞争实力。电子商务常见的模式有:商家与消费者(B2C)、商家与商家(B2B)等模式。本论文将通过一个网上书店零售网站的开发实例,对基于.NET技术的B2C模式网上书店零售网站的研究与开发进行了深入的探讨。1.2电子商务概述一般来讲,电子商务通常是指在全球各地广泛的商业贸易活动中,在因特网开放的网络环境下,基于浏览器/服务器应用方式,买卖双方不谋面地进行各种商贸活动,实现消费者的网上购物、商户之间的网上交易和在线电子支付以及各种商务活动、交易活动、金融活动和相关的综合服务活动的一种新型的商业运营模式。电子商务从广义上讲,泛指企业用电子技术手段实现商务及运作管理的整个过程;从狭义上讲,即通过Internet或电子数据交换进行的交易活动。电子商务包括信息流、资金流和物流3大要素。电子商务网站如同其他的Web网站一样,一般情况下,不外乎以下4个目的,即网上宣传、信息反馈、技术支持和产品销售,通过它,电子商务才能得以实施和运作。与普通的Web网站相比,电子商务网站的主要区别体现在数据处理和数据传输要求更高、数据流程更复杂,在网上进行商品交易时要保证数据及信息传输的安全性。1.3电子商务的发展与现状从惠普公司、IBM公司等相继宣布1998年为“电子商务年”以后,电子商务在全球迅速发展,一些发达国家将电子商务视为国民经济发展的重要动力,采取积极措施,建立符合本国利益的电子商务保障体系,发布电子商务的发展战1 略,制定电子商务市场准入和税收政策,支持和促进电子商务的技术开发和应用开发。电子商务已成为发达国家发展战略的重要要素之一的。世界贸易组织,联合国经合组织,国际商会等机构积极参与协调法规及管理电子商务框架,并讨论了统一的电子商业全球或区域贸易规则,法律框架和标准。一些跨国公司基于互联网的采购,生产,配送,物流,网络管理,通过企业之间的信息共享和交流,信息流,资金流和物流的全面集成应用,大大降低了生产成本,提高了竞争力。目前国际电子商务发展的现状和趋势是:全球电子商务,美国独占鳌头,占有绝对的主导地位。另外,亚洲电子商务也处于蓬勃发展阶段。电子商务在国内情况是:我国电子商务是从20世纪90年代初开始起动的,电子商务随着计算机技术、网络技术、通信技术、多媒体技术的发展以及互联网的普及而产生并不断地发展和完善。1998年我国电子商务框架、政策法规与标准、组织结构以及认证中心、网上银行等机构逐步正式开始筹建,为全面开展电子商务积极做好准备。一些部门与企业也纷纷建立了自己的网站,设计了各自精美的门户网站,开展了网上广告、网上销售、网上信息查询、电子支付等业务。但与发达国家相比,我国的电子商务起步较晚,尚处于初级阶段。必须加快推进企业电子商务的发展,这是企业尤其是大企业集团提高核心竞争力、参与国际市场竞争的重要条件。近年来,我国制定了互联网管理的一些条例,如2004年十届人大正式通过了《电子签名法》,并将于2005年4月1日起施行。这将为无形的网上交易树立一道有形的法律保障,将为我国电子商务写下新的篇章。别外,我国的网络基础设施、安全认证、在线支付、物流等电子商务运行环境正在逐步完善,这些都将大大推动电子商务的发展,开展电子商务可谓大势所趋,电子商务的发展必将成为经济发展的一个重要推动力。1.4电子商务的相关技术电子商务是一个集成的新领域,集成商务管理、市场营销、供需链、计算机应用、计算机网络技术、软件工程、密码学等多个学科,需要很多技术作为这个新领域支撑。1.4.1数据库技术在电子商务业务中,诸如商家提供的商品信息、用户信息、商品销售信息、认证中心储存的用户信息、配送中心需要使用的信息等等,这些大量的信息均需要有好的数据库技术作为支持。该技术应包括数据模型、数据库系统(Oracle,SQLServer等)、数据仓库、联机分析处理和数据挖掘技术等。这些数据库技术主要完成:数据的收集、存储和组织、数据分析和决策支持。2 1.4.2微软.Net架构.NET框架是创建、部署和运行Web应用程序的一个环境。它包括如下主要部分:公共语言运行时(CLR)、框架类库(.NetFrameworkClass)、应用程序开发技术(如ASP.NET、WebService等),详细介绍见1.51.4.3XML(可扩展的标记语言)电子商务应用程序开发时常见的一些问题如下:(1)异构应用程序的集成。公司之间要共享数据,那么这些数据就必须适用于不同操作系统平台的应用程序。应用程序之间要互相交换数据,这些数据就必须是适用于不同的应用程序。(2)数据格式的转换。通过Internet进行的电子商务活动,所面临的问题之一是应用程序使用的数据类型没有统一。电子商务应用程序开发遇到的这些问题,都可以使用面向.NET框架的XML和WebService来解决。XML文档是文本格式,能够被任何系统读取和理解。XML天生具备分布性而且通常是面向Web的,XML以自我描述方式定义数据结构,独立于平台和语言。XML为结构化数据的描述和交换提供了统一的方法。利用XML和WebServices,程序员就可以把数据和自身已有的业务系统以及商业伙伴的业务系统整合到一起。W3C(WordWideWebConsortium)组织在1998年公布了XML标准,它是电子商务中信息表示的一种语言。它能够更好地描述结构化数据,以一种开放的自我描述方式定义数据结构;从而体现出数据之间的关系,具有可扩展性、开放性、跨平台性,支持多种语言等优点,从而能较好地解决异构系统之间的数据交换,更适合在网络环境下使用。2000年10月6日,W3C正式颁布了XML1.0的标准版(第二版)。XML作为电子商务的语言,被越来越多的应用软件、中间件以及数据库厂商所支持。1.4.4组件技术组件又称构件或控件,是封装特定功能,提供透明服务、可重用的软件模块。一个组件同一个微型应用程序类似,它是己经编译、链接好并可以使用的,应用程序就是由多个这样的组件打包而成的。在需要对应用程序进行修改或改进时,只需将构成此应用程序的某个组件用新版本的组件替换掉即可。应用组件思想开发系统可以归纳为以下几点特点:(1)便于软件的升级:组件化的思想从一开始提出就是为了便于软件的升级和更新。(2)快速应用程序开发:组件最引人注目的优点之一是快速应用程序开发。开发人员从某个组件库中取出所需的组件并将其快速地组装到一块以构造所需的应用程序。3 目前软件行业出现了两种主要的基于组件技术的分布式技术:Microsoft.NET的COM+技术、SUN的EJB技术。Microsoft的COM+思想先进,技术成熟,开发方便,深受众多分布式开发人员的青睐。本系统通过调用组件类中的外在功能方法接口完成与上层表示层及底层数据库的交互,从而来实现整个软件系统的集成,组件技术提高了代码的复用率和系统的模块化程度,便于维护和升级。1.4.5电子支付技术电子支付技术是为客户提供网上在线付款的技术,电子支付技术涉及到很多的技术问题。这些问题包括:(1)电子货币(电子支票、银行卡、电子现金)的表示形式。电子货币的表现形式主要由金融机构来制定,标准比较复杂,包括一些电子支票和电子现金的形式。(2)发放和管理技术。(3)电子支付模式。目前银行界普通使用的电子支付模式有SSL(SecureSocketLayer安全套接层)和SET(SecurityElectronicTransaction安全电子交易)两种。SSL是在进行支付的双方建立一条安全会话通道。在该安全通道中传送支付信息以确保信息安全。SET是以信用卡支付为基础的网上电子支付协议,SET协议保证了电子交易的机密性、数据完整性、身份的合法性和不可抵赖性。SET协议对一些敏感信息(如信用卡号,收货地址等)进行加密或数字签名。SET协议使用了如下一些安全措施:加密技术,数字签名技术和数字认证技术。1.4.6加密解密和数字签名技术安全问题解决好坏直接影响到电子商务是否可以迅速发展。为此在网络上进行商务活动需要一个商务活动所涉及的各方均信任的第三方机构来完成商务活动各方的身份认证。目前普通使用的身份认证方式是证书认证方式,每一个证书与一个密钥相对应。现在最为流行的证书格式是由ITU-T建议的X.509中所规定的。其他标准化组织也采用了X.509作为公共密钥认证的基础。在认证体系的实现中的技术包括号簿管理技术(证书的格式、证书的发放及证书的认证),以及一些加密技术,如对称式加密法(私密钥加密法)、非对称式加密法(公开钥加密法)等。1.5Microsoft.NET概述1.5.1.NET开发平台的简介2001年微软正式发布.NET开发平台,标志着近十年来微软开发平台一次重大的转变。.NET开发平台使得开发者创建运行IISWeb服务器上的Web应用4 程序更为容易,它也使创建稳定、可靠而又安全的Windows桌面型应用程序更为容易。.NET框架实现了语言开发、代码编译、组件配置、程序运行、对象交互等各个层面的功能,为Web服务及普通应用程序提供了一个托管、安全、高效的执行环境。.NET开发平台的组成如图3-1所示。图1-1.NET平台体系结构VisualStudio.NET提供了一个用于在该平台上创建应用程序的图形界面集成开发环境。程序员可以使用一种或多种.NET编程语言来编写他们的代码,例如微软自己的VC#,VB.NET,VC++.NET等。其它的.NET编程语言可以从第三方厂商获得。1.5.2.NETFramework.NETFramework是支持生成和运行下一代应用程序和XMLWebServices的内部Windows组件。.NETFramework具有两个主要组件:CLR(通用语言运行环境)和.NETFramework类库。CLR是.NETFramework的基础。CLR提供内存管理、线程管理和远程处理等核心服务,并且还强制实施严格的类型安全以及可提高安全性和可靠性的其他形式的代码准确性检查。CLR允许并列安装多个版本的组件,它可以避免在一台机器上安装相冲突的软件组件时发生的问题,CLR减少了不同版本组件间的冲突。当CLR加载一个应用程序时,它使用元数据来确保它加载了所有组件的正确版本。CLR中的自动拉圾收集器来负责.NET应用程序运行时的内存管理问题,彻底解决了多年来困扰程序员的内存泄漏问题,大大增强了应用程序的健壮性。1.5.3ASP.NETASP.NET是.NET开发平台的一个部件,用来开发驻留在微软的IIS上并且使用诸如HTTP和SOAP等Internet协议的Web应用程序。ASP.NET使Web应用程序和WebServices这两种类型的Web应用程序的开发和部署更为容易。这两种Web应用程序体现了超出传统应用程序的一个主要的优点:它们使用基于5 Internet的协议使信息可以轻易地穿过组织边界(如防火墙)移动,如同在一个组织内移动一样。1.5.4ADO.NET.NET中的数据访问技术是ADO.NET。ADO.NET的对象模型中有5个主要的组件,分别是Connection对象、Command对象、DateReader对象、DateAdapter对象和DataSet对象。这些组件中负责建立联机和数据操作的部分称为数据操作组件。数据操作组件最主要的用途是当作DateSet对象以及数据源之间的桥梁,负责将数据源中的数据取出后植入DateSet对象中,以及将数据存回数据源的工作。ADO.NET为应用程序提供了两种数据访问的模式:连接模式(ConnectedMode)和非连接模式(DisconnectedMode)。相对于传统的数据库访问模式,非连接的模式为应用程序提供了更大灵活性。在该模式下,一旦应用程序从数据源中获得所需的数据,它就断开与原数据源的连接,并将获得的数据以XML的形式存放在主存中。在应用程序处理完数据后,它再取得与原数据源的连接,并完成数据的更新工作。1.6本文研究的目标、内容和意义本文研究内容属于支持电子商务的技术开发领域,这是计算机学科应用的新兴领域和当前热点领域。本文首先对电子商务的概念、发展现状及电子商务网站的实现技术进行了介绍,然后结合一个具体的电子商务站点,对网站进行了网站规划、概要设计、详细设计及编码开发,最后又对站点的安全进行了分析,规划和处理。本文对电子商务系统开发中增强系统的复用性、可靠性、可维护性、高效性和先进性作出探讨。对电子商务中的安全,也提出并实现了较为完整的解决方案。选择以电子商务作论文,因为它有很大的应用价值,而且其涉及的计算机技术也非常全面。本文的研究目标和内容如下:系统采用当前流行的B/S设计模式,基于Windows.NET平台构建Web应用程序,把系统划分为数据层、业务逻辑层和表示层。然后分别从数据层,业务逻辑层和表示层这三层体系的角度阐述了基于.NET平台下的电子商务系统的设计与实现,提出了基于.NET架构的总体设计方案。研究.NET环境的体系结构和建立在此基础之上的电子商务开发技术,运用全新的面向对象语言C#,采用ASP.NET,运用Web服务和XML,利用SQLServer2005做后台,利用ADO.NET作为接口,在VS2008环境下设计和实现网上书店电子商务系统,构建了3层B/S模式架构,使得数据处理逻辑与它的表现形式分离,保证了系统的可扩展性和可复用性。安全性是设计和实现基于Web技术的电子商务系统要解决的关键性问题之一,本文对电子商务系统的安全性做出了深入的探索。在用户权限管理方面:6 根据用户使用功能划分角色,采用窗体身份验证方式,运用基于角色的授权;在信息安全和身份认证方面:应用了.NET编程技术下的数据加密技术、数字签名和身份认证技术。对系统的安全性设计了一个较为全面的安全解决方案。为了实现数据库的安全,防止SQL注入式攻击,以及代码复用和提高系统性能,系统中使用了SQL存储过程。为了系统的可扩展性和代码的复用性,在业务逻辑层中采用组件编程,把各种业务逻辑功能封装到组件的类的方法中。7 第二章系统的总体规划和概要设计2.1系统总体目标本系统的总体目标就是通过学习、研究和运用微软的.NET平台,开发实现一个B2C模式的电子商务系统,具体是研究和实现一个网上书店的B2C电子商务系统,让用户更便利地实现网上的电子交易,同时让开发者更高效地开发,让商家的数据维护和更新成本更低。充分利用.NET环境的优势,来高效地实现电子商务是本项目的总体目标。为此系统应该达到以下要求:1、运行效率高。优化逻辑设计与物理设计,使系统运行效率高,反应速度快。2、便于理解和操作。用户容易理解和使用该系统。系统运行后,不需要专业人员的介入就能方便的进行管理和维护:3、便于维护性和扩充。系统应易于修改、扩充、维护,能够适应业务发展变化的需要。4、功能完备。目标系统功能齐全,能够完全满足业务需求。5、安全保密。保证系统的物理安全、数据存储和存取的安全与保密、数据传输的安全与保密,做好使用人员的授权管理。6、用户界面友好,便于商家和用户之间的沟通。2.2系统工作流程系统分为前台普通用户界面和后台管理界面。在前台子系统用户可以登录,注册,更新用户信息;可以浏览商品,搜索商品,购买商品,查看商品的评论,会员用户还可以对商品发表评论以及登记所缺的商品等。后台子系统供电子商务公司内部管理人员使用,可以进行新品上传,商品修改和调整,商品种类维护,所缺商品管理及回复;可以对用户进行管理;对用户的订单进行管理等等。系统工作流程可以用图2-1形象描述如下:8 图2-1系统运行流程示意图2.3系统的逻辑体系结构系统采用当前流行的B/S设计模式,基于Windows.NET平台构建Web应用程序,把系统划分为数据层、业务逻辑层和表示层。逻辑体系结构如图2-2所示:图2-2系统体系结构图2.3.1三层结构(1)表示层:即用户界面层,是由ASP.NET技术的Web窗体组合起来构成的。表示层运行在客户端浏览器上,产生用户视图。在业务逻辑层发生变化时通过改变表示层的组合以及做一些简单的调整就可以很好地适应新的业务逻辑层。9 (2)业务逻辑层:该层从整个系统功能设计中抽取大量具有共性的模块,把它们统一设计成系统公共的可重用的组件,表示层来调用组件中这些类的功能。(3)数据层:用来管理和存储数据,实现数据访问功能,设计数据库,定义数据表结构、表的索引、数据表之间的关联,定义数据库中的视图以及操作数据的存储过程,设计数据库的安全等等。层与层之间的通信方式为:表示层的ASP.NETWeb窗体,对业务逻辑层组件中的类进行实例化并调用其功能。业务逻辑层通过ADO.NET访问后台数据库SQLServe。系统运行时是通过客户端和Web服务器和数据库服务器之间请求响应的会话模式完成。运行时客户端通过浏览器提交HTTP请求到Web服务器的ASP.NET应用程序。ASP.NET应用程序接收客户端传来的参数,进行相应的处理,访问数据库,将通过ADO.NET方式向数据库提出请求,数据库服务器对请求进行处理,并将处理结果主要以实体类泛型数组形式返回到Web服务器。Web服务器对实体类泛型数组进行处理,再将结果传送到客户机的浏览器。浏览器在收到结果后,再将结果动态显示出来。2.3.2B/S设计模式信息技术的高速发展推动了设计模式不断更新。从单机时代的主机/终端模式、文件服务器时代的Client/Server(客户机/服务器)模式,到互联网时代的Browser/Server(浏览器/服务器)网络模式。B/S模式是基于Web技术对传统C/S模式进行改进而形成的一种新型模式。该模式采用三层结构,它是以Web服务器为中心,采用TCP/IP和HTTP为传输协议,前端采用通用浏览器(如IE)以HTTP协议方式访问Web服务器,后端采用ADO.NET访问数据库,将结果返回浏览器。本系统采用B/S设计模式,有其特殊的优点:(1)复杂度降低,可靠性提高B/S是一种瘦客户机模式,客户端软件只需安装Web浏览器,无须开发客户端软件,Web浏览器简单易用。所有的代码和配置信息都在Web服务器上集中存储和管理,大幅度降低了客户端的复杂度。(2)系统的维护、升级和部署简单B/S模式的系统升级、维护和部署主要在Web服务器和数据库服务器端,减少了整个系统的维护和部署工作量成本。客户端、Web服务器和数据库服务器的升级可以独立进行,使系统升级工作量减少、系统的升级更加方便。由于上述优点导致了现在应用系统的体系结构从C/S模式的体系结构向B/S模式的体系结构演变,使得软件系统的网络体系结构跨入一个新阶段。10 2.4系统开发及运行环境本电子商务系统的开发及运行环境为:操作系统平台:WindowsXP/Windows2003Server。Web服务器:MS-IIS6.0(InternetInformationServer)及以上。数据库管理系统:以SQLServer2005为后台数据库,通过ADO.NET来访问后台数据库系统。集成开发环境、开发工具及语言:在VisualStudio.NET2008之上以ASP.NET作为开发工具,充分利用.NET框架,利用C#作为主要开发语言进行开发。运行平台SQLServer2005数据库服务器+WindowsWebIIS服务器+WebBrower浏览器2.5系统功能模块根据本电子商务系统网站的功能和业务流程,我把此商务网站分为以下模块,如图2-3所示:图2-3系统功能模块图前台子系统模块的主要功能是引导客户(网站访问者)完成网上购物的过程,主要由商品浏览检索模块、用户模块、购物车模块和用户订单模块等组成。后台管理子系统模块主要是对电子商务系统进行管理,一般由客户管理模11 块、订单管理模块、商品管理模块和后台管理人员权限分配等功能模块组成。下面对部分模块进行解释。2.5.1前台功能模块图书类别功能模块用户可以通过预先分类好的图书类别来浏览相关的图书目录以至详细的图书信息,从中发现自己感兴趣的书。图书搜索功能模块让用户通过书名、作者、出版社、ISBN等为条件,通过搜索的功能来快速找到自己想要买的书。图书展示功能模块对图书商品进行详细展示,包含图书封面图片,图书简介等,若想购买单击“加入购物车”即可。购书车功能模块当用户找到自己想购买的书时,单击“加入购书车”的图标,将图书加入到购书车中。在购物车页面中,可以修改商品数量,移出某图书商品,可以清空购物车,可以继续购物。等到用户找到所有想买的书之后,单击“结帐”的功能,进入结帐的网页。用户订单功能模块浏览客户已下的所有订单、查看订单详情,也可取消尚未付款、发货的订单。缺书报告功能模块当用户在此网站想购买某本图书但发生缺书时,可以在此功能模块中向网站管理人员报告。结账功能模块在购物车模块,当用户找到所有想买的书之后,单击“结帐”的功能,进入结帐的网页。在结账页,会显示用户的个人资料信息,订单的明细商品信息,订单金额,及默认的收货地址及收货人。这里可以更改收货地址和收货人,可以根据实际情况决定是否要对收货地址进行数字签名以防黑客修改。然后选择支付方式是邮局汇款还是网上支付,单击“提交订单”,即产生订单,并进入付款页面。在付款页面,显示产生的订单号,若是网上付款,这里可以在用WebService摸拟的银行网关中输入你的银行卡号和密码。为了防止明文传输泄密,接着按提示导入银行网关的公钥对银行卡号进行加密,单击“提交”付款成功,同时把此订单的状态修改为“已付款”,为防止提交的中途出现故障,提交过程中采用了事务处理功能。2.5.2后台管理功能模块图书管理功能模块12 其下的子模块分别负责对图书信息进行添加、修改和删除,以及对缺书的回复和管理,利用图书类别管理,还可以增加和修改图书类别,但由于受到外键约束的作用,被使用过的图书类别不能删除。图书修改结果会同步在网站上更新,客户可以在第一时间浏览到最新的商品信息。订单管理功能模块管理员可以通过该模块实时对客户的订单进行处理。管理员可以对订单进行浏览、查询,可以管理订单的付款和发货。用户管理功能模块管理员可以通过该模块对客户信息进行查找、浏览和删除。管理人员权限分配功能模块后台管理应用程序对管理人员采用窗体身份验证方式和基于角色的授权,此模块用于对管理人员进行了角色分配,从而实现管理人员权限分配,基于角色的授权管理简化了权限分配工作。2.6系统解决方案项目构成为了用B/S模式的三层架构实现本电子商务系统的设计,本人用VisualStudio2008简体中文企业版设计了一个名为“BookShopOnNet”的电子商务系统解决方案,用C#语言在该解决方案中建立了五个项目,这五个项目的有机结合,构成了本电子商务系统。这五个项目分别和B/S设计模式的三层体系结构中的某个层或某个层中的一个子层相对应,每个项目都有各自独立的功能,在三层体系结构中扮演相应的角色。这样解决方案可以方便地管理各个应用程序。在解决方案中之所以设置若干个项目,是因为它更符合模块化程序设计的思想,便于在软件开发中进行分工协作,各项目小组各自独立创建并完成自己的项目,便于进行团体协作。同时这种设计思想也便于系统调试、维护、升级和集成。这些项目的名称和作用分别如下:BookShopModel项目:此项目对应于三层体系结构数据层的实体子层,此层中的每一个实体类,与数据库的一个基本表的结构相对应,不过,表中的外键字段,根据需要,要把大部分外键字段在实体类中设计成外键类。此项目进行编译后得到组件的程序集文件BookShopModel.dll。BookShopDAL项目:此项目对应三层体系结构的业务逻辑层的数据访问子层,在此项目中,把ADO.NET数据访问的四种形态,封装到DBHelper类的四个静态方法中,项目中其他类的方法,都是通过调用DBHelper类的四个静态方法来访问数据库。这样做是进一步进行代码复用,减少代码量,便于维护。BookShopBLL:13 此项目对应三层体系结构的业务逻辑层的功能业务逻辑子层,界面表示层的所有功能,都体现为这里类的方法,表示层调用这里类的方法完成其功能操作,这里的方法是调用BookShopDAL项目中相应的方法来完成对数据库的操作。WebSite项目:此项目对应三层体系结构的表示层,这个层就是系统应用的前台和后台,这个项目中的“Admin”子文件夹对应后台子系统,其他文件对应前台子系统。BankWebService项目:为了模拟电子网上支付时要用到的银行网关,在银行网关中进行支付时对银行卡号进行公钥加密,在系统中添加了此项目,该项目用WebService来虚拟模拟实现电子支付时的银行网关。实际编写电子商务系统时,不需要此项目,而是调用真正的银行网关接口。上述几个项目的抓图示意如下:图2-4解决方案项目构成图14 第三章数据层的设计与实现3.1数据库设计原则SQLServer数据库管理系统具有完备的大中型数据库管理系统的功能,充分运用它所提供的功能,可以保证系统的科学性、高效性、安全性、可靠性。数据库的设计要遵循以下一些原则:E-R图:首先用全局E-R图(实体关系图)对数据库进行概念设计,组织原始数据,实现全局数据规划。规划设计数据的主键、外键、唯一性、非空性、缺省值、域值等。主键:对每个数据库表定义主键(自动设置成聚簇索引并具备唯一性控制),通过指定表的主键,保证每一行的唯一性,进而实现实体完整性。参照完整性:参照完整性(又称引用完整性)定义主表与辅表之间的主键与外键的关系,保证辅表外键对主表主键具有从属关系的一致性。索引和查询策略:在对具有大数据集合的字段进行查询时,必须在此字段上设置索引,以保证查询的速度性能,从而对于绝大部分常用查询,能够加快查询速度,实现系统的性能要求。安全性:设置用户访问数据库系统的帐号和口令,然后根据电子商务系统中的实际需求,分配各用户对各数据库及其对象的权限,来实现数据库系统的安全性。视图:为了简化用户的操作,以及对数据库表进行一定程度的重构,也是为了对数据库表中部分数据进行保护,可以在数据库中设计了视图。视图可以屏蔽掉用户不该访问的数据库对象,实现一定程度的安全功能。存储过程:为了加快数据库服务器的运行,确保数据库的安全,可以考虑尽量使用存储过程,尽量少地直接使用SQL语句。事务处理:在系统中为了保证系统中数据的一致性,实现操作的原子性,避免数据操作的相互影响以达到操作的隔离性等,系统在对数据库进行非查询式的多表编辑操作时,以事务的方式进行操作。3.2数据库逻辑结构设计逻辑结构设计的任务是将概念设计阶段设计的E-R图转换为恰当的关系模型逻辑结构的过程,就是进行关系模式的设计。在转换过程中,最基本的要求是保证每个关系至少有一个码,每个属性都是不可分的数据项。在进行关系模式的设计时,一定要遵循关系模式的指导理论,每个关系都应满足一定的规范。本系统中我们要求满足第三范式(3NF),这样能使关系模式设计合理,达到减少数据冗余、提高查询效率的目的,同时还能满足数据的一致性、完整性要求。15 通过数据库逻辑设计,得到下列十个基本关系表。表中用户的口令都是以口令明文的Hash散列值形式存储的,以避免泄露口令,提高安生性。UserInfo(用户表):用来存储用户的详细信息,主键为用户序号UserId,另外还有用户名,口令,E_mail,用户姓名,性别,电话,家庭地址等字段。ManageUser(后台管理人员表):用来存储后台管理人员信息,主键为管理人员序号ManageUserId,另外还有管理人员用户名,口令,角色号,E_mail等字段。Book(图书信息表):用来存储图书信息,主键为图书序号BookId,还有图书类别序号,书名,作者,ISBN,译者,出版社,价格,折扣率,封面图片,简介,点击数,销量,库存量,是否缺货等,其中折扣率和是否缺货字段默认值都为1。BookType(图书类别表):用来存储图书类别,主键为图书类别序号BookTypeId,还有图书类别名,说明等字段。ShoppingCart(购物车表):用来存储购物车信息,主键为购物车序号ShoppingCartId,还有用户名或临时用户名,图书号,购买图书数量,购物日期(默认值为getdate())等字段。Orders(订单表表):用来存储订单信息,主键为订单序号OrderId,另外还有用户号,订单金额,订单日期,付款状态,发货状态,发货日期,收货地址,收货人,收货地址是否被签名,收货地址的用户数字签名值,用户公钥等字段。OrderDetails(订单细节表):用来存储订单细节信息,主键为订单细节序号OrderDetailsId,还有订单号,图书号,购买数量等。Comment(图书评论表):用来存储图书评论信息,主键为评论序号CommentId,还有图书号,用户名,Email,评论标题,评论内容,评论日期(默认值为getdate())等字段。LackRecord(缺书表):用来存储缺书信息,主键为缺书序号LackRecordId,还有用户号,书名,出版社,回复等字段。这九个表的关系图如图3-1:16 图3-1数据库表主外键约束关系图3.3数据库表结构设计以用户表UserInfo为例,其他表就不一一介绍了。图3-2表结构图3.4索引设计索引是根据数据表中一列或若干列按照一定顺序建立的列值与记录行之间的对应关系表,根据多个列组合创建的索引称为复合索引。在数据库系统中建立索引主要有以下作用:快速存取数据;保证数据的惟一性;实现表与表之间的参照完整性;在使用ORDERBY,GROUPBY子句时,索引可以加快排序和分组。17 按索引的组织方式,可将索引分为聚簇索引和非聚簇索引两类。1、聚簇索引聚簇索引将数据行的键值在表内排序并存储对应的数据记录,使得数据表物理顺序与索引顺序一致。SQLServer2000是按B树组织聚簇索引的,B树的叶结点存放数据页信息。一个表只能有一个聚簇索引。SQLServer2000中主键字段默认情况下自动创建为聚簇索引。2、非聚簇索引非聚簇索引是完全独立于数据行的结构。SQLServer2000也是按B树组织非聚簇索引的,与聚簇索引不同之处在于:B树的叶结点不存放数据页信息,而是存放非聚簇索引的键值,并且每个键值项都有指针指向包含该键值的数据行。对于非聚簇索引,表中的数据行不按非聚簇索引的次序存储。一个表能有若干个非聚簇索引。本系统中的索引设计:在本系统中,用户浏览网站时由于经常要按书名,ISBN,出版社,作者搜索书籍,经常要按图书类别分类显示图书,以及其他情况下要按某字段排序,还有经常要对两个表按主键-外键进行连接,所以在数据库中,都按主键建立了聚簇索引,对前面所列出的字段和外键都建立了非聚簇索引,以改善数据库系统性能,提高系统效率。但是表中索引数目太多,也会影响到性能甚至降低性能。如Update,Delete和Insert等,当进行这些操作时要对索引或表进行调整。所以本系统没创建SQLServer不常使用的索引,也没建立过多的索引,否则也会在数据更新时产生不必要的开销。3.5视图设计视图是从一个或几个基本表或视图导出的表,它是一个虚表,数据库中只存储视图的定义,并不存储视图所对应的数据,对视图的数据进行操作时,系统根据视图的定义去操作与视图相关的基本表。使用视图具有许多好处:当用户需要的数据分散在多个表中时,定义视图可以为用户集中数据,简化用户的数据查询和处理。视图可以使不同用户能以多种角度看待同一数据,重构数据库。可以屏蔽掉不愿让某些用户看到的机密信息。简化了用户权限的管理,授予用户使用视图的权限,尽量减少用户直接使用基本表,增强安全性。但是本系统中,由于在实体子层和数据访问层使用了外键类,因而本系统中,几乎没有使用视图,把视图可以实现的功能,在中间层通过外键实体类代替了。18 3.6存储过程设计数据库中的存储过程对应高级语言中的子程序,存储过程的内容是SQL语句,与高级语言的子程序一样,存储过程也有输入输出形参。在本系统进行数据层设计时,采用了存储过程,之所以使用存储过程,是因为:存储过程在服务器端运行,存储过程执行一次后,就被编译为二进制代码且驻留在高速缓冲存储器中,在以后的操作中,只需从高速缓冲中调用已编译好的二进制代码,提高了系统性能。而且存储过程中也便于使用事务处理。简化了用户权限分配,确保了数据库安全。用户分配权限时,可以尽量分配存储过程的执行权,少分配对基本表的权限。使用存储过程,可通过存储过程一次发送多个请求,避免数据库服务器和请求端的多次往返传输,减轻数据库服务器的负担。业务逻辑层对存储过程进行调用,可以在不改动或少改动业务逻辑层代码的情况下,对存储过程中的SQL语句进行修改、升级。为以后系统的维护和升级提高了极大的方便。使用存储过程也可以避免数据库SQL注入式攻击等,增强健壮性。3.7事务处理设计用户在电子商务网站上购物时,经常要向后台数据库写入各种数据,比如用户产生订单时,要向订单表和订单细节表同时写入数据,后台数据库也经常遇到这种情况,比如订单发货时,即要把订单发货状态改为已发货,同时又要把图书的销量增加,库存量减少。但我们知道,系统运行过程中,不可避免地会发生各种异常情况,从而导致后台数据库在更新过程中发生中断,导致数据的不一致性。如何解决这一问题呢?我的解决方法———事务对这一问题本系统采用的解决方法时引入事务处理功能。所有的数据更新处理过程都要保证其事务性,保证整个事务要么完全执行,要么不执行,当事务执行未完成,如果发生异常或出现错误而中断,系统回退到事务开始前的状态,这样就能保证数据的一致性。.NET环境下,事务分为基于存储过程事务和基于连接的事务。本系统主要采用存储过程事务,把事务放在存储过程之中。3.8数据库安全设计在一般的计算机系统中,安全措施是一级一级层层设置的,可以有以下的模型:19 用户标识和鉴别:是指在数据库服务器系统中为用户建立用户账号,只有正确输入了口令的合法用户才准许进行数据库服务器系统,防止非法用户进入。存取权限控制:是指为用户定义相应的权限,用户只能在权限允许的范围内进行操作。数据密码保护:是指对重要的敏感数据进行加密,以密文而非明文方式存储数据。本系统所进行的数据库安全设计:针对上述可采用的数据库安全策略,本系统采用了下述方法进行安全处理。针对前台进行网上购物的普通客户用户,在数据库服务器SQLServer2005系统中统一定义一个用户名叫BookUser的用户账号,给此用户账号分配对基本表、视图、存储过程的相应权限。普通客户用户都是通过ADO.NET以BookUser用户账号的身份对后台数据库进行连接并访问。针对后台管理人员用户,按照他们在数据管理中所处的角色,在数据库服务器SQLServer2005系统中分别定义了用户名为BookManager的用户账号,给这个用户账号按照在实际工作中的权限分配对基本表、视图、存储过程的相应权限。这些后台管理人员用户也通过ADO.NET以相应的用户账号的身份对后台数据库进行连接并访问。具体权限的分配这里不详述。另外,对系统中的敏感数据,我不是直接以明文方式进行保存,而是以用户密码散列值的方式保存,大大提高了安全性。由于客户订单的收货地址是极重要的,但可能发生客户订单的收货地址被黑客篡改,而使订单的商品发往篡改后地址而被黑客所窃取,所以在进行数据库表设计时,对订单表Orders增设了收货地址的“是否签名”字段、“数字签名值”字段和“客户公钥”字段。当用户希望对收货地址进行保护时,可对收货地址进行签名,并把签名值和客户公钥一同写入订单表Orders的相应字段,管理人员进行发货时,就可以利用“数字签名值”字段和“客户公钥”字段验证签名是否正确,从而保证客户收货地址的完整性,避免被篡改,提高了数据的安全性。20 第四章业务逻辑层设计与实现4.1设计规划软件开发要体现软件复用,便于以后进行升级和维护,构成软件的模块应当高内聚,模块间应当松耦合。遵循这一思想,在这个电子商务系统开发过程中,采用了组件技术。组件技术也是目前流行的编程思想。下面对组件技术进行简介。组件(Component)又称构件,是封装特定功能,提供透明服务、可重用的软件模块。组件是对数据和方法的简单封装,组件有时被认为是类库的同义词,类有自己的属性和方法。类的属性是用set或get访问器来定义的,类的方法可用类的成员函数(或用static修饰的静态成员函数)来定义的。应用程序就是由多个这样的组件类打包而成的,在需要对应用程序进行修改或改进时,只需将构成此应用程序中的某些组件用新版本的组件替换即可。应用组件的思想进行系统开发的优越之处我归纳为以下两点:(1)便于软件的复用和升级:组件技术提高了代码的复用率和系统的模块化程度,组件化的思想从一开始提出就是为了可复用性,就是为便于软件的升级和更新。(2)快速应用程序开发:组件最引人注目的优点之一是快速应用程序开发。开发人员从组件库中取出所需的组件,并将它们快速地组装到一起,以构造所需的应用程序。目前软件行业出现了两种主要的组件技术:Microsoft的.NET技术、SUN的EJB技术。Microsoft的.NET思想先进,技术成熟,开发方便,深受众多开发人员的青睐。业务逻辑层,也叫中间层或组件层,对应文件的扩展名一般是为.dll。在.NET的三层架构中,前端用户层为HTML,ASP.NET等网页,中间层为用C#语言编写的组件,后端数据层为数据库管理系统。表示层通过中间层来连接以及操作数据层,给中间层传递参数,并接收中间层返回的结果。在以前的WindowsDNA平台上,组件的使用需要安装,安装时注册注册表,注册后又要重启动,非常麻烦。而在.NET平台上,微软做了很大的改进,应用程序的部署采用Xcopy方式,这样组件拷贝后即可使用,不用考虑注册的问题,也就不存在重启动的问题,即插即用,是一种绿色软件。在业务逻辑层设计时,采用了组件设计的思想。在本系统规划时,在解决方案中共设计了四个项目,把业务逻辑层作为解决方案中两个单独的组件项目,项目名分别为BookShopDAL和BookShopBLL,这两个项目分别是业务逻辑层21 的两个子层。需要使用该组件项目的,只需对此组件项目添加一个引用即可。以后对组件进行升级和更新后,只需重新编译此组件项目,其他使用该组件的项目只需对此组件项目重新刷新引用即可。业务逻辑层要对数据层进行访问,这自然就涉及到对数据库的访问,在归纳了本系统中ADO.NET对数据库访问的几种形态后,设计了一个SQLDbHelper数据访问类,专门进行数据访问处理,其他的类进行数据访问时,只需调用其方法即可。SQLDbHelper数据访问类设计:为减少代码的编写量,也为了便于维护,在BookShopDAL数据访问子层项目中,设计了一个SQLDbHelper数据访问类,专门负责ADO.NET数据访问。由于这个类的方法和使用的连接对象使用频繁,把它们都做成静态static成员,整个类也设计成表态类,这样它就常驻内存,无需反复实例化,从而提高系统的运行效率。4.2类的设计和业务功能的提取按照面向对象的设计思想,对网上书店的业务进行分析后,将整个逻辑抽象为几个类,所有的业务操作被附加到这些类中,以类的方法的形态来实现。这些类设计好以后,就可以供表示层的应用程序调用。下面只介绍数据访问子层中设计的几个类。在这些类的定义中,用get和set访问器自定义组件属性,用成员函数定义组件的方法,因为是用C#语言编写的,所以文件的扩展名是.cs。这此类及类中主要方法的功能简介如下:BookDAL类的Book_GetList方法返回所有图书的信息;Book_GetTop10ListBySales方法获取销售排行榜前十位信息;Book_Add方法用于上传新书信息到数据库中;Book_DeleteById方法用于按书号BookId删除图书;Book_GetTop10NewBookList方法用于获取新书前十位;Book_GetModelById方法以实体类的方式获取指定的图书详细信息;Book_SearchList方法用于搜索图书。Book_UpdateById方法用于更新图书。上述方法的参数多以实体类的形态,返回结果一般是实体类或实体类泛型数组。BookTypeDAL类的BookType_GetList方法用于获取图书类别;BookType_Add方法用于增加图书类别;BookType_DeleteById方法用于删除图书类别;BookType_UpdateById方法用于更新图书类别。CommentDAL类的Comment_GetListByBookId方法返回数据库中关于某种图书的所有评论信息;Comment_Add方法可以让用户添加对某种图书的评论。Functions类主要用于对字符串进行Hash散列,其GetHashOfMD5Format方法用于将一个字符串用MD5算法散列进行散列,得到一个散列字符串;其GetHashOfSHA1Format方法用于将一个字符串用SHA1算法散列进行散列,得到一个散列字符串。22 ShoppingCart类可以在数据库存储的购书车中添加、删除、更新和购买图书,它是系统中非常重要的一个组件。ShoppingCart类的ShoppingCart_GetListByShopUserId方法用于获取某一用户购书车内所有图书的清单;ShoppingCart_Add方法用于添加一种图书到购书车中;ShoppingCart_UpdateById方法更新当前购书车中某种图书的数量;ShoppingCart_DeleteById方法将购书车中某种用户不想购买的图书删除掉;ShoppingCart_SumByShopUserId返回当前用户购书车内所有图书的总的类别数目;ShoppingCart_TotalMoneyByShopUserId方法计算当前购书车中所有图书的总金额;ShoppingCart_ClearByShopUserId方法将当前购书车内的所有图书信息全部清空。ManageUserDAL类可以添加、删除、更新和查询用户,并进行用户登录验证。ManageUser_Add方法用于插入一条新的客户用户记录到数据库;ManageUser_ChangePassword方法用于用户进行口令更改;ManageUser_DeleteById用于删除用户;ManageUser_Login方法,通过与数据库中的用户记录对比来验证用户的身份进行登录;ManageUser_GetRolesByManageUserNameAndPwd方法用于获取管理员用户的角色;ManageUser_GetModelById方法以实体类返回指定用户的所有信息;ManageUser_UpdateById方法用于更新用户信息;ManageUser_UpdateRolesById方法用于更新管理员角色。UserDAL类可以添加、删除、更新和查询用户,并进行用户登录验证,其方法与类ManageUserDAL相似,不再详述。OrdersDAL.cs文件中包含了OrdersDAL和OrderDetailsDAL两个类的定义。OrderDetailsDAL类只有一个OrdersDetails_GetOrderDetailsByOrderId方法,它是根据订单号获取订单详情实体类泛型数组。OrdersDAL类的Orders_GetAllOrdersListByUserId方法用于显示指定用户所有订单清单;Orders_GetModelById方法返回一个指定订单的订单详情;Orders_CreateOrderToOrdersAndOrderDetails方法把订单写入数据库的订单表和订单细节表中;Orders_CreateOrderWithSignToOrdersAndOrderDetails方法把订单写入数据库的订单表和订单细节表的同时,把订单收货地址的数字签名也写入订单表的相应字段中;Orders_DealPaymentStatusForGoods方法用于对订单进行付款处理;Orders_DealCarryGoodsStatusForGoods方法用于对订单进行发货处理并更新销售量;Orders_DeleteOrderByOrderId方法用于删除订单等,其他方法的功能这里就不介绍了。4.3代码设计在每个方法中都使用了语句:try....catch......finally.....,使用这种语句在try子句中执行操作,在catch子句中捕捉try子句执行中的异常现象,在finally子句中对资源进行了释放。这种语句比以往任何语言中的错误捕捉语句的功能都强大,并增加了在finally子句中对资源进行释放的可选子句。数据访问子层中,每个通过ADO.NET访问数据库的类,都是通过调用23 SQLDbHelper类的相应方法来操作数据库的。并以整型、实体类或实体泛型数组的相应的形式返回结果。当需要传递较多数据到方法中时,一般都把数据包装成实体类,以实体类的形式做为参数。业务逻辑子层,一般是对数据访问子层的类进行进一步封装。24 第五章表示层设计与实现本网站分为前台客户子系统和后台管理子系统。表示层页面通过业务逻辑层的组件,来操作数据库,实现相应的功能。本系统开发过程中,设计了三十多Web页面,本章只对其中一部分有代表性的Web页面的设计思想和实现方法进行介绍。下面首先来介绍一下本系统开发时用户界面设计的方法。用户界面的设计工作主要就是静态HTML和ASP.NET服务器控件的布局和外观设计,利用VisualStudio.NET集成开发环境可以非常方便地进行设计。对于系统的界面设计,采用了目前流行的CSS+DIV设计,并且把CSS做成外部样式,使用时链接进去,外部样式便于复用,格式统一,便于以后的调整。用DIV进行布局,比以前的TABLE方式,功能更强大,界面更美化,操作更灵活。界面美化设计总结如下:菜单设计:利用CSS+HTML来实现,具体的CSS代码,放置于一个外部样式文件menu.css中,这样做复用性强,以后便于维护,代码简洁。超链接效果设计:超链接效果设计全部用CSS来实现,并且把CSS效果做成外部样式文件,没有使用内置CSS样式,外部CSS样式文件为:hyperlink.css,这样做,若以后想更换超链接效果,只需更新hyperlink.css中样式即可,体现组件化思想。界面框架布局采用DIV,网页内局部的布局,可以使用TABLE,框架布局使用DIV时,所使用的外部样式文件为StyleSheet.css。5.1服务器端用户控件和母板设计服务器端用户控件技术,是一种将代码和内容分离、实现代码重用的新技术。不仅可以重用代码,还可以重用用户界面。Web动态网页设计中,一般把导航条部分和各个页面都重复的部分做成用户控件,然后在各个页面中引用用户控件。可以使用Web服务器端控件甚至第三方控件,包装出可重用的自定义用户控件。控件的开发者可以将内部的实现隐藏起来,只暴露出必要的属性、方法和事件,而控件的使用者只需和控件的有限的几个属性、方法和事件打交道。另外对网页中的公共部分,采用母板技术,把公共部分做到母板,各网页只需关注非公共部分的开发。本系统中所开发的用户控件:本人以为,软件开发就要体现软件复用,便于以后进行升级和维护,构成软件的模块应当高内聚,模块间应当松耦合。遵循这一思想,本电子商务系统的前台子系统和后台管理子系统都使用了用户控件,所使用的几个用户控件设25 计如下:top.ascx用户控件,它包含几个导航按钮,分别是首页、购物车、用户订单记录、搜索、缺书报告、后台管理等几个超链接控件。top.ascx用户控件会出现在整个前台子系统每个页面的顶部的导航部分,它的代码比较简单,主要是几个相关的链接,在此不详述。Managetop.ascx用户控件:它包含几个导航按钮,分别是首页、图书入库、图书管理、图书种类管理、缺书管理、订单付款管理、订单发货管理、客户管理、管理员角色分配、管理员注册和退出等几个超链接控件,此用户控件会出现在整个后台子系统每个页面的顶部的导航部分。leftType和LoginRegist.ascx用户控件:它出现在前台子系统每个页面的左侧,含有客户登录和退出、注册、更改信息、更改密码、以及在下方显示图书种类和最新十大畅销书。此用户控件在显示图书种类和最新十大畅销书时,采用GridView控件来实现,由于此用户控件在前台每个页面都出现,为了提高系统的性能和效率,GridView控件的数据源DataSource,首先设定为高速缓存Cache中相应项,当Cache中没有相应项时,才从后台数据库中提取数据,并把此数据填入Cache中。限于篇幅这里就不附HTML代码和后台编码了。有关高速缓存Cache的内容在首页设计中详述。5.2前台子系统设计在前台,用户可以登录,注册,更新用户信息;可以浏览商品,搜索商品,购买商品,查看商品的评论,会员用户还可以对商品发表评论以及登记所缺的商品;前台网站还进行新商品宣传展示,热销商品推荐。下面介绍一下部分页网的设计5.2.1前台子系统客户登录设计客户通过注册把用户名、口令、E_mail、姓名、地址、性别、电话等信息写入后台数据库的UserInfo表中,其中口令以MD5散列值存放,用户注册等页面使用了验证控件。在电子商务系统中,安全是很重要的,其中敏感数据的保密尤显重要。我认为:把敏感数据以其散列值的形式保存在数据库中才是比较安全的。所以在业务逻辑层,设计了一个类“Function”,它有两个方法:GetHashOfMD5Format(stringstr)和GetHashOfSHA1Format(stringstr),这两个方法用于将字符串str用MD5或SHA1算法进行散列,得到一个散列值。在本系统中,采用的是MD5散列法。在表示层的用户注册和登录等模块中,对用户密码,用“Function”类的GetHashOfMD5Format(stringstr)方法进行散列,来保护敏感数据。登录的过程就是拿登录时输入的用户名和口令与后台数据库ShopUserInfo表中相应记录的用户名和口令相比较,若匹配就是合法用户,成功登录,否则登录不成功。26 那么,前台子系统中,如何表示用户是否登录?登录后用户信息存放在哪里?本系统是这样实现的:会话对象Session的生存期就是一个用户浏览一个站点的全部时间,所以在前台子系统设计时,采用了会话对象Session,用它来保存登录用户信息。当用户成功登录后,把用户号UserID和用户名UserName等信息以用户实体类方式存入会话对象Session的Session["userModel"]中,以后此用户购物及发表书评时,就使用Session["userModel"]中存储的用户号和用户名来标记此用户。当Session中没有这个元素时,说明用户未登录,是游客,当游客访问结账等禁止匿名用户访问的网页时,拒绝访问这些页面,并重定向到“错误页”并提示用户尚未登录。下面对会话对象Session进行简介:会话对象Session:会话可以看着一个用户浏览一个站点的全部时间。Session是局部的,当用户与一个Web服务器建立连接时,他就在此Web服务器上建立了一个Session,每个用户各有各自的Session,Session在ASP.NET应用程序中专用于为每个用户进行数据存储。其生存周期从用浏览器打开一个站点一直到关闭此站点的全部时间。由于用户信息存储在Session,所以不需要用户在浏览当前站点的每个页面时都进行登录。只要会话处于激活状态,站点中的任何页面都可以访问会话键/值对中存储的信息。用户关闭此站点后,会话对象Session被释放,其中存储的所有信息相应地也丢失。另外,若用户未登录时就已购物,其所购商品是放在临时购物车中的,当用户登录时,还要把商品从临时购物车中转到自己的购物车上来。5.2.2网站首页设计首页非常重要,用户通过首页应当能到达网站的任何地方。首页是用户访问的第一个页面,它给用户对网站的第一印象,一个好的首页可以引起用户的极大兴趣,因此,设计一个友好的首页非常重要。我认为设计网站首页应遵循以下原则:1、要有各功能的链接,如注册、登录、用户信息、搜索图书、购书及查看购书车等。2、首页应尽量简洁,不要有太多内容;要有图书的分类链接,便于用户查找图书商品;要有最近新书推荐;另外还要有销售排行榜,提高用户的购买欲望。3、首页的运行速度要快,首页尽量是静态的,或者引入缓存,以便提高运行速度。图5-1就是本电子商务系统的首页,下面简要介绍一下其设计:27 图5-1首页效果图首页的上部和左部是使用用户控件设计的,上部的用户控件是由若干个超级链接标准控件组成的,是静态的元素;左侧下方是图书分类和畅销书,它们是用GridView控件构成的。当用户在网站上浏览信息时,在一定的时间内图书分类和畅销书的信息是不会变化的,为了提高系统的速度性能,系统中采用把它的数据源设为首先从高速缓存Cache中提取,当高速缓存Cache中没有相应项时才从后台数据库中提取,并把相应数据填入Cache中。高速缓存Cache:Cache是ASP.NET中一个对象,它能以“键/值”对形式存储任何对象,与Application对象一样,也是位于服务器端,但Application的生命周期与Web应用程序的生命周期相同,存储在Application的“键/值”中的内容在移除或替换之前是不会自动释放的。而Cache中存储的“键/值”对是一个易失项,这些“键/值”对,一则可以与外部的对象建立依赖关系,当外部的对象改变或消亡时,相应的“键/值”对就自动释放;二则可以设定“键/值”对的过期时间,当过了一定时间,相应的“键/值”对就自动释放。高速缓存Cache即是一个提高系统运行速度的工具,也是一个存储应用程序数据的方式。只要发现要频繁访问不经常发生变化的数据,就应在Cache对象中高速缓存它,提高系统的运行性能。高速缓存Cache存在于Web服务器中,所以也不能设置过多,以免占用过多的服务器内存,并且要恰当地设置Cache28 项的到期策略。首页中的“最新书籍”和“最新书评”是用GridView控件制作的,其GridView主要就是由一个超级链接列构成,并设定了相应超级链接的URL。“点击排行榜”是用GridView控件制作的,其布局采用模板来控制,由于前两个组成部分即时更新的要求不是很高,所以为了加快运行速度,采用了Cache。设定Cache中相应“键/值”对的过期时间为绝对时间3分钟,没有设定依赖关系(设为null)。5.2.3购物车、订单及结账页面设计5.2.3.1购物车功能设计作为电子商务系统中的购物车,它必须具有下述功能:一是帮助用户选购商品并立即计算购物车中商品的金额;二是用户可以随时查看购书车,更新购书车中商品数量以及增减商品;三是在用户购物过程中出现异常时,重新登录该网站后,原来的购物应仍然存在,完成购物、结账并产生订单后,购物车中内容应能自动清除。本系统的购物车,是这样设计的:在BookShopOnNet数据库中,设计一个购物车数据表ShoppingCart,当用户购买一种商品后,就向此表中写入相应含有用户号的记录,当用户结账时,把此表中该用户的所有购物记录以一个订单的形式分别写入订单表Orders和订单细节表OrderDetails中,同时从ShoppingCart表中删除该用户的所有相应记录,等等。为了实现购物车功能,设计了购物车类ShoppingCartDAL,在购物车类ShoppingCartDAL中设计了七个方法,这些方法调用数据层的相应存储过程,这七个方法如下:ShoppingCart_GetListByShopUserId(ShopUserId)获取购物车图书列表。ShoppingCart_Add(UserId,BookId,Quantity)添加图书到购物车。ShoppingCart_UpdateById(ShopingCartRecordId,Quantity)更新用户购买数量。ShoppingCart_DeleteById(ShopingCartRecordId)移除购物车上某种图书。ShoppingCart_TotalMoneyByShopUserId(ShopUserId)返回购物车中图书总金额。ShoppingCart_SumByShopUserId(ShopUserId)计算购物车中图书总数。ShoppingCart_ClearByShopUserId(ShopUserId)移除购物车上的图书。这里的是购物车号,在用户已登录时,购物车号CartID的值就使用用户号UserID值,未登录时CartID是临时购物车号,是一个用Guid产生的随机数。5.2.3.2购物车页面设计图书详情显示页面ShowBook.aspx用来显示图书的详细信息。该页面中有一个“放入购物车”的链接按钮(LinkButton),当该链接按钮被单击后,图书会29 被添加到购物车中。所购买图书的书号BookId是通过URL中相应的参数传递到页面中。为了完善购物车的功能,在ShoppingCart.aspx页面显示购物车内容的GridView控件中,加入了修改商品数量的“编辑”按钮和移除某商品的“删除”按钮,以及“清空购物车”和“结账”等按钮。修改商品数量是用购物车类的方法ShoppingCartUpdate()来完成,移除某商品是用购物车类的方法ShoppingCartRemoveItem()来完成,清空购物车是用购物车类的方法ShoppingCartEmpty()来完成。ShoppingCart.aspx页面运行时的效果如图5-2如示:图5-2购物车界面效果图5.2.3.3订单及结账页面设计在ShoppingCart.aspx页面单击“结账”进入CheckOut.aspx结账页面。结账页面不允许未登录用户浏览,若未登录用户访问它,就会弹出消息框被重定向到首页的登录中。在结账页面,首先显示欢迎用户在本站进行购物,并显示用户的信息,然后把当前购物车的明细情况以及购物总金额以只读方式再次显示出来。收货地址文本框中,默认显示的是用户在本站注册时的地址,可以在此文本框中重新输入收货地址。为了防止黑客拦截信息并修改收货地址,在结账页用户可以选择是否对收货地址进行数据签名,若进行数据签名,可以导入用户私钥并进行签名,同时导入公钥以便把公钥内容传入订单表Orders中相应字段,以备电子商务系统后台管理人员使用此公钥进行验证签名,导入公/私钥采用FileUpload控件。若不选进行数字签名,则数字签名相关的控件不会显示出来。接着选择付款方式,最后单击“提交订单”,产生订单,把此订单的信息分别写入订单表Orders和订单细节表OrdersDetail中。接着进入PaymentForOrder.aspx付款页面,调用付款页面的代码为:Response.Redirect("PaymentForOrder.aspx?orderId="+orderID.ToString()+"&"+"PaymentMethod="+paymentMethod.ToString()+"&"+"orderMoney="+sumMoney.To30 String());在上述页面间传递数据,采用的是利用URL参数在页面间传递信息。进入付款页面时,利用URL中的参数把需要的订单号orderID、选择的付款方式paymentMethod、订单总金额orderMoney等数据传入付款页的。付款可以使用邮局汇款,也可以进入银行网关,进行网上支付。由于现在没有一个现实的银行网关,所以本系统用Web服务模拟了一个虚拟银行网关进行网上支付。虚拟支付时对银行卡号进行RSA公钥加密。关于网上支付中的加密和数字签名,在第六章中详细介绍。结账页面CheckOut.aspx运行时的界面如图5-3所示。图5-3结账页面从CheckOut.aspx页面中单击“提交订单”进入PaymentForOrder.aspx付款页时,利用了URL中的参数把订单号orderID,付款方式paymentMethod和订单金额orderMoney传入到付款页。在付款页,首先显示订单号和订单金额,然后根据URL中传递进来的参数paymentMethod中携带的付款方式信息,确定在付款页PaymentForOrder.aspx中是显示邮局汇款相关控件还是显示模拟的银行网关网上支付的相关控件。若是采用邮局汇款,相关控件上会显示汇款地址和收款人,并提示在汇款单的附言处写上订单号和用户名。若是模拟的银行网关网上支付方式,会提示输入卡号和密码,并要求导入银行网关的公钥,以便用公钥对输入的卡号进行加密。单击“网上支付提交”则支付成功,这时系统显示一个消息框,可以看到支付结果。同时就把此订单的付款状态改为“已付款”,单击“查看此订单详情”可看到包含付款状态的订单详细情况,加密的实现及31 该页面的后台代码放在第六章研究。PaymentForOrder.aspx页面运行时的界面如图5-4所示。图5-4模拟虚拟网上支付界面5.3后台子系统设计后台子系统供电子商务公司内部管理人员使用,可以进行新品上传,商品修改和调整,商品种类维护,所缺商品管理及回复。可以对用户进行管理,对用户的订单进行管理,管理订单的付款和订单的发货,以及对后台管理人员权限的分配等等。后台子系统的设计方法与前台没有多大区别。但后后台子系统的权限管理比较复杂,一个公司内部,人员是有分工的,不同的人员有不同的权限,只能处理自己份内的事情。所以后台管理子系统设计这一部分,本文只就后台管理人员权限管理这部分进行论述。在解决方案中本人把后台子系统单独做在一个单独的文件夹Admin中。基于窗体的身份验证和基于角色的授权的观点的提出:电子商务公司的员工,人员众多,但人员是有分工的,不同岗位的人员有不同的权限,只能处理自己份内的事情。在第二章本人讲过,本系统后台功能模块分为“图书管理”,“客户管理”,“订单管理”(又细分为订单付款管理和订单发货管理),“管理人员权限分配”等模块,从中分析后得出结论,后台人员按岗位是分为几大类的。如果以每个人员为单位分配权限,则系统工作量太大,32 而且管理人员经常变更岗位,增加人员,减少人员,很难进行有效的权限管理。为便于管理,本系统把后台管理人员按岗位分为四种角色:图书管理、用户管理、订单付款管理、订单发货管理。所以本人提出在后台子系统中,采用基于窗体的身份验证和基于角色的授权。下面对后台管理子系统的基于窗体的身份验证和基于角色的授权进行介绍。首先对其中用到的两个文件Global.asax和Web.Config进行简介:5.3.1ASP.NET全局应用程序文件Global.asax全局应用程序文件Global.asax文件是ASP.NET为每个Web应用程序支持的全局文件,它是可选的,用作Web应用程序中全局事件,对象或变量的实现地点。它包含应用程序级别事件的代码,这些事件代码不是用来响应具体的某个页面的请求,它是用来处理应用程序级别的通用事件。一个Web站点可以包含若干个Web应用程序,在站点中创建应用程序是在IIS管理控制台中进行的。Global.asax文件驻留在ASP.NET应用程序的根目录中。Global.asax文件本身被配置为自动拒绝对它的任何直接URL请求,外部用户无法下载或查看在该文件中编写的代码。Global.asax中定义了十八个应用程序事件,很多情况下引入这些事件可以大大简化处理。如使用下面前四个就可以统计网站在线人数,使用1和3可以统计网站总访问人次,后两个在本系统基于角色的授权中有用等。下面简介部分事件如下:Application_Start:ASP.NET应用程序第一次启动时引发。Application_end:ASP.NET应用程序结束时引发。Session_Start:会话开始时引发此事件,在这里是设置会话级变量的最好地方。Session_end:会话结束时引发此事件。Application_BeginRequest:在每个Web请求开始时引发。Application_EndRequest:在每个Web请求结束时引发。Application_AuthenticateRequest:在ASP.NET对请求执行身份认证时引发。在身份验证时可以使用它。本系统用到此事件,它从身份验证Cookie中的身份验证票证中提取角色填充当前安全上下文GenericPrincipal,再填充Context.User,基于角色的授权开始。Application_AuthorizeRequest:在ASP.NET对一个请求授予资源的访问权限时引发。5.3.2ASP.NET应用程序配置文件Web.Config与ASP不同,ASP.NET提供了强大的应用程序配置机制,可帮助开发人员轻松快速地建立自己的Web应用环境。ASP.NET提供的配置系统是一个层次配33 置架构,整个.NET系统只有一个叫machine.config的机器配置文件,但可能有许多个应用程序配置文件Web.Config。machine.config中的配置对整个机器系统中所有.NET应用程序都有效,而Web.Config包含特定的Web应用程序的配置信息,并且可以重写machine.config中定义的默认配置,为每个应用程序提供定制的应用程序环境。Web.Config决定了所在目录及其子目录的配置,并且子目录下Web.Config的配置信息覆盖其父目录的配置。配置文件以纯文本格式存储为XML文档,这种格式易读易改,而且在ASP.NET应用程序运行期间修改了配置文件后,新的设置马上生效,不用重启Web服务器。配置文件本身被配置为自动拒绝对它的任何直接URL请求,外部用户无法下载或查看在该文件中编写的代码。配置文件是文本格式XML文档,它的根元素总为,所有配置都位于其中。配置文件分为两大部分:一部分是位于配置文件顶部元素之间的配置节处理程序声明部分,不过标准配置处理程序声明在machine.config中声明一次后,在Web.Config中就不用声明了。只有machine.config中没有的自定义配置节在Web.Config才需要声明。另一部分是配置节区域定义。它位于元素之后,包含实际的配置设置。下面是基于窗体的身份验证和基于角色的授权中用到的部分标准配置节::设置应用程序的身份验证策略。:设置应用程序的授权策略。:将配置设置应用到当前配置文件下的特定子目录5.3.3基于窗体的身份验证和基于角色的授权5.3.3.1基于窗体身份验证的工作原理Forms身份验证也称为基于Cookie的身份验证,它的主要思想是当向拒绝匿名访问并且采用“Forms”身份验证方式的ASP.NET应用程序的资源发出请求时,ASP.NET的“FormAuthenticationModule”模块利用重定向功能将客户端发送的未经过验证的请求重定向到登录页面,原始请求的URL被保存为URL参数以便以后使用,用户在该页上提交用户凭据,如果该凭据被验证,就会创建一个“身份验证票证”(FormsAuthenticationTicket),身份验证票证中含有加密了的用户资料,这个票证被写入cookie并发送到客户端,然后被重定向到用户原始请求的页上。当用户在同一个会话(Session)中再次请求受限访问页时,请求头中将包含带有身份验证票证的Cookie以便再次验证和授权。具体流程见图5-5。34 图5-5基于窗体身份验证的工作原理5.3.3.2访问授权身份验证后确定了用户的身份,还要由授权处理模块决定此用户是否有权访问特定资源。授权分为“文件授权”和“URL授权”。而每种授权方式又分为基于用户的授权和基于角色的授权。基于角色的授权可以大大简化授权的工作量。文件授权:文件授权由FileAuthorizationModule执行,是通过Windows操作系统的访问控制列表(ACL)控制用户或组对文件或文件夹的访问权限来实现的,Windows身份验证方式下对用户或角色(组)的授权就是通过文件授权来实现的,文件授权在窗体身份验证和Passport(护照)身份验证下不起作用。实现文件授权方式时,文件系统必须配置为NTFS格式,在FAT32格式下不能实现ACL。URL授权:URL授权由URLAuthorizationModule结合web.config来实现。为URL授权配置web.config文件是在web.config文件的authorization元素中实现的。在URL授权方式下,还可以使用来对当前Web应用程序下特定的文件或文件夹单独进行URL授权权限的叠加计算:文件授权方式下,对文件的权限优先于其所属的文件夹的权限。URL授权方式下,deny权限优先于allow权限。对用户(users)的授权优先于角色(roles)5.3.3.3后台管理子系统Web.Config的配置后台管理子系统Web应用程序Web.Config的配置,采用窗体身份验证,当验证通不过时,重定向到login.aspx,基于角色的授权主要体现在元素上。通过使用来对当前Web应用程序下特定的文件或文件夹单独进行URL授权,允许某些角色用户访问,禁止某些角色用户访问。35 5.3.3.4基于窗体的身份验证和基于角色的授权的实现窗体身份验证中基于角色的授权的实现原理基于用户的授权使授权工作量很大,要支持基于角色的授权,必须把用户的角色信息编程加入到身份验证票中去。为了实现基于角色的授权,在管理人员用户表ManageUser中,增设了“Roles”字段,用来保存用户的角色。在后台子系统的登录页面,从数据库中提取用户的角色,然后按角色进行授权。不管是哪一种身份验证模式,登录到Web应用程序的已被验证的用户根据他们的凭证都被授予了Principal和Identity。Principal对象表示用户当前安全上下文,包括用户的标识和他所属的角色,其Identity属性获取当前Principal对象的Identity,其IsInRole(stringrolename)方法判断当前Principal对象是否属于指定的角色;Identity对象表示当前用户,其Name属性获取用户名,IsAuthenticated属性判断是否验证过。IPrincipal接口定义了Principal对象的基本结构和功能,IIdentity接口定义了Identity对象的基本结构和功能。在.NETFramework中,IIdentity接口根据验证方式,被实现为下面四个对象:WindowsIdentity,FormsIdentity,PassportIdentity,GenericIdentity。IPrincipal接口被实现为两个对象:WindowsPrincipal和GenericPrincipal,前者用于Windows身份验证,后者用于Windows之外的身份验证。窗体身份验证使用GenericPrincipal,虽然它是验证时自动产生的,但自动产生时它只包含用户从客户端输入的用户名,不含用户所属的角色,不能基于角色授权。GenericPrincipal类的构造函数有两个参数:针对用户的GenericIdentity对象和一个表示用户所处角色的字符串数组。我们可以在代码中自己创建含角色信息的GenericPrincipal,并把它赋给HttpContext.Current.User属性,用来表示当前请求用户的安全上下文,就可以实现基于角色的授权。后台子系统登录窗体的设计:在后台子系统Web应用程序中添加一个登录页面login.aspx,在其中添加一些控件和一些输入验证控件,最主要是加入两个文本框和一个登录按钮,其ID分别为“txtUsername”,“txtPassword”和“btnLogin”。在后台编码文件login.aspx.cs中添加如下语句:“usingSystem.Web.Security;”。登录按钮的单击事件中,首先进行登录验证,登录成功后从数据库中提取用户的角色,并创建一个含有用户角色信息的身份验证票,然后创建一个Cookie,把加密后的身份验证票加入到此Cookie中,网页重定向到用户最初请求的页面处。根据图5-5所示的身份验证原理,以后该用户附加了此Cookie的请求头中就含有用户的角色信息,以后的请求是自动验证的。全局应用程序文件Global.asax中身份认证事件的编写每当用户通过身份验证后,要从身份验证Cookie中的身份验证票证中提取36 角色填充当前安全上下文对象GenericPrincipal,再用它填充具体的安全上下文Context.User,这样基于角色的授权才开始,基于角色的授权配置参见Web.config。那么上述操作在什么地方实现合适呢?在本系统中,采用global.asax文件中的Application_AuthenticationRequest事件来实现提取角色填充Context.User,该事件在整个Web应用程序内每次请求验证身份时都会触发。37 第六章电子商务系统的安全实现电子商务的关键是要保证商务活动过程中系统的安全性,即应保证在向基于Internet的电子交易转变的过程中与传统交易的方式一样安全可靠。安全问题是电子商务推广过程中最大的障碍。目前,电子商务的安全主要采用数据加密技术、安全认证技术和安全认证协议。数据加密技术是一种主动的信息安全防范措施,其原理是利用一定的加密算法,将明文转换成为无意义的密文,阻止非法用户理解原始数据,从而确保数据的保密性。数据加密又分为单向加密和双向加密。单向加密就是对明文进行Hash散列,双向加密又分为对称密钥加密体制和非对称密钥加密体制。安全认证技术的主要作用是进行信息认证。信息认证的目的为:确认信息发送者的身份以及验证信息的完整性,即确认信息在传送或存储过程中未被篡改过。常用的安全认证技术主要有数字摘要、数字信封、数字签名、数字时间戳、数字证书等。其中数字证书,就是用电子手段来证实一个用户的身份及用户对网络资源的访问权限,是用来唯一确认安全电子商务交易双方身份的工具。目前电子商务中有两种安全认证协议被广泛使用,即安全套接层协议SSL(SecureSocketsLayer)和安全电子交易协议SET(SecureElectronicTransaction)6.1安全认证协议6.1.1SSL(安全套接层)协议SSL协议支持两台计算机间的安全连接,刚开始,SSL在客户机和服务器之间提供一个安全的握手信号,这时双方交换数字证书。每个计算机都要正确识别对方。如果客户机没有证书,也没关系,因为客户机是发送敏感信息的一方。而之交易的服务器应有一个有效的证书,否则客户机就无法确认这个商务网站是否与其声称的身份相符。确认完成后,SSL对在这两台计算机之间传输的所有信息进行加密和解密。在SSL对所有通信都加密后,窃听者得到的是无法识别的信息。由于SSL处在Internet协议集传输层之上,除HTTP外,SSL还可对为FTP会话及Telnet会话等提供安全保护。实现SSL的协议是HTTP的安全版,名为HTTPS。在URL前用HTTPS协议就意味着要和服务器之间建立一个安全的连接。你可根据InternetExplorer浏览器状态条上锁头的开关来判别的浏览器是否进入了SSL会话。38 6.1.2SET(安全电子交易)协议SET(安全电子交易)协议是一个通过开放网络进行安全资金支付的技术标准。这是一个为Internet上用户、商家和银行之间进行在线交易而设立的一个开放的、以电子货币为基础的电子支付规范。SET协议要保证支付信息的机密、支付过程的完整、商家及持卡人的合法身份以及可操作性。SET协议的核心技术主要有公开密钥、数字签名、数字信封、数字证书等。SET协议保证了电子交易的机密性、数据完整性、身份的合法性和不可否认性。下面对SET(安全电子交易)协议中几个概念进行简要解释。数字证书:数字证书类似于生活中的身份证,用以在网络上鉴别一个人或组织的真实身份。其内容包括证书持有人的信息、持有人的公钥以及CA认证机构对证书持有人和他的公开密钥等信息的数字签名等三个部分。数字证书己被广泛应用于金融、保险、证券等领域的客户信息的安全加密,现阶段数字证书采用的加密技术较多的是RSA非对称加密算法。数字证书的颁发机构叫做CA。数字证书的格式遵循X.509国际标准。CA认证机构:CA认证机构便是目前国际上普遍使用的解决方案,所谓的CA(CertificationAuthority)认证中心是由政府授权负责制作、签发和管理数字证书的权威机构。它负责签发管理符合国际电子商务标准的数字证书。从而为电子商务各类信息在Internet上传输提供安全保障,同时确保网上支付信息的安全性和完整性,并提供对客户以及相关商户的身份进行认证。它的主要职能为:注册服务、注册认证、证书授权和证书库管理。数字信封:SET协议依靠密码系统保证消息的可靠传输,在SET中,使用DES算法随机产生的对称密钥来加密数据产生密文,然后,将此对称密钥用接收者的公钥加密,加密后的对称密钥称为消息的“数字信封”,将其和消息密文一起送给接收者,接收者先用他的私钥解密“数字信封”,得到对称密钥,然后使用对称密钥解开消息密文。下面介绍在SET协议下拥有数字证书的A向拥有数字证书的B传输数据的过程:①A准备好要传送的信息(明文)。②A对信息进行Hash运算,得到一个数字摘要。③A用自己的私钥对数字摘要进行加密得到A的数字签名,并将其附在信息上面。④A随机产生一个对称加密密钥(DES密钥),并用此密钥对要发送的信39 息进行加密,形成密文。⑤A用B的公钥对刚才随机产生的对称DES密钥进行加密,产生数字信封,然后将数字信封(加密后的DES密钥)连同密文一起传送给B。⑥B收到A传送过来的密文和加过密的DES密钥,先用自己的私钥对加密的DES密钥进行解密,得到DES密钥。⑦B用DES密钥对收到的密文进行解密,得到明文的信息,然后将DES密钥抛弃。⑧B用A的公钥对A的数字签名进行解密,得到数字摘要,B用相同的Hash算法对解密后得到的明文再进行一次Hash运算,得到一个新的数字摘要。⑨B将收到的数字摘要和新产生的数字摘要进行比较,如果一致,说明收到的信息没有被篡改过。SET协议将对称密钥的快速、低成本和非对称密钥的安全性完美地结合在了一起。6.2单向散列算法及应用6.2.1单向散列函数简介散列函数是密码学,也是认证理论研究的主要内容之一,散列函数是目前保护数据完整性的主要技术手段。散列函数可以作为一种加密策略,也是数字签名的基础。散列函数H(M),就是把任意长度的消息M,通过散列函数H,将其变换为一个较小的固定长度的散列值h:h=H(M)。消息M的散列值h,就象该消息的数字指纹,可以用来保证数据的完整性,我们称其为数字摘要或数字指纹。散列函数H(M)是一种单向算法,一旦数据被转换,将无法再获得其原始值。单向散列函数性质:散列函数的目的是为文件、报文或其他数据产生一个“指纹”,有如下性质:(1)散列函数H(M)适合于任何大小的数据分组;(2)散列函数H(M)产生固定长度输出;(3)对于任意数据M,计算H(M)是容易的;(4)对任意给定的散列值h,要计算出M使H(M)=h,几乎是不可行的,这就是单向性;(5)要寻找任何一对数据(x,y),使H(x)=H(y),这在计算上是不可行的。.NET环境下可以使用多种散列算法类。.NETFramework提供了下列密码散列类,它们都是由HashAlgorithm抽象类派生的。这些类都位于System.Security.Cryptography命名空间。在列出的每一项中,前面的是抽象类,后面的是由这些抽象类派生出来的具体类。KeyedHashAlgorithm抽象类,它派生出HMACSHA1和MACTripleDES具体类40 MD5抽象类,它派生出MD5CryptoServicePrivider具体类SHA1抽象类,它派生出SHA1Managed和SHA1CryptoServicePrivider具体类SHA256抽象类,它派生出SHA256Managed具体类SHA384抽象类,它派生出SHA384Managed具体类SHA512抽象类,它派生出SHA512Managed具体类MD5算法生成一个128比特的散列,SHA1算法生成一个160比特的散列,而SHA256、SHA384、SHA512算法可以分别生成256、384和512比特的散列值。目前最常用的是SHA1和MD5算法。6.2.2单向散列函数的应用大多数开发人员使用数据库存储客户用户信息,如果用户凭证中的密码直接以明文的形式存放在数据库中,则后台管理人员也能够看到这些密码,这样安全性就得不到保障。为了保障数据的安全性,我认为:对电子商务中敏感数据,可以散列值形式在数据库中存储这些敏感数据,避免直接以明文形式存储敏感数据。下面介绍本系统的做法。本系统以明文形式保存用户名,使用散列算法对用户密码进行散列,用散列值方式来保存用户密码,这样即使被别人看到或获取到,由于散列函数的不可逆性,仍然破解不了,保障了安全性。当用户登录进行身份验证时,输入明文密码后采用相同的散列算法把密码明文进行散列,再把得到的散列值和存放在后台数据库中的密码的散列进行比对。当用户的密码忘记时,单击页面导航条中的“取回密码”超链接进入取回密码页面,正确输入用户名和E_mail,系统自动生成一个随机密码,并把此密码的散列值写入后台的用户凭证数据库表,同时把此随机密码明文发到用户的邮箱中,以后用户可以重新修改密码。为了实现软件利用,减少代码编写量,本系统把对字符串进行MD5或SHA1两种方式散列的实现以组件方法的形式放置在业务逻辑层的Functions类中,这样表示层用户进行登录或注册时,只需调用此方法即可进行散列。在登录和注册页面如何使用散列组件,这里就不介绍了。本系统使用的是SHA1散列算法。6.3RSA数据加密技术及应用6.3.1RSA数据加密技术RSA算法是公开密钥算法中研究最为深入,使用最为广泛的算法,为大多数国家地区的官方或非官方所采用。利用RSA公开密钥算法可以实现数据加密、数字签名、身份识别等。41 与对称密钥加密相比,公开密钥加密有若干优点:首先,所需的密钥组合数量很小。在N个人彼此之间传输保密信息,只需要N对公开密钥,即每个人只需一对公开密钥,远远小于对称密钥系统的密钥量。第二,密钥的发布不成问题,公钥可以公开发布,但私钥仍由个人保密。第三,公开密钥系统可实现数字签名,而签名者事后也不能否认。公钥加密系统也有缺点:加密/解密比对称密钥加密系统的速度慢得多(因为加密/解密都是进行幂运算)。公开密钥系统并不是要取代私有密钥系统,相反,它们是相互补充的。下面简要介绍RSA算法:首先,找出三个数:p、q、e,其中p和q是两个相异的大素数,e是与(p-1)(q-1)互质的数。接着,找出d,使得d*e≡1mod(p-1)(q-1)。再下来,计算n=p*q。(n,e)便是publickey。(n,d)就是privatekey,p和q应该被销毁掉。加密算法为:C=Memodn。C就是加密后的密文。解密算法为:M=Cdmodn。M就是解密后的密文公开密钥算法的加密及解密都要进行幂运算,所以公开密钥算法比对称密钥算法要慢的多。用公钥加密得到的密文,可以用私钥解密;用私钥加密得到的密文,可以用公钥解密,故公开密钥算法即可用于加密,也可用于数字签名。RSA算法是利用了数学中存在的一种单向性。一般说来,许多数学中的函数都有“单向性”,这就是说,有许多运算本身并不难,但如果你想把它倒回去,作逆运算,那就难了。最简单的例子:除法比乘法难,开方比乘方难,这是谁都知道的。对于RSA来说,用公开密钥加密后,如果想再通过公开密钥解密是很困难的。这个困难性就表现在对大数n的因式分解上。若n=p*q被因式分解,(p-1)(q-1)就可以算出,继而算出解密密钥。所以RSA算法的基础就是一个假设:对大数的因式分解是很困难的。6.3.2RSA数据加密技术的应用电子商务要成为一个完整的过程,网上电子支付是一个重要的环节。客户、商家和结算银行可以采用银行账号实时支付。在网上直接采用电子支付手段可以省略交易中很多的开销,在商家与消费者之间架起了一座桥梁,加速了交易过程的实现。网上支付是通过国内各大银行的支付网关进行操作的,采用的是国际流行的SSL或SET方式加密。安全性是由银行方面负责的,是完全有保证的。本电子商务系统中,为了体现系统的完整性,本系统用Web服务模拟了一个银行网关,来模拟网上支付。在模拟的银行网关中,使用RSA加密算法对用户的银行卡号进行加密,银行卡的密码用散列值形式。此Web服务文件名为B42 ankCreditCardService.asmx,利用它的PaymentForOrderByCreditCard()方法可以完成网上支付和交易成功信息的返回。支付网关的业务逻辑位于CreditCard.cs组件中在Web服务应用程序中,类CreditCard主要方法有两个:第一个为:IfEnoughMoneyForOrder(),此方法有三个参数:用RSA算法加密后的个人银行卡号,银行卡密码散列值和订单金额。此方法用来判断指定的卡号中余额是否足以支付订单金额。第二个方法为PaymentForOrderByCreditCard(),此方法除具有前一方法的三个参数外,还增加了商家的银行卡号,把用户卡号上订单金额转到商家卡号上,来模拟进行网上支付。类CreditCard的其中一个方法的主要代码如下://判断卡中余额是否够支付定单,这里卡号byteCipherBankCardID是经过不对称算法用书店公钥加密后的密文,故先解密为明文后再进行数据库访问publicintIsEnoughMoneyForOrder(byte[]byteCipherBankCardID,stringBankCardPwd,floatOrderMoney){RSACryptoServiceProviderrsa=newRSACryptoServiceProvider();//读出书店的私钥(XML形式)到StreamReader中,进而读出到一个字符串变量中StreamReaderreader=newStreamReader("….BankPublicPrivateKeyBankPrivateKey.xml");stringPrivateKeyXML=reader.ReadToEnd();//把书店的私钥导入到RSA对象中rsa.FromXmlString(PrivateKeyXML);reader.Close();//把密文字符串转变为密文数组,再解密密文数组到明文数组中byte[]plainbytes=rsa.Decrypt(byteCipherBankCardID,false);//把明文数组转变为明文字符串stringplainBankCardID=Encoding.UTF8.GetString(plainbytes);SqlConnectionmyCn=newSqlConnection(strConn);SqlCommandmyCm=newSqlCommand("IsEnoughMoneyForOrder",myCn);myCm.CommandType=CommandType.StoredProcedure;myCm.Parameters.Add(newSqlParameter("@BankCardID",SqlDbType.VarChar,20));myCm.Parameters["@BankCardID"].Value=plainBankCardID;myCm.Parameters.Add(newSqlParameter("@BankCardPwd",SqlDbType.Ch43 ar,48));myCm.Parameters["@BankCardPwd"].Value=BankCardPwd;myCm.Parameters.Add(newSqlParameter("@OrderMoney",SqlDbType.Float));myCm.Parameters["@OrderMoney"].Value=OrderMoney;myCm.Parameters.Add(newSqlParameter("@Result",SqlDbType.Int));myCm.Parameters["@Result"].Direction=ParameterDirection.Output;myCn.Open();myCm.ExecuteNonQuery();return(int.Parse(myCm.Parameters["@Result"].Value.ToString()));myCn.Close();………}在前台付款页,当选择“网上支付”时,进入模拟银行网关,其界面如图6-1所示:图6-1模拟虚拟网上支付界面在这里,输入银行卡号和密码,导入银行网关的公钥,就会把银行卡号进行RSA加密,然后把加密后的银行卡号的密文连同密码的散列值一同传到模拟的Web服务相应方法中,在那里判断银行卡余额是否足以支付此订单。若足够则付款成功,同时把此订单的状态改为“已付款”,否则显示余额不足。在网上支付过程中,为保证原子操作,在存储过程中使用了事务。由于对银行卡号进行了RSA加密后传输的是密文,没有直接传送明文,这样即使在传输过程中被拦截,也破解不了,保证了系统的安全。44 6.4RSA数字签名技术及应用6.4.1数字签名技术通过前面对RSA算法的分析知道,用公钥加密得到的密文,可以用私钥解密;用私钥加密得到的密文,可以用公钥解密。当用私钥加密后,虽然可以解密,但由于公钥是发布到外面的,任何人都可以得到,所以私钥并不能用于加密。但是根据RSA运算的这种可逆性,可以用做数字签名。在.NET下,RSA算法即可以用来加密,也可以用来签名;而DSA算法只能用于数额签名,不用于加密。RSA数字签名的原理见图6-2所示。图6-2数字签名技术原理示意图从图6-2数字签名的过程可看出,数字签名过程分两部分,左侧为签名,右侧为验证签名的过程。即发方将原文明文用哈希算法求得数字摘要,用签名私钥对数字摘要加密得数字签名,发方将原文明文、数字签名和发送方公钥一起发送给接受方;收方收到的数据包括原文明文、数字签名和发送方公钥。收方验证签名,即用发方公钥解密数字签名,得出数字摘要;收方将原文明文采用同样的哈希算法又得一个新的数字摘要,将这两个数字摘要进行比较,如果二者相同,说明经数字签名的数据传输成功。数字签名是目前电子商务、电子政务中应用最普遍、技术最成熟的、可操作性最强的一种电子签名方法。它采用了规范化的程序和科学化的方法,用于鉴定签名人的身份以及对一项电子数据内容的认可。它还能验证出数据的原文在传输过程中有无变动,确保传输数据的完整性、真实性和不可否认性。从法律上讲,签名有两个功能:标识签名人和表示签名人对文件内容的认可。6.4.2数字签名技术的应用用户购买了商品,在结账页中提交订单,在数据传输过程中,有可能出现商品购买信息在传输过程中被黑客篡改,特别是篡改用户的收货地址,造成用户收不到商品。本电子商务系统中,为了防止订单的收货地址被篡改,本系统提供了对订45 单的收货地址进行数字签名的功能。这样当用户购买商品时,为了防止收货地址被黑客篡改,用户可以用自已的私钥对收货地址进行数字签名。为了实现这一目的。在后台数据库的订单表“Orders”中,增加了以下几个字段:字段名字段类型长度允许空说明WhetherSignedbit1此订单是否被签名DigitalSignaturevarchar2048数字签名值用户的公钥,用于后台UserPublicKeyvarchar300验证签名当用户在结账页中,在输入收货地址时,可以选择是否进行数字签名,若选中,则要求导入自己的私钥对收货地址进行数字签名,同时还要导入用户的公钥以便商家管理人员用此公钥对数字签名进行验证。然后把“收货地址”、“是否签名”、“数字签名值”和“用户的公钥”一起写入后台数据库。当网站后台管理人员进行发货处理进,发货处理页面的后台代码首先判断数据库中此订单的收货地址是否被签名,若被签名,则取出数字签名值和用户公钥,进行验证签名。若通过则进行发货处理,若通不过,则说明收货地址被修改,这时要进行谨慎处理。下面把“结账”页以及后台“发货处理”页中与数字签名相关的代码附在下面,“结账”页运行时的界面如图6-3所示:图6-3结账页面数据签名“签名”按钮的Click事件主要代码如下://定义过程外变量使其在两个事件方法中使用。46 protectedvoidbtnSign_Click(objectsender,EventArgse){//把要签名的字符串型的收货地址转变为字节数组stringstrAddress=this.txtAddress.Text.Trim();byte[]plainAddressBytes=Encoding.UTF8.GetBytes(strAddress);//产生要签名的明文的数字摘要(数字指纹)SHA1sha1=newSHA1CryptoServiceProvider();byte[]hashOfPlainAddress=sha1.ComputeHash(plainAddressBytes);//以字节数组形式返回待签名的明文的数字摘要(数字指纹)//定义RSA对象并导入用户的私钥进行数字签名RSACryptoServiceProviderrsa=newRSACryptoServiceProvider();//定义RSA对象StreamReaderreader=newStreamReader(strPrivateKeyPath);//定义StreamReader流来读取XML格式的私钥stringPrivateKeyXML=reader.ReadToEnd();rsa.FromXmlString(PrivateKeyXML);//导入用户的XML格式私钥到RSA对象中byteDigitalSignature=rsa.SignHash(hashOfPlainAddress,"1.3.14.3.2.26");//进行数字签名产生字节数组形式的签名结果;}后台发货管理界面如图6-4:图6-4发货时验证收货地址的数字签名验证47 其中“配货成功,确认发货”按钮进行发货处理,它首先判断订单的付款状态,若已付款,就可以进行发货处理。发货处理按订单内容进行配货,并按订单所指示的收货地址进行邮寄。在处理发货时,它读取后台数据库中订单的签名状态,若用户对收货地址进行了签名,就要进行签名的验证,若收货地址被改动,将不能通过验证,发货处理不能进行。48 结论本论文的主要目标是设计和实现基于Microsoft.NET平台下的网上书店电子商务系统,论文完成了这个目标。电子商务系统设计中涉及到很多方面的知识,如ASP.NET动态网页技术、数据库技术、Web服务技术、ADO.NET技术、组件技术、加密及数字签名技术等安全技术。本论文有如下的特点:(1)电子商务系统开发采用了先进的设计思想和先进的.NET平台软件技术本系统采用B/S模式的三层体系结构。客户端直接使用浏览器,从而使用开发人员集中精力进行服务器端开发。三层体系结构提高了各层设计时的独立性,降低了系统开发的复杂度,利于升级、扩展和维护。也符合模块化的设计原则。本系统是在.NET平台上开发的,充分运用了当前计算机编程的新技术。(2)用先进的面向对象语言C#来设计组件C#是微软为.NET量身定做的全新语言,类似于JAVA,但比它更优秀。C#没有指针,同时会做内存回收,且是完全面向对象的。它紧密结合.NETFramework类库,支持MSIL和CLR,功能强大,容易学习,是.NET平台最合适的语言。它既适用于Windows应用程序的开发,也非常适用于Web应用程序的开发。使用组件,编程更规范,程序代码更安全,移植更方便,执行效率也更高,代码的重用性也得到了很大提高。(3)充分体现了软件开发中的模块化、软件复用的思想,注重高效性,便于升级和维护为了实现数据库的安全,提高代码复用和系统性能。在表示层使用了用户控件和母板技术,界面布局采用了CSS+DIV布局,在业务逻辑层采用组件编程,把各种业务逻辑封装到组件中。把不同的子系统构建为解决方案中独立的项目,通过项目间的引用来构成一个有机的解决方案。(4)Web服务的应用Web服务是创建可互操作的分布式应用程序的新平台,它定义了应用程序如何在Web上实现互操作性。本论文设计了可在分布式环境和异构平台下通过XML及HTTP构成的SOAP协议来存取的Web服务,可跨越防火墙进行远程服务的调用,令基于组件的开发和Web的结合达到最佳。(5)提出了电子商务系统的安全性解决方案安全性是设计和实现基于Web的电子商务系统要解决的关键性问题之一,本文对电子商务系统的安全性做出了初步的探索。对系统中的用户密码等敏感数据,采用了以其散列值在数据库中进行存储,避免直接存储敏感数据的明文;在用户权限管理方面:根据用户使用功能划分角色,采用窗体身份验证方式,49 编程运用基于角色的授权;在信息安全和身份认证方面:系统应用了.NET编程技术下数据加密技术、数字签名和身份认证技术。对系统的安全性提出了较为全面的安全解决方案。此电子商务系统具有较强的可扩展性,在不用较大改变的前提下,经修改可升级为销售任何商品的网上商城。进一步拓宽其使用的领域和空间。本系统的设计和实现中还存在下列问题有待继续探索:电子商务系统同银行进行实时支付问题是一个重要的问题,本系统只是用WebService对银行网关进行了模拟,在实际运用中需要改进,需要同银行方面进行接洽、配合。WEB服务器安全、防火墙技术的应用、物流配送系统的开发等,本文尚未触及。由于本人的能力和时间有限,难免会有一些错漏或者不合理的地方,敬请各位老师和同学批评指正。通过这次毕业论文设计,我不仅学到了很多知识,也使得自己分析问题能力和解决问题能力有了很大的提高,这将成为我一生中非常宝贵的财富。50 参考文献[1]仝新顺王初建于博著电子商务概论清华大学出版社2009.07[2]帅青红著网上支付与安全人民邮电出版社2008.11[3]洪国彬范月娇编著电子商务安全与管理电子工业出版社2006.03[4]俞立平主编电子商务认证机械工业出版社2005.05[5]韩宝明电子商务安全与支付人民邮电出版社2006.07[6]S周栋祥吴进鲁著ASP.NET案例精编清华大学出版社2009.05[7]MarioSzpuszta等著博思工作室译ASP.NET高级程序设计(第3版)人民邮电出版社2009.11[8]刘亮亮著精通ASP.NET2.0数据绑定技术人民邮电出版社2008.06[9]OmarZabir等著罗江华译ASP.NET3.5Web2.0门户站点机械工业出版社2008.06[10]朱晔著ASP.NET第一步--基于C#和ASP.NET2.0清华大学出版社2007.07[11]DavidSceppa著贾洪峰等译ADO.NET技术内幕清华大学出版社2007.08[12]陆宗跃电子商务安全中身份认证技术的解决方案[D]武汉大学2004年[13]耿祥义编著XML程序设计清华大学出版社2009.10[14]DinoEsposito等著施平安等译ASP.NET2.0技术内幕清华大学出版社2006.08[15]陈承欢主编ADO.NET数据库访问技术案例教程人民邮电出版社2008.04[16]万峰科技著ASP.NET网站开发四“酷”全书电子工业出版社2006.02[17]DonisMarshall著余波等译.NET安全编程清华大学出版社2003.10[18]PeterThorsteinson等著梁志敏等译.NET安全性与密码术清华大学出版社2004.08[19]张先红编著数字签名原理与技术机械工业出版社2004.01[20]杜成昊电子商务中网络安全问题的探讨[D]武汉理工大学2006[21]RussBasiura等著康博译ASP.NETWeb服务高级编程清华大学出版社2002.06[22]朱绍伟袁杰电子商务及其主要发展模式[A]山东省计算机学会2005年信息技术与信息化研讨会论文集(二)[C]2005年[23]胡凯基于网络环境的电子商务系统认证和安全交易技术的研究[D]武汉理工大学2003年[24]刘二军电子商务支付系统的研究[D]北京工业大学2002年51 [25]赵洪明电子商务及其发展研究[D]武汉理工大学2002年[26]EfraimTurban电子商务导论中国人民大学出版社2010年[27]潘娟赵文清宋雨毛茅数字签名技术在电子商务中的应用[A]第六届全国计算机应用联合学术会议论文集[C]2002年[28]谢琳卢建军电子商务中第三方电子支付平台分析计算机应用研究200320(12)[29]M.EA.Derome.GeneratingRSAkeyswithouttheEuclidalgorithm(J).20(12)[30]WilliamStallings密码编码学与网络安全:原理与实践[M]电子工业出版社2004年[31]赵铭伟电子商务系统中信息资源安全管理的若干技术问题研究[D]大连理工大学2010年[32]张小红王慧琴何波电子商务系统安全管理评价模型分析[A]Proceedingsof2010InternationalConferenceonFutureInformationTechnologyandManagementEngineering(FITME2010)Volume3[C]2010年52 研究生期间撰写的论文1.陈纪霞.浅析电子商务中消费者权益的保护.电脑知识与技术.第6卷.第23期.2010年8月.2.陈纪霞.多媒体课件制作之我见.科学时代.2008年第12期.53

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭