首页
登录
从业资格
某高校开发了一套基于Web的教务管理系统,实现教务管理人员课程设置、学生选课和成
某高校开发了一套基于Web的教务管理系统,实现教务管理人员课程设置、学生选课和成
题库
2022-08-02
66
问题
某高校开发了一套基于Web的教务管理系统,实现教务管理人员课程设置、学生选课和成绩查询、教师上传成绩以及特殊情况下教务处对成绩进行修改等功能。系统基于Java EE平台实现,采用表单(Form)实现用户数据的提交并与用户交互。系统要支持:7在特定时期内100个用户并发时,主要功能的处理能力至少要达到10个请求/秒,平均数据量8KB/请求;8用户可以通过不同的移动设备、操作系统和浏览器进行访问。系统实现时,对成绩更新所用的SQL语句如下:"UPDATE StudentScore SET score="+intCTientSubmitScore+"WHERE Stuent_ID='"+strStudentID+"';"设计1个测试用例,以测试该SQL语句是否能防止SQL注入,并说明该语句是否能防止SQL注入,以及如何防止SQL注入。
选项
答案
解析
设计如下测试:【注:设计类似如下用例的一个即可,其中包含SQL功能符号使SQL变为不符合设计意图即可,如包含',DROP等】。
(1)intClientSubmitScore: 100 --, strStudentID: 20130002,则该SQL变为:
UPDATE StudentScore SET score = 100 -- WHERE Student_ID='20130002';
(2)intClientSubmitScore: 100, strStudentID: 20130002';DROP TABLE StudentScore--,则该SQL语句变为:
UPDATE StudentScore SET score=100 WHERE Student_ID='20130002'; DROP TABLE
StudentScore -';
从测试用例所拼接处的SQL可以看出,该SQL语句不安全,容易造成SQL注入。
防止SQL注入的方法主要有:拼接SQL之前对特殊符号进行转义,使其不作为SQL语句的功能符号。
【解析】
本问题考查Web应用安全性方面的SQL注入,SQL注入是Web应用安全性测试的重要方面。
许多Web应用系统采用某种数据库,接收用户从Web页面中输入,完成展示相关存储的数据(如检查用户登录信息)、将输入数据存储到数据库(如用户输入表单中数据域并点击提交后,系统将信息存入数据库)等操作。在有些情况下,将用户输入的数据和设计好的SQL框架拼接后提交给数据库执行,就可能存在用户输入的数据并非设计的正确格式,从而给恶意用户提供了破坏的机会。即SQL注入。恶意用户输入不期望的数据,拼接后提交给数据库执行,造成可能使用其他用户身份、查看其他用户的私密信息,还可能修改数据库的结构,甚至是删除应用的数据库表等严重后果。因此需要在测试阶段进行认真严格的测试。
本系统实现时,对成绩更新所用的如下SQL语句:
"UPDATE StudentScore SET Score="+intClientSubmitScore+"WHERE Stuent_ID='"+strStudentID+"';"
采用拼接字符串方式,无法防止SQL注入。例如intClientSubmitScore:100 --, strStudentID:20130002,则该SQL变为:
UPDATE StudentScore SET score=100 -- WHERE Stuent_ID='20130002';
--是SQL中注释符号,其后的内容为注释,这样上述语句中一之后的内容变为注释,只要StudentScore表中所有的记录的score都变为100,而没有受到WHERE子句后的学号限制。
再比如intClientSubmitScore:100,strStudentID:20130002'or'a'='a,则该SQL变为:
UPDATE StudentScore SET score=100 WHERE Stuent_ID='20130002'or'a'='a;
因为'a'='a'条件总是成立,因此,SQL执行结果包括学生成绩表中所有行的score都更新为100分。
更为严重的情况下,用户输入DROP等功能性命令,会造成数据库表的永久删除等严重后果,如strStudentID:20130002';DROP TABLE StudentScore --,则该SQL语句变为:
UPDATE StudentScore SET Score=100 WHERE Stuent_ID='20130002';DROP TABLEStudentScore--';
防止SQL注入的方法主要有:拼接SQL之前对特殊符号进行转义或者等价方式,使其不作为SQL语句的功能符号。验证所有输入数据能从输入层面防止SQL注入。
SQL注入在使用SSL的应用中仍然存在,甚至是防火墙也无法防止SQL注入。因此,在测试Web应用时,需要认真仔细设计测试用例,采用Web漏洞扫描工具等进行检查,以保证不存在SQL注入机会。
转载请注明原文地址:https://tihaiku.com/congyezige/2416204.html
本试题收录于:
中级 软件评测师题库软件水平考试初中高级分类
中级 软件评测师
软件水平考试初中高级
相关试题推荐
软件开发中的瀑布模型典型地刻画了软件生存周期各个阶段的划分,与其最相适应的软件开
数据库系统的组成不包括()A.数据库 B.硬件 C.操作系统 D.人员
某教学管理数据库中,学生、课程关系模式分别为:S(学号,姓名,性别,家庭住址,电
在采用面向对象开发方法开发交通系统时,若将"汽车"与"交通工具"分别设计为类,则
某开发团队中任意两人之间都有一条沟通途径。该团队原有6人,新增2人后,沟通途径将
某高校数据库中,学生S、教师T和课程C的关系模式分别为:S(学号,姓名,性别,家
软件工程的基本目标是()。A.消除软件固有的复杂性 B.开发高质量的软件
以下关于软件测试的叙述中,不正确的是()。A.软件开发工程化使自动化测试完全代
软件工程的基本原理不包括()。A.分段管理软件开发,将复杂问题简化处理 B.
敏捷开发的原则不包括()。A.使用分阶段的计划来管理流程,并详细地编写开发文档
随机试题
[originaltext]Lastweek,yourecall,wediscussedtheearlydevelopmentof
BillionsofyearsbeforetheSunwasborn,theMilkyWaygalaxyflickedout
[originaltext][22]Anelderlywomanyesterdaymadealegalclaimagainsta
下面哪一种激素不属于腺垂体激素A.生长激素 B.催产素 C.催乳素 D.促
对某双向八车道高速公路沥青路面工程质量进行检验评定时,采用手工铺砂法测路面的构造
男性,28岁。车祸伤致脾破裂。急诊剖腹探查见腹腔内积血量达2500ml,用升压药
房地产租赁业务是房地产经纪人主要业务之一。租赁房屋的承租方对房地产经纪人而言,客
城市地下空间的开发利用应贯彻统一规划、综合开发、()、依法管理的原则。(2
进行区域消防安全评估时应对区域消防力量进行分析评估。对区域消防力量评估的主要内容
关于基金管理人的基金资产估值工作,表述正确的有()。A:建立健全估值决策体系B
最新回复
(
0
)