刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

【老版知识点】阅读下列说明,回答下列问题。

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

PreparedStatement
pStmt=connection.prepareStatement("UPDATE SalesOrder SET status= ? WHERE
OrderID= ?")
然后通过setString(...);的方式设置参数值后加以执行。
设计测试用例以测试SQL注入,并说明该实现是否能防止SOL注入。

使用微信搜索喵呜刷题,轻松应对考试!

答案:




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

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

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

解析:

本题考查了Web应用中的SQL注入问题。SQL注入是Web应用安全测试的重要部分,当Web应用直接将用户输入的数据拼接到SQL语句中时,就存在被恶意用户利用的可能性,造成数据泄露、数据篡改等严重后果。

在本题中,销售订单的更新使用的是PreparedStatement方式,参数通过setString方法设置。这种方式可以确保用户输入的数据不会作为SQL语句的一部分被执行,而是作为参数传递,并由数据库驱动进行适当处理。即使输入包含SQL功能符号,这些符号也会被转义,不会影响到SQL语句的结构。因此,这种实现方式是防止SQL注入的有效手段。

为了测试该系统的安全性,可以设计测试用例,尝试在"status"和"OrderID"参数中插入SQL功能符号,如’–’、’OR’等,然后观察系统的反应。如果系统能够正确处理这些输入,不执行非预期的SQL操作,那么就可以认为该系统对SQL注入有一定的防护能力。

创作类型:
原创

本文链接:【老版知识点】阅读下列说明,回答下列问题。[说明]某大型匹萨加工和销售商为了有效管理匹萨的生产和销售

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share