版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.绪论1.1课题背景和研究意义21世纪以来,科学技术飞速进步,海洋事业也迎来了快速发展的契机,海洋战略得到了显著的重视,作为国际竞争的重要衡量指标之一。如今,发展海洋经济,建设海洋战略强国,已经成为我国国家战略体系的重要组成部分。中共十八大报告明确提出了“建设海洋强国”的宏伟目标,由此可见中共中央对海洋工作的高度重视度和关注度是是非常高的[1]。“建设海洋强国”包含很多方面,其中最重要一点是国民的海洋意识和海洋观念必须得到加强,这是实现“海洋强国”战略在思想层面必须要突破的第一道防线。近年,我国周边海洋形势日趋严峻,从资源竞争到领土领海主权之争,时不时见诸报端,国际上有些不安好心的国家试图歪曲事实。加强国民的海洋意识已经箭在弦上。发达国家都非常重视国民海洋教育。美国专门制定了加强海洋教育、强化国民海洋意识的政策,包括将海洋知识写入中小学课本等具体措施,并在全国范围内成立了卓越的海洋科学教育网[2];英国2000年提出了海洋科学技术发展战略,在中小学“国定课程”中全面实施海洋教育;日本1990年也提出了开发海洋的设想和措施;韩国1996年颁布了21世纪海洋战略规划,中小学海洋教育主要体现在中小学主修课程及教材之中,不少课程的海洋内容有较大比重。从上述国家有关海洋教育的做法可见,海洋教育已经成为当前国家海洋发展战略的重要组成部分,这对我国海洋教育的发展提出了紧迫的要求。相比之下,我国国民海洋意识相对薄弱,对海洋知识、海洋战略的了解和关注度显著偏低,国民海洋意识教育仍然处于较低水平[3]。国民教育中海洋知识教育体系还未完全建立、教育资源分布不均衡、教育举措不明确等,这些都严重滞后着国民海洋意识的全面普及与提升。增强国民海洋意识要依靠国民海洋教育,要提高全体国民的海洋意识,关键是开展面向全体国民的海洋教育,特别是加强青少年的海洋教育。教育信息化对于推进海洋教育现代化具有举足轻重、不可替代的作用。信息化的海洋教育课程是海洋教育现代化的关键。现阶段在线课程已经向Android、iOS、网页等多终端方向发展,通过移动终端可随时随地学习、分享课程,还可在电脑上同步完成学习任务,多终端享受科普教育服务,实现移动端与PC端学习过程的无缝衔接[4]。1.2国内外研究现状现有的国内的海洋知识网络平台非常少,而且支持多终端的海洋知识平台更是凤毛麟角,也就是说能方便在不同终端浏览的的系统还非常有限,要么就是做的只支持PC端,要么就是做的是APP,要想手机电脑资源共享很麻烦。国内做的比较好的几个网站比如:北京海洋馆(/)、广州海洋馆(/index.asp)、现代海洋教育(/22/)、中国海洋大学-物理海洋教育部重点实验室(/pol/n-2-1.asp?lanmu=3&f=20)。海洋馆的商业性质更多一点,另外2个则是从大层面来介绍海洋知识,比如国家海洋政策、海洋科学研究等。专门做面向青少年的海洋知识平台的非常稀缺。我们正是基于这些方面的考虑,来设计完成我们的学习网站,力图让青少年了解海洋知识更便捷舒适和全面,又能及时跨终端反馈了解自己的掌握情况。系统用到的相关技术2.1数据可视化EChartsECharts是百度商业前端数据可视化团队一份影响深远的开源优秀杰作。它基于html5Canvas,是一个纯Javascript图表库,提供了直观,生动,可交互,可个性化定制的数据可视化图表。其创新的拖拽重计算、数据视图、值域漫游等特性使用户体验大大增强,赐予了用户对数据进行挖掘、整合的能力。底层基于ZRender,这是一个全新的轻量级canvas类库,包含坐标系,图例,提示,工具箱等一系列基础组件,以此为基础构建出折线图(区域图)、柱状图(条状图)、散点图(气泡图)、饼图(环形图)、K线图、地图、力导向布局图以及和弦图,同时支持多维度的堆积和多图表混合展现。除此之外,ECharts支持多种配置方式如单文件引入、模块化引入等,配置步骤少,调用方便。本系统使用ECharts做学员分数统计的数据可视化显示,及时以图表方式呈现分数走势,帮助用户直观了解自己的学习掌握情况。2.2编辑可视化KindEditorKindEditor是一套非常优秀的HTML可视化编辑器,而且还是开源的。网站页面使用它可以达到所见即所得编辑效果,风格和word非常相似,符合用户使用习惯。最重要的一点是它几乎兼容所有主流浏览器,如IE、Firefox、Chrome、Safari、Opera等。因为是JavaScript+HTML方式编写,所以可以无缝接合ASP、.NET、PHP、Java等主流应用程序。自发布以来以其舒适的用户体验和领先的技术不断扩大在编辑器市场占有率,成为国内最受欢迎的编辑器之一。开发者在开发项目时,可以以js方式直接通过ID调用,不需要复杂的配置,这次系统开发引用它可以有效减轻后台编辑器开发的工作量。3.系统概要设计3.1需求说明该平台应达到以下的功能需求:操作简洁友好,简化管理员对内容的录入、修改和删除等步骤,降低操作难度;另外,为了便于管理员进行信息跟踪查看,管理员模块应该有一个地方显示当前所在的界面和执行的操作[5]。一些常见的功能,如数据增删查改等方面都能够实现出来,从而实现一个完整的内容发布平台。通过网络调研和问卷调查,该系统应该实现的功能如下:用户能够通过移动网络和PC端查看各类海洋教育内容或相关消息;能分类显示相关海洋知识;站内知识的检索功能;能提供一定数量的友情链接;管理员需要一个后台管理系统来管理整个平台的内容以及管理员和学员信息。3.2用户功能分析 海洋教育专题学习网站主要用于对海洋知识和海洋文化信息的发布管理以及学员在线考试管理。前台用户在线浏览学习海洋知识以及及时考试实时了解自己的掌握情况,而管理员在后台则负责知识数据更新分类管理以及管理员、学员个人信息管理。因此系统主要模块有两个:前台浏览和后台维护。前台对所有用户都开放权限,这是必要也是必须。后台管理系统只有管理员才能共进入,我们将做对应的管理员和游客权限验证,对于没有对应权限的用户或管理员进行对应的技术处理,使之不能够越权操作,我们只允许管理员的登录但不允许自助注册管理员,只有管理员添加管理员才能增加管理员。对于前台模块的开发,我们只需要对海洋知识进行分类,使用户能够通过导航栏进入不同的内容模块。首页除了必要的导航栏外,还需要向用户提供一些便捷的操作,如内容的查找模块,留言模块等便捷服务。对后台来说,管理员通过系统的身份验证成功后,可以对整站内容进行发布修改删除等,同时系统需将提供管理一个退出的功能,使管理员能够正常离线。考试系统独立出来,从另一方面来讲,这有利于系统的安全和管理,从而实现分而治之的观念[6]。对于本系统,用户共分为二:用户、管理员,各有不同的权限。(一)用户:此类用户具有以下权限:浏览前端页面;阅读已发布信息;通过留言板或者联系我们模块给管理员反馈信息[7]。(二)管理员:管理员需要具备以下权限:浏览所有的前台页面(这是毫无悬念该有的权限);能够管理注册用户,能对注册用户进行增删改查等操作;发布一些公告对外显示,供用户浏览;通过设计的特定模块向数据库增加、查找、修改或删除修改知识;登陆后可修改个人密码;超级管理员可以删除任何一个管理员的所有信息。3.3用例图本系统主要有两大用例,一个是超级管理员(站长),另一个则是普通用户。其中管理员的作用是管理网站中的所有知识,包括对知识的分类,发布,从而方便用户的浏览。用户扮演的角色至关重要,一个网站能不能长远发展,主要依靠众多的使用者浏览我们的网页来产生流量。用户和管理员的操作的部分用例图如图1所示。图1海洋教育专题学习网站部分用例如图1所示,用户通过手机或者浏览器接入到我们的网站,获取海量的海洋知识,同时,可以通过注册成为我们的学员,参加在线考试,实时了解自己对知识的掌控情况。而管理员则需要使用平台的后台,来实时更新整站的内容。作为超级管理员,他拥有整个系统的权限分发和信息处理权限。这一做法将保证系统的安全运行。3.4结构图根据前期的需求分析,画出系统结构如图2所示。海洋教育专题学习网站海洋教育专题学习网站浏览者管理员前端后台浏览知识主题讨论在线考试管理员管理栏目管理考试管理主题讨论管理下载管理图2系统结构该图展示的是整个系统的运行层次,通过该图可以清晰的分析出对应的角色对应的权限,各个角色之间权限分明。系统详细设计4.1系统模块根据前期的需求分析,画出模块设计图[8]。管理员发布课程知识和考试卷子,学员可以在线浏览,经过学习后就可以在线考试并查看成绩。学生考完试,管理员可以对学生的成绩进行管理和分析。系统模块部分设计图如图3所示。管理员管理员学员生成卷子发布课程知识管理成绩学员浏览学习查看成绩在线考试图3系统部分模块4.2数据库设计4.2.1数据库逻辑设计本系统所使用的数据库可以使用下面的步骤来设计:先根据需求分析来确定需要哪些字段来存储对应属性的数据,然后建立对应的表结构,确定表中各字段的类型从而达到合理分配存储空间;建立关系模式,也就是设计每个表之间的关联模式,使得数据库能够根据关系图优化数据,减少数据冗余,确定主键与外键之间的关系[9]。 ER图主要是用于显示出每个对象的属性以及每个对象之间的联系关系,对于从数据表结构到代码的实现有一定的指导作用。通过分析,我们得到了系统的ER图,下面以管理员管理文章模块为例,展示我们的局部ER图如图4所示。管理员编号管理账号管理员名字文章文章编号标题类别编号管理mn管理员编号管理账号管理员名字文章文章编号标题类别编号管理mn密码类名摘要关键词图片路径内容图4部分ER图4.2.2数据库物理设计根据用户需求和ER图分析,用SQL生成数据库[10]。共创建了12个表,分别为:管理员信息表Admin、课程相关信息表About、课程信息表Article、留言表Feedback、友情链接表Link、分类表Sclass、首页轮换海洋动物表Seaanimal、资料下载表UploadFiles、科目表subject、题库表question、成绩表score、学员信息表student。管理员信息表Admin是后台的核心表,整个后台的验证数据都将存储在这里,包括管理员账号、密码等信息。管理员信息表如表1所示。表1管理员信息表字段名字段说明类型长度允许空值备注id管理员Idint32否主键Username管理员登录名Varchar50否Password管理员密码Varchar50否MD5值author管理员名字Varchar50是LastLoginIP最后一次登录IPVarchar50否LastLoginTime最后一次登录时间datetime否 其中为了保护网站的安全和管理员的个人隐私,我们的密码是采用MD5加密的,这种加密方法在暴露的网络环境下即使被截取到管理员的登陆密码,如果想要破解的话几乎是不可能的[10]。同时,管理员在设置密码的时候系统会提示要求输入一定强度的密码,减少破解的碰撞几率。 分类表Sclass包含着系统所有的栏目分类信息,管理员通过后台可以方便修改导航。该表记录了系统的所有栏目信息,为了方便管理,我们用tid来表示栏目从属关系,用pid来标记栏目在导航栏中的显示顺序,用IsMenu来决定在导航中是否显示出来(0代表不显示,1代表显示),用yn标记栏目属于哪一种类型(0代表超链接、1代表文档,2代表资料夹)。分类表Sclass如表2所示。表2分类表字段名字段说明类型长度允许空值备注id主键编号int32否主键tid从属关系int32否cname导航栏目名字Varchar50否pid导航的排序int32是content内容varcharmax是keywords关键字varcharmax是description摘要datatimemax是IsMenu是否在导航栏显示int32否yn栏目类型int32否课程信息表Article包含所有栏目信息,这是整个系统的课程信息的核心表,cid指定这个内容所属的栏目ID,cname表示当前内容归属的栏目。课程信息表Article如表3所示。表3课程信息表字段名字段说明类型长度允许空值备注id信息主键int32否主键title标题varchar50否cid从属IDint32否cname从属栏目varchar50否description摘要varcharmax是keywords关键字varcharmax是pic图片varcharmax是content内容varcharmax是author编辑人varchar50是addtime添加时间datetime是课程相关信息表About主要是存放课程入门相关知识。课程相关信息表About如表4所示。表4课程相关信息表字段名字段说明类型长度允许空值备注idIDint32否主键title标题varchar50否content内容varcharmax是addtime添加时间datetime是cname类别varchar50是首页轮换海洋动物表Seaanimal主要是存放首页跑马灯展示的海洋动物的信息。首页轮换海洋动物表Seaanimal如表5所示。表5首页轮换海洋动物表字段名字段说明类型长度允许空值备注ididint32否主键title标题varchar50否pic图片varcharmax是addtime添加时间datetime是cname类别varchar50是content描述varcharmax是留言表Feedback主要留言信息以及回复,chk标识是否回复(1代表回复了,0代表未回复)。留言表Feedback如表6所示。表6留言表字段名字段说明类型长度允许空值备注idIDint32否主键title标题varchar50否tel联系号码varchar20是fax传真varchar20是person留言人varchar50否email电子邮箱varchar50是address住址varchar200是website个人主页varchar100是content内容varcharmax否sendtime留言时间datetime是chk是否审阅int32否reply回复varchar()max是友情链接表Link主要是存放与课程相关的链接。用yn标记所属类别(1代表政府部门,2代表教育部门,3代表学校网站,4代表其他网站)友情链接表Link如表7所示。表7友情链接表字段名字段说明类型长度允许空值备注idIDint32否主键title标题varchar50否url链接地址varcharmax否logo网站logovarcharmax是yn链接类别int32否addtime添加时间datetime是资料下载表UploadFiles主要存储提供下载的资料,上传资料后的路径用pic字段存储。资料下载表UploadFiles如表8所示。表8资料下载表字段名字段说明类型长度允许空值备注idIDint32否主键title标题varchar50否pic上传文件路径varcharmax是addtime添加时间datetime否cname类别varchar50否content内容varchar50是科目表subject主要是存储每个单元的结构信息,只有单选题和多选题,字段规定了题的数量和分值,以及考试时长。科目表subject如表9所示。表9科目表字段名字段说明类型长度允许空值备注idIDint32否主键subjectname单元名称varchar50否主键singleper单选题分值int32否multinumber多选题题量int32否singlenumber单选题题量int32否multiper多选题分值int32否testtime考试时长int32否题库表question主要是存储整个题库的信息,type存储题目类型(单选和多选),subjectname代表从属的单元名称,标记了这道题是哪次考试的。题库表question如表10所示。表10题库表字段名字段说明类型长度允许空值备注idIDint32否主键haveselect是否被抽选过int32否question题目varcharmax否AA选项内容varcharmax否BB选项内容varcharmax否CC选项内容varcharmax否DD选项内容varcharmax否answer答案varchar50否type题目类型varchar50否subjectname单元名称varchar50否成绩表score主要是存储学生的考试成绩。成绩表score如表11所示。表11成绩表字段名字段说明类型长度允许空值备注idIDint32否主键studentname学生姓名varchar50否subjectname单元名称varchar50否score分数int32否endtime交卷时间datetime否学员表student主要是存储学学员的个人信息。学员信息表student如表12所示。表12学员信息表字段名字段说明类型长度允许空值备注idIDint32否主键studentname学员姓名varchar50否studentpassword密码datetime20否4.3插件配置和公用库编写4.3.1编辑器文件的导入该平台是为了让后台编辑更直观,使用了所见即所得的kindeditor在线编辑器,它提供了很多现成的UI元素,为了提高开发的效率,我们第一步要做的就是导入本项目所需要的编辑器文件[12]。有了这个插件,那么后台编辑就方便多了。把官网下载的kindeditor引用进项目,配好参数,需要的时候系统统一通过加载kindeditor.js进行调用。4.3.2数据可视化ECharts配置为了在分数统计模块让用户更直观地看到成绩变化,我们需要引用ECcharts来做数据的图表展示,在开发前先配置好ECcharts,把官网下载的ECcharts包引用进项目,需要的地方统一加载路径echarts/build/dist/下的echarts.js文件。4.3.3数据操作公用库编写为了减少代码冗余,加快开发进度,增强可维护性,我们需要把一些常用的函数统一定义好,这样在需要这个功能的时候,在页面可以方便快速地通过参数进行调用[13]。我们把这些函数写在function.asp里,页面需要的时候就可以直接通过参数调用。比如ShowLink(Cid)函数,在页面以<%=ShowLink(3)%>方式调用,就可以把以3标志的类型学校网站类型的链接全部列出来。4.4系统功能具体实现平台运行后就可以通过不同终端的浏览器来完成系统相关功能的操作,而客户端这些请求将被一一发送到系统服务器进行对应的处理,服务器完成处理后将数据返回给用户。典型的B/S模式[14]。4.4.1前端页面设计与动态导航的实现前端使用HTML+CSS+js设计,配合PS和flash处理的素材,使得页面看起来美观舒适,首页展示各部分内容概要等信息,符合用户的操作习惯。用户只需在现有终端的浏览器中输入服务器的域名或IP地址而不需安装任何插件,即可打开我们的平台;需要注意的是:因为我们的系统还没真正发布成正规的网站,只是将项目部署到了本地IIS服务器上面;其他需要访问的终端必须和服务机在同一个局域网中,只要在浏览器地址栏中输入:http://服务器机IP:端口号/即可访问系统。首先,分析前端运行的页面。下面我们以海洋湛江为例,介绍一下前端主要的实现方式。这个是Sort.asp页面,加载数据库连接conn.asp、版头top.asp、底部独立文件bottom.asp和自定义函数库function.asp(包含所有数据查询和数据操作函数)。以参数调用方式调用函数库里面的函数,页面以<%=SortArticle(cid,6)%>这种方式把调用的数据在页面显示。把常用的数据查询和数据操作函数放在一个公用的函数库function.asp既可以方便维护升级,又可以减少编码工作量加强代码复用。而统一定义版头和底部独立文件既可以保持网站风格的统一,又可以方便维护和修改。版头top.asp主要实现是加载网页flash动画插件application/x-shockwave-flash播放服务器下的版头动画和通过数据库调用绑定前端生成动态的导航栏。底部独立文件bottom.asp主要是版权信息、联系方式和后台登录入口等内容。下面讲述一下组合方式。首先把版头、版脚、数据库连接和加载进Sort.asp。加载代码:<!--#includefile="conn.asp"--><!--#includefile="function.asp"--><!--#includefile="top.asp"--><!--#includefile="bottom.asp"-->加载好上述文件,做好网页基本布局后,需要引用函数SortArticle(cid,Num)来实现页面传参,根据参数读取取数据库信息,返回对应类型的文章列表。cid代表检索的栏目编号,Num代表一页显示的记录条数。页面在需要的块里以<div><ulid="plist3"><%=SortArticle(cid,6)%></ul></div>方式引用。具体实现效果如图5所示。图5海洋湛江4.4.2动态抽题功能和计时自动交卷功能的实现对于考试部分的实现,我们主要介绍一下考试页面和考试成绩图表直观显示页面两个部分。考试页面我们主要是通过Request.Cookies("selectsubjectname")根据学员选择的考试单元参数selectsubjectname来去查找数据库的套题。而数据库每套题是按单元测试结构每次动态在题库中抽取生成我们即时试卷。所以每个学员考的题是不完全一样的。组卷使用随机函数randomize随机抽题的,抽取过的题目的haveselect就会由0被修改1,标记为抽过,保证抽题不会重复。通过for循环抽取够单选题和多算题的数量。以<tdwidth="100%"bgcolor="#EFEFEF"height="20"><b><%=i%>、<%=rs("question")%></b></td>方式绑定题目描述,以<tdwidth="100%"><inputtype="radio"name="NO<%=rs("id")%>"value="A">A、<%=rs("A")%></td>方式绑定单选题选项,以<tdwidth="100%"><inputtype="checkbox"name="NO<%=rs("id")%>"value="A">A、<%=rs("A")%></td>方式绑定多选题选项。设定一个计时函数统计时间,当考试时间结束时自动提醒和自动交卷。计时函数如下所示。functionattention(){alert('时间到了,请交卷!');document.getElementById('submit').click();}setTimeout("attention()",<%=session("testtime")*60*1000%>)交卷后数据提交给result.asp处理自动统计分数插入数据库。实现效果图如图6所示。图6考试页面4.4.3成绩数据可视化功能的实现对于考试成绩图表直观显示页面resultsum.asp我们只要是通过提取数据库的成绩表,把测试单元名称和分数分别传给option里面的xAxis的数组data:[]和yAxis的数组data:[]实现数据绑定各种形式的图,如条形图。在页面使用echarts插件首先需要创建一个块,然后引用echarts.js,最后配置路径选择图标类型绑定数据等,实现的核心代码为:<center><divid="main"></div></center><scriptsrc="echarts/build/dist/echarts.js"></script><scripttype="text/javascript"> //路径配置 require.config({ paths:{echarts:'echarts/build/dist'}});require(['echarts','echarts/chart/bar'//使用柱状图就加载bar模块,按需加载],function(ec){//基于准备好的dom,初始化echarts图表varmyChart=ec.init(document.getElementById('main'));varoption={tooltip:{show:true},legend:{data:[‘分数统计’]//图表标题},xAxis:[{type:'category',data:[<%’从数据库提取考试单元名称绑定%>]//作为图形横坐标}],yAxis:[{type:'value'}],series:[{"name":"分数","type":"bar","data":[<%’从数据库提取考试分数数据绑定%>]//作为图形纵坐标}]};myChart.setOption(option);//为echarts对象加载数据}); </script>考试成绩图表直观显示页面实现如图7所示。图6分数统计4.4.2后台管理员管理功能后台操作以列表方式呈现。完成登录验证后就能进入管理员操作界面,系统密码采用的事MD5加密。我们以管理员信息管理模块说一下后台的实现。为了使后台看起来简洁舒适风格统一,我们这次后台使用frameset框架。顶上加载版头top.asp,左侧加载功能导航left.asp,中间的大块这是根据导航参数动态加载的。在管理员管理界面可以对管理员信息进行添加、删除和修改。密码使用MD5加密。当管理员忘记密码的时候超级管理员可以给他们重置密码。实现如图7所示。图7管理员管理对于考试管理我们采用二级管理,管理员必须被分配到资格才能登录考试管理。这个模块囊括了所有考试信息,包括考试管理员信息、学员信息、科目信息、题库信息、成绩信息等。栏目以列表形式呈现,点击相应的节点就可以进去管理相应的内容,对信息进行添加、修改、删除操作。实现效果如图8所示。图8考试管理4.5本章小结在本章节中,由前面的开发准备阶段到设计理念,再到系统底层的代码封装,步步论述,历经艰辛终于完成系统的整体设计。同时,为了加快系统的开发进度,后台配置了kindeditor在线编辑器,这是一款所见即所得的编辑器,使用很简便和日常使用的word相似,大大减少了自己开发编辑功能的工作量,同时很多功能相似的页面使用了页面复用,通过传参的方式决定展示内容。这样一来,既减轻了存储压力,又节省了开发时间。同时简洁的代码还有利于后期修改和维护。在分数统计模块使用ECharts可以让学员直观看出自己的学习变化情况。5.系统安全5.1防SQL注入网站的运行安全是一个很重要的事情,一定要避免数据库被侵入,其处理办法多种多样,但比较常用的是参数化或使用存储过程处理和数据库的交互,还有一种更直观的方法,就是对sql进行语法过滤,过滤一些常用的关键字。在这里,我们将重点讲后者,前两者因为方法已经封装完善,直接使用类库即可,比较简单。下面用一个例子测试我们系统的安全性: "SELECT*FROMadminWHEREUsername='"+Username+"';"若将变量(即Username)设置为:'qian'or'q'='q'。这样这个sql语句就变成了:SELECT*FROMadminWHEREUsername='qian'OR'q'='q';如果提交了这行sql命令,因为'q'='q'在计算机来看永远都是true,这样攻击者就绕过了系统的安全验证,直接访问后台模块[15]。居于这一点,我们在后台登陆的用户名处输入'qian'OR'q'='q',测试是否能够顺利绕过我们的系统。效果如图9所示。图9SQL注入测试instr函数instr函数在SQL中是返回要截取的字符串在源字符串中的位置,是一个非常好用的字符串处理函数,特别是字符串分割应用上特别出色。语法如下:
instr(string1,string2,start_position,nth_appearance)
string1源字符串,要在此字符串中查找。string2要在string1中查找的字符串。start_position代表string1的哪个位置开始查找。此参数可选,如果省略默认为1.字符串索引从1开始。如果此参数为正,从左到右开始检索,如果此参数为负,从右到左检索,返回要查找的字符串在源字符串中的开始索引。nth_appearance代表要查找第几次出现的string2.此参数可选,如果省略,默认为1.如果为负数系统会报错。返回值:从Start位置开始,在String1中寻找String2,如果没有找到,则返回0。如果String1或String2为Null,则返回Null,其他情况返回String2在String1中的起始位置。过滤规则:使用Instr函数过滤SQL语句,对提交SQL语句进行二进制比较,避免SQL注入。IfInstr(Username,"or")<>0orInstr(Password,"or")<>0orInstr(Username,"and")<>0orInstr(Password,"and")<>0Thenresponse.write"<SCRIPTlanguage=JavaScript>alert('亲,没事别打人家后台的主意,好么?谢谢!\n不然后果自负哦!\n海洋教育多终端在线课程网站后台管理’);"response.write"location.href='Login.asp'</SCRIPT>"由上面的测试来看,很明显,这些无法通过系统的安全验证,证明我们的系统还是有一定程度的防SQL注入能力的。5.2密码加密一些系统为了节省开发时间,或一些没有经验的开发者会在数据库明文记录用户的用户密码,同时,由于一些开发者都采用Access
作为数据库存储数据,但Access
是大小写不敏感的,这就导致了当使用密码qianqian的时候,使用Qianqian或QIANQIAN等更多组合可能绕过登录机制,这样不但加大了暴力破解的碰撞几率,也使得整个用户数据赤裸裸的暴露在网络上,本文为了更好地解决这个问题,我采用了MD5加密用户的密码,这样不管是数据库的管理员还是网络攻击者,就算截取到数据包,也很难在短时间能将密码破解出来,当让,这也不是不可能,所以用户在设置密码的时候,尽可能的设置复杂,降低暴力破解碰撞几率。下面,我们对本系统进行对应的测试,测试账号qian,测试密码qianqian(正确的密码)测试密码QIANQIAN(qianqian的全大写)。效果如图10所示。图10密码测试 由上面测试我们可以看到,使用密码QIANQIAN是无法顺利通过系统检测的。我们看看数据库admin中的pwd属性字段。具体如图11所示。图11数据库存储字段由图清楚的看到该字段是16位的字符组层的,也就是MD5的16位存储长度。经过上面的安全测试,证明该系统可以一定程度保护用户隐私。5.3数据库安全首先对数据库进行加密处理,就算被别人下载到数据库,不知道密码也打不开,看不了里面的内容。同时把数据库名称前加“#”,然后后缀再加“ASP”,就算别人利用一些抓站程序下载网站也下载不了数据库,因为抓站程序不能下载ASP结尾和“#”结尾的文件。这样我们就可以有效的维护我们的数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026江西文演数字文化产业有限公司招聘风控法务岗位1人笔试备考试题及答案解析
- 2026江西赣州全南县金融服务中心招募招聘1人笔试备考试题及答案解析
- 2026西南证券股份有限公司中层管理人员招聘1人笔试模拟试题及答案解析
- 2026上半年北京市人民检察院所属事业单位招聘1人考试备考题库及答案解析
- 2026四川成都市简阳市委统战部招聘编外人员1人笔试模拟试题及答案解析
- 2026黑龙江哈尔滨阿城区中医医院面向社会招聘编制外合同制护理岗位12人笔试备考试题及答案解析
- 2026浙江台州市黄岩区文广旅体局招聘编制外人员2人笔试备考试题及答案解析
- 2026四川内江商茂商务服务有限责任公司招聘3人考试备考题库及答案解析
- 中车株洲电力机车有限公司2026届春季校园招聘笔试参考题库及答案解析
- 2026年中国科大地球和空间科学学院劳务派遣岗位招聘笔试模拟试题及答案解析
- (2025年)检验检测机构授权签字人考核试题(附答案)
- 检验科室内质控培训课件
- 处方书写及管理办法
- 2025年数字经济下灵活就业发展研究报告-新京报-202605
- 大学雄安校区第一组团项目水土保持方案报告书
- 7s标准化管理制度
- 2025年河南省郑州市中考一模英语试题及答案
- T/CHTS 10163-2024公路桥梁结构监测系统施工质量检验与评定标准
- 锂电池防护用聚烯烃泡沫塑料 编制说明
- 店铺合作摆摊协议书
- 校园VI设计案例体系解析
评论
0/150
提交评论