当前位置:首页计算机类软件水平考试中级软件评测师->某大型匹萨加工和销售商为了有效管理匹萨生产和销售情况,欲开发

某大型匹萨加工和销售商为了有效管理匹萨生产和销售情况,欲开发一套基于Web信息系统。其主要功能为销售、生产控制、采购、运送、存储和财务管理等。系统采用Java EE平台开发,页面中采用表单实现数据提交与交互,使用图形(Graphics)以提升展示效果。

4、系统实现时,对销售订单更新所用SQL语句如下:

PreparedStatementpStmt=connection.prepareStatement("UPDATE SalesOrder SET status= ? WHEREOrderID= ?")

然后通过setString(...);方式设置参数值后加以执行。

设计测试用例以测试SQL注入,并说明该实现是否能防止SOL注入。

答案:
本题解析:

设计如下测试:[注:设计类似如下用例即可,其中包含SQL功能符号使SQL变为不符合设计意图即可]

PreparedStatement

pStmt=connection.prepareStatement("UPDATE SalesOrder SET status= ? WHERE

OrderID= ?")

采用传递参数形式,JavaJDBC驱动自动会将其按照相应类型处理,功能符号会进行转义。因此,该SQL语句是安全。

【解析】

第四小题考查Web应用安全性方面SQL注入,SQL注入是Web应用安全性测试重要方面之一。

许多Web应用系统采用某种数据库,接收用户从Web页面中输入,完成展示相关存储数据(如检查用户登录信息)、将输入数据存储到数据库(如用户输入表单中数据域并点击提交后,系统将信息存入数据库)等操作。在有些情况下,将用户输入数据和设计好SQL框架拼接后提交给数据库执行,就可能存在用户输入数据并非设计正确格式,就给恶意用户提供了破坏机会,即SQL注入。恶意用户输入不期望数据,拼接后提交给数据库执行,造成可能使用其他用户身份,查看其他用户私密信息,还可能修改数据库结构,甚至是删除应用数据库表等严重后果。SQL注入在使用SSL应用中仍然存在,甚至是防火墙也无法防止SQL注入。因此,在测试Web应用时,需要认真仔细设计测试用例,采用Web漏洞扫描工具等进行检查,进行认真严格测试,以保证不存在SQL注入机会。

本系统实现时,对销售订单更新所用SQL语句如下:

PreparedStatement pStmt=connection.prepareStatement("UPDATE SalesOrder SET status= ? WHERE OrderID= ?;");

然后通过setString(...);方式设置参数值后加以执行。

在SQL语句中采用参数方式传递前台传递来值,因为不论是什么值,都会只作为setString(...)参数值,不会作为SQL语句其他功能符,所以本SQL语句更新订单方式是防止SQL注入。设计如下测试SQL注入测试用例:

status: 'fulfilled' --, OrderID: '2014' OR '1'='1'

检查执行结果,或者传递给数据库SQL语句,会发现所有用例中功能字符都会经过特定转义后作为status和OrderID值。和拼接SQL方式不同,采用参数形式传递时,JavaJDBC驱动自动会将其按照相应类型处理,功能符号会进行转义。因此,测试用例中注释--、OR等都会作为参数值,不会作为功能符,也就不会改变SQL语句本身功能结构,该SQL语句是安全。

更新时间:2022-07-15 00:21
纠错

你可能感兴趣的试题

单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.V(S2)和P(S4)
  • B.P(S2)和V(S4)
  • C.P(S2)和P(S4)
  • D.V(S2)和V(S4)
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.V(S1)P(S2)和V(S3)
  • B.P(S1)V(S2)和V(S3)
  • C.V(S1)V(S2)和V(S3)
  • D.P(S1)P(S2)和V(S3)
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.P(S4)和V(S4)V(S5)
  • B.V(S5)和P(S4)P(S5)
  • C.V(S3)和V(S4)V(S5)
  • D.P(S3)和P(S4)V(P5)
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.P(S3)和V(S4)V(S5)
  • B.V(S3)和P(S4)P(S5)
  • C.P(S3)和P(S4)P(S5)
  • D.V(S3)和V(S4)V(S5)
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.P(S2)和P(S4)
  • B.P(S2)和V(S4)
  • C.V(S2)和P(S4)
  • D.V(S2)和V(S4)
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.V(S1)、P(S1)和V(S2)V(S3)
  • B.P(S1)、V (S1)和V(S2)V(S3)
  • C.V(S1)、V(S2)和P(S1)V(S3)
  • D.P(S1)、V(S2)和V(S1)V(S3)
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.序列图
  • B.状态图
  • C.通信图
  • D.活动图
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.合并分叉
  • B.分支
  • C.合并汇合
  • D.流
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.产甲2套,乙3套
  • B.生产甲1套,乙4套
  • C.生产甲3套,乙4套
  • D.生产甲4套,乙2套
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.见图A
  • B.见图B
  • C.见图C
  • D.见图D
查看答案