51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 5307|回复: 25
打印 上一主题 下一主题

用LR作并发测试时,发现网站一个潜在的安全性问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2006-1-17 15:22:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
目前,我用LR给公司作一个网站帐务系统的并发测试时,发现了一个潜在的安全性问题。该问题是功能测试发现不了的。
脚本录制的是一个网站用户登录网站购物、结算的过程。在运行场景中设置1个用户迭代20次,执行场景,都通过了,检查后台数据库,发现该网站用户的帐户已经为负。而客户明确要求当用户的帐户上的金额不足于购买选购的产品时,是不允许购买的。手工测试发现当用户的帐户上的金额不足于购买选购的产品时,系统是做了判断,不会允许用户购买。LR测试时为什么系统没有判断就从让其购买了,导致帐户为负呢?分析判断觉得系统可能是在客户端对用户帐户上的金额与选购产品的价格进行的比较,金额不足时,就不让客户端发送购买请求;而lr是模拟的客户端与后台服务器之间的通信,如果在脚本中让其忽略掉比较(或始终让其通过比较),lr就能把购买请求发送给服务器,就会导致帐户上的金额为负。后来与开发人员交流,证实了我的分析判断,他们就是在客户端进行的比较。
       由于涉及金钱,所以这种设计方式是个严重的潜在安全性问题。将来如果用户利用lr等测试工具,就可能无限制的购买商品,会给网站严重的损失。
      搞电子商务测试的同行们,你们看看你们的系统有无同样的问题。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2006-1-17 15:31:47 | 只看该作者

恩。。

这个问题的确是平时手工作功能测试时,不能发现的。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2006-1-17 15:44:26 | 只看该作者
原帖由 笑游天涯侠 于 2006-1-17 15:22 发表
而lr是模拟的客户端与后台服务器之间的通信,如果在脚本中让其忽略掉比较(或始终让其通过比较),lr就能把购买请求发送给服务器,就会导致帐户上的金额为负。

你在做脚本的时候让其忽略掉比较(或始终让其通过比较)了?
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2006-1-17 16:07:53 | 只看该作者
是的。始终让其通过比较。
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2006-1-17 17:21:01 | 只看该作者

那这个问题怎么解决的?

那这个问题怎么解决的?让开发人员在后台程序中判断还是在lr脚本中添加比较代码呢?
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2006-1-17 17:23:54 | 只看该作者
当然是让他们该设计了。
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2006-1-18 10:56:27 | 只看该作者
只做前台校验不做后台校验....代码是少了,呵呵
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2006-1-18 11:14:58 | 只看该作者
这个在单元测试阶段可以发现的,一般对数据有效性的检查可以在数据库,服务器和客户端这三个地方进行,最好三者都要,而且要保持一致
回复 支持 反对

使用道具 举报

该用户从未签到

9#
 楼主| 发表于 2006-1-18 11:29:19 | 只看该作者
可公司这边根本就没有作单元测试。
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2006-1-18 13:42:28 | 只看该作者
不重视是要让他们尝点苦头的,嘿嘿
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2006-1-19 11:37:48 | 只看该作者
对,他说的这个问题应该是在单元测试中应该发现的呀  !应该做单元测试的
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2006-1-19 14:23:56 | 只看该作者
问题挺严重的!
建议:修改后台的验证逻辑,从业务上。而不是加入判断是通过手工测试还是LR测试,问题的本质就是逻辑有问题,而不是找个幌子忽悠过去!
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2006-1-20 15:27:08 | 只看该作者
服务端与客户端都有功能特性,都应该加以测试与验证,因为服务重点的协议接口处理与业务逻辑处理,客户端重点在协议接口处理与行为逻辑处理。
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2006-1-22 00:22:06 | 只看该作者
不错不错,看来lr的测试中还是很有些东西可以挖掘的啊
多谢分享!
回复 支持 反对

使用道具 举报

该用户从未签到

15#
发表于 2006-1-22 16:03:40 | 只看该作者
这个错误太低级了,业务逻辑都应该在服务器端实现,何况是这么重要的逻辑,这家公司缺乏这么基本的能力,应该直接开掉!;(
回复 支持 反对

使用道具 举报

该用户从未签到

16#
发表于 2006-2-6 12:36:54 | 只看该作者
我觉得这个问题和LR没有什么太大的联系,问题时出在你的代码上!再说的严重一点,是你测试的有问题!
回复 支持 反对

使用道具 举报

该用户从未签到

17#
发表于 2006-2-7 11:32:22 | 只看该作者
顶一下,多大家多发些发现的典型问题,共同提高。
回复 支持 反对

使用道具 举报

该用户从未签到

18#
发表于 2006-2-7 11:47:50 | 只看该作者
这个问题发现的好啊,我也要好好学习学习高人的思维呢
回复 支持 反对

使用道具 举报

该用户从未签到

19#
发表于 2006-2-7 15:45:54 | 只看该作者
高人我不明白!如果程序员在客户端判断了,请求怎么还能到达服务器?他可以在页面控制如果不能购买商品就不发送请求啊?我是新手有点不明白!请高人指教!
回复 支持 反对

使用道具 举报

该用户从未签到

20#
发表于 2006-2-7 16:38:17 | 只看该作者

说点自己的理解

原帖由 juiwo 于 2006-2-7 15:45 发表
高人我不明白!如果程序员在客户端判断了,请求怎么还能到达服务器?他可以在页面控制如果不能购买商品就不发送请求啊?我是新手有点不明白!请高人指教!



实际上在客户端判断了,请求并不能到达服务器;但是用lr直接模拟客户端向服务器发送请求是能够到达服务器的。换句话说,如果电子商务网站在上线应用时,也被怀有特别目的的人发送了这样的请求到后台服务器,这时就很难说不会造成损失。因此,业务逻辑的判断的代码应该写在后台,不能放在客户端。

不过在编程中,客户端判断也能减轻后台的一些压力。比如,像用户名为空,是否含有非法字符这样的不涉及业务逻辑的判断完全可以写在前台。

这个是我在编程和测试中的一点理解。有不妥之处请指正。:p
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-22 08:14 , Processed in 0.087016 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表