目录
我刚开始接触安全测试的时候,想的最多就说那种在昏暗的灯光下,带着神秘面具的黑客,对着键盘噼里啪啦一顿猛如虎的操作,然后长舒一口气,最后来了句yes,完美收工!
随后的职业生涯中,在同行的带领下开始了第一次安全测试之旅。当时大致的过程如下,选择一款安全扫描工具(Appscan),配置好要扫描的网站地址,登录信息等,点击开始扫描,two thousands years later,Appscan生成了一份非常详细的安全测试报告,然后我们对这份详细的报告里面的安全问题进行了一一验证,最后再提交给开发进行修复,经历了这次实战之后,让我觉得安全测试只不过如此嘛,随着个人工作经验的不断积累,我对于安全测试的理解也越来越深刻,此致,记录个人对于安全测试的理解。
对于软件安全测试,本次主要分享以下几类安全问题,第一类:软件系统的账户及数据安全;第二类:常见的web攻击及防御手段;第三类:业务系统测试可能存在的安全。以下内容限于个人水平有限,如有叙述不当,还请海涵。
可以说大部分的公司,对于我们核心系统的账户/密码的保护几乎为零,任何一个员工的任何一个理由就能轻易的拿到管理后台的账户和密码,并且对于这个账户的密码几乎也不做任何的定期修改,还有的公司直接将客户的用户名和密码打印在日志里面,对于这类情况,其最大的问题在于公司缺少对于这块的风险意识和完善的安全机制,总会觉得一切没有那么巧合,或许到这你才恍然发现,为什么我们的信息会被泄露。新闻媒体经常报道,某某因贩卖用户资料被逮捕,但是没抓到的又有多少呢?之前我在的一家公司,一小伙为了利益,将公司500G的客户资料卖给了竞争对手,被当场抓住,之所以能抓住,一切得力于公司健全的安全机制,对于软件系统而言,客户的信息至关重要,切莫让悲剧发生!
在互联网开始兴起之初,存在各式各样的web安全问题,不过现在随着各种框架的不断诞生,对于此类的安全问题都做的比较好了,同时也有很多扫描工具可以完成安全扫描,所以这块对于我们来说不需要投入太多的精力。但是,从学习的角度来说,了解一下常见的web攻击及防御手段也是有必要的。
' or '1'= '1
。这是最常见的sql注入攻击,当我们输如用户名 admin,然后密码输如'or '1'= '1
的时候,我们在查询用户名和密码是否正确的时候,本来要执行的是select * from user where username=user and password=pwd
,经过参数拼接后,会执行sql语句 select * from user where username='admin' and password=' ' or ' 1'='1 '
,这个时候1=1是成立,自然就跳过验证了。';drop table user;--
,那么sql命令为select * from user where username='admin' and password='';drop table user;--'
这个时候我们就直接把这个表给删除了。
,如果我没有对他的内容进行处理,直接存储到数据库,那么下一次当其他用户访问他的这篇文章的时候,服务器从数据库读取后然后响应给客户端,浏览器执行了这段脚本,然后就把该用户的cookie发送到攻击者的服务器了。
,应该只是字符串却有了代码的作用。www.A.com/transfer?account=666&money=10000
,那么这个时候很可能我就向账号为666的人转了1wRMB。我们先来看一个比较通用的电商流程图,从这个流程图中,我们去分析可能被忽略的安全问题。
注册登录功能,常见的业务安全漏洞:暴力破解、短信验证码回传、短信轰炸、恶意短信发送,纵向越权登录。
用户数据功能,常见的业务安全漏洞:通过订单号或id直接查询数据详情,不做用户关联校验。
数据查询功能,常见的业务安全漏洞:恶意爬取数据,该模块一般不会存在太多安全问题,但需要将之后的下单功能进行观察,即,在进行查询开关的控制时,下单接口也必须要进行控制。
下单功能,常见的业务漏洞:不支持的权限使用(使用不支持的红包进行下单)及开关未验证,库存或临界值被击穿(并发测试),优惠券,积分被击穿,订单信息被篡改(基础信息、价格等),恶意占库存,
取消订单功能,常见的业务漏洞:并发测试取消库存
支付功能,常见的业务漏洞:支付金额篡改,付款前取消订单,先付款再更新订单金额。支付证书过期案例!
订单完成功能:常见的业务漏洞,积分、优惠券未送到本订单的用户
退货功能:并发退货,库存返回正确,扣减的,积分或优惠券余额不足
用户输入可能涉及到js注入,敏感信息,生成大量垃圾数据。
1、增加安全处理策略 2、数据脱敏,加签、加密 3、IP黑白名单 4、安全测试
下面是一份非常优质的学习资源,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!
以上软件测试资料需要的可以私信我都可以免费获取
这还有一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中资料包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。
学习不要孤军奋战,最好是能抱团取暖,相互成就一起成长,群众效应的效果是非常强大的,大家一起学习,一起打卡,会更有学习动力,也更能坚持下去。
欢迎留言,或是关注我的专栏和我交流。