• 重点:测试与开发中要考虑的安全问题,那些年我们曾经犯过的错......


    前言

    在开发及测试过程中,系统的安全性是不得不考虑的问题,一旦系统出现安全问题,轻则用户信息或系统数据被盗,重则导致公司资金流失,因此写此文档以此来记录那些年我们曾经犯过的错。

    1、短信
    短信发送可能存在的安全漏洞有:
    短信轰炸

    攻击手段:通过脚本不断调用短信发送接口给指定手机号发送短信。

    危害:
    用户投诉;
    产生大量短信费用;

    防御:
    增加图形验证码;
    增加同一个手机号1天的发送次数;
    封IP;

    短信验证码
    攻击手段:从短信发送接口返回的报文中获取短信验证码。
    危害:用户手机号被使用,用户信息泄露。
    防御:不在响应报文中返回短信验证码。
    总结:响应报文中凡是涉及的敏感信息都应三思,坚持“能不返回尽量不返回的原则”。

    短信验证
    攻击手段:用户发现在验证手机验证码时未将手机号和验证码一起进行验证,从而通过他人手机号和自己手机号的验证码通过系统验证。
    危害:用户账号、信息泄露。
    防御:增加验证逻辑。

    2、权限漏洞
    凡是涉及到权限访问的,务必需要增加权限校验逻辑。

    订单
    订单查询、订单取消、订单创建务必增加用户验证,即:用户只能创建、取消、查询自己的订单。

    一旦用户能够通过篡改数据查看到其它用户的订单信息,就会导致用户订单信息泄露,比如:券码、取票码、用户姓名、电话、地址等敏感信息泄露。

    文件下载
    不同用户的下载权限不一样,如果对下载的链接未做加密或权限控制,则普通用户可通过修改下载链接的某些参数来下载所有文件。

    典型案例
    购买机票赠送无门槛红包活动。某公司推出购买机票成功后,即送对应金额的无门槛红包。

    其处理逻辑为用户下单支付并出票成功后,即往当前登录的用户账号里赠送红包,然后活动上线没多久,就被关闭了,其原因为:用户A在购买机票后可以将红包转到用户B的账号下。

    具体操作为A用户在下单完成跳到支付页面时退出账号,登录B账号,然后支付完成出票,此时红包被赠送到B账号内。

    总结:在开发或测试时,凡是涉及到用户权限的操作,一定要确保权限的安全。

    3、入库安全
    在进行入库操作时,遵循原则为凡是能够从数据库或后台获取的数据,绝不从前端获取。

    因为所有前端过来的数据都可能是不安全的。同时,在进行入库时,还需要防止JS注入,因为一旦JS注入成功后,会导致后台某些功能不可用。

    4、并发控制
    在涉及共享资源时,并发是必须要考虑的问题,并发的场景一般分为单个业务的并发和多个业务的并发,单个业务的并发比如下单冻结库存,这时我们可以用fiddler进行并发测试,多个业务的并发。

    比如,多个线程并发时包含下单,取消订单等涉及共享资源的操作,这时我们可以使用jmeter编写对应脚本进行并发测试。

    另外,共享资源除了并发外,还可能存在另一个问题。

    我们知道一般库存的应用场景是:下单锁库存-取消订单释放库存-支付成功扣库存-退款还库存这么几个操作。

    那是否可能存在这样一种场景,用户下单成功后跳转支付页面,等待订单超时释放库存,然后进行支付完成,如果系统在进行支付回调的时候没有对订单状态进行判断的话,就会导致超库存现象,因为订单取消后库存就释放了,用户可以再下一单,进行支付购买。

    所以,我们在开发或测试过程中,每走一步都应该清楚的知道,前提条件是什么。

    5、敏感信息
    敏感信息是指用户或公司的私密信息,这些信息必须在某些条件下才能被获取到,这些信息一旦被泄露对个人及公司都会造成影响。常见的敏感信息比如:取票码、票号、券码、手机号、身份证等。

    因此,在开发和测试的过程中,一旦遇到类似敏感信息,务必考虑清楚,这些数据在什么条件下才能被获取?

    所有获取这个敏感信息的通道都做了验证。工作中有遇到过不支付能获取取票码的,会员信息被窃取的等。

    下面是我整理的2022年最全的软件测试工程师学习知识架构体系图

    一、Python编程入门到精通

    请添加图片描述

    二、接口自动化项目实战

    请添加图片描述

    三、Web自动化项目实战

    请添加图片描述

    四、App自动化项目实战

    请添加图片描述

    五、一线大厂简历

    请添加图片描述

    六、测试开发DevOps体系

    请添加图片描述

    七、常用自动化测试工具

    请添加图片描述

    八、JMeter性能测试

    请添加图片描述

    九、总结(尾部小惊喜)

    人生的秘诀,就是寻找一种最适合自己的速度,莫因疾进而不堪重荷,莫要因迟缓而去空耗生命。

    生活坏到一定程度就会好起来,因为它无法更坏,努力过后,才知道许多事情,坚持坚持,就过来了。

    在我的目标为达到之前,我的奋斗不会停止,因为,我的生命没有完结,大家,不要忘记,你的目标没有达到,所以你们的奋斗请不要终止,我们要一起奋斗一起成长一起进步。加油,没有什么事是做不了的。

  • 相关阅读:
    单元测试,集成测试,系统测试的区别是什么?
    MySQL数据库干货_20——MySQL中的索引【附有详细代码】
    【Web APIs】JavaScript 事件基础 ② ( “ 事件 “ 开发步骤 | 常见鼠标 “ 事件 “ )
    java游戏制作-拼图游戏
    Spring refresh 方法之invokeBeanFactoryPostProcessors 方法解析
    超级浏览器的Cookies实现跨境电商防关联
    十年耕耘,致力于让垂直领域合作企业提升竞争力
    有被惊艳到!阿里达摩院面向开发者公布的Java全体系成长路线,从P5-P8职级全系
    基于公共业务提取的架构演进——外部依赖防腐篇
    小程序商城框架源码 小程序源码带前端+后台+数据库
  • 原文地址:https://blog.csdn.net/shuang_waiwai/article/details/126726092