Web框架下安全漏洞的测试反思
此文已由作者王婷英授权网易云社区发布。
欢迎访问网易云社区,了解更多网易技术产品运营经验。
在平时的测试中,一般情况下,我们都是比较关注功能业务测试,以及对应的接口测试,很少去关注对应的业务设计上存在的安全漏洞测试分析。随着行业对安全的要求越来越高,同时我们电商是经常在网络上发生交易操作的网站,更是要关注安全测试相关的测试场景的考虑。
之所以来编写这篇web的里的安全测试的文章,主要是在平时的测试过程中,发现了我们的考拉网站上存在一些安全性的漏洞。一部分的安全漏洞不会公司带来资损,但是还有一部分的安全性漏洞会对公司造成一定的资损,这样子的安全性的漏洞更应该被重视,那么安全性的测试也更应该被重视起来。
简单罗列目前发现的安全性问题:
用户购买会员的金额可以通过修改请求里的金额,进行购买--------根本原因:后端的代码没有将拿到的用户的金额和实际的金额进行对比,再去发出下一步的支付流程。
对订单进行评论的获取考拉豆的时候,可以通过变更URL上的orderID来进行变更,从而将别人的订单进行评价,而获取别人的考拉豆---根本原因:后端没有对订单的所属进行判断,只是核对该订单是否存在
下面详细的说明几种常见的漏洞:
1、通过修改请求里的Response参数
实名认证这里的请求:https://m.kaola.com/member/activity/valid/nameAuth.html,只需将请求里Response里的code修改为:unknown200,以及将success的值修改为true,然后将这个请求发出去之后,我们的刷子用户就可以成功的绕过这个围墙了,去购买参加我们的试用会员了,从而可以享受我们的7天的会员96折的价格
2、修改URL上的参数,操作不属于自己的订单信息(越权)
这个是通过修改URL上的订单参数,可以查看别人的订单信息,以及物流状况,以及对订单进行申请售后等操作
这个也是对订单进行变更,对别人的订单进行评价,来收获别人的订单的返考拉豆
通过修改URL链接上的参数来进行一些非对应账号的信息的查看和操作,从安全的角度来看是没有进行隐私保护操作。甚至会带来一些客户投诉,更加严重的是,用户对我们的产品失去信任,不再使用。这些不应该是是开发人员去思考的,更应该是QA在平时的需求测试中进行关注的地方。
有人说,修改订单号,怎么可能,别人怎么知道我们的订单号生成的规律。其实我们认真的分析我们的订单号,还是可以找到一定的规律
如:gid=201712102237GORDER36432705---在GORDER前面的是我们的订单生成的年月日,后面是8位流水号,其实真的要去操作,还是在一定程度上可以修改URL的参数。
3、本应该是post请求,硬是设计成get请求
为加强QA对功能业务重视的情况下,同时也要在平时的业务测试的过程中重视安全性相关方面的测试,为了更好的在测试过程中养成敏锐的观察能力。首先web需要了解下,Web的相关节点,浏览器、http请求、中间件、数据库等之间的关系。
在数据的传输中,我们可以把 web 简单的分为几个层次:
浏览器:浏览器即客户端,提供客户端和服务器端的数据信息交互。
http:客户端与web服务器进行交互时就存在web请求,这种请求都基于统一的应用层协议——HTTP协议来交互数据。http属于轻量级协议,无需连接,提供了对通信错误的容错性(常见的3次握手)。
中间件:中间件是位于平台(硬件和操作系统)和应用之间的通用服务
Server容器:Server容器负责解析用户请求和脚本语言,类似的有Tomcat,JBoss等。我们访问网页看到是web容器处理后的内容。
数据库:动态页面可提供交互式的信息查询服务,主要依赖于web数据库的实现,对外提供包含表单的Web页面作为访问接口,查询结果也以包含数据列表的Web页面形式返回给用户。
那么针对上面的一些问题,我们应该怎么去避免呢?如上面的越权的信息,实际上是没有对当前的cookie进行验证,以致可以通过修改URL上的参数就能操作别人的订单信息。
对敏感数据存在的接口和页面做cookie,ssid,token或者其它验证,如下图所示:
其实,还有很多安全方面的测试,如cookie里不应该暴露比较敏感的信息等等。
结束语:
这些安全的漏洞的根本的来源是开发设计逻辑存在缺陷,于是给我们的黑客存在可利用的空间。在平常的业务测试中,我们不可能要求开发设计逻辑能面面俱到,也不可能发现所有的逻辑缺陷,这些缺陷给我们带来的伤害其实是巨大的。如用户的验证码被爆破、会员手机号被遍历、抽奖次数本地被修改、跳过手机短信验证修改他人密码、登陆等接口返回用户密码等信息、签到逻辑不严,导致薅羊毛等等问题,都会给我们的产品打上一个不好的标签。因此,功能QA不仅子在乎开发的需求是否满足交互稿的同时,而且也要考虑下各种安全的场景测试,在一定程度上规避安全漏洞被不法用户使用,造成不堪后果的损失。
网易云免费体验馆,0成本体验20+款云产品!
更多网易技术、产品、运营经验分享请点击。
相关文章:
【推荐】 Python3下基于bs4和sqlalchemy的爬虫实现
Web框架下安全漏洞的测试反思的更多相关文章
- 蜗牛历险记(二) Web框架(下)
Web框架第三篇--缓存篇 缓存的优劣很大程度上决定了框架的效率,一个有节操的缓存它应该是高效的,利用率高的,具备更多扩展功能的. 一.介绍之前 计算机各个硬件的运行效率是不一样的,CPU>&g ...
- 在Centos下对高并发web框架Tornado的性能进行测试
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_89 在之前的一篇文章中,我们在1g1核的惨淡硬件环境下,对 uwsgi + django 和 gunicorn+ django 的 ...
- TechEmpower Web 框架性能第19轮测试结果正式发布,ASP.NET Core在主流框架中拔得头筹
TechEmpower 第19轮编程语言框架性能排行榜2020年5月28日正式发布,详见官方博客:https://www.techempower.com/blog/2020/05/28/framewo ...
- 应用安全 - Web框架 - Apache Solr - 漏洞汇总
CVE-2019-12409 Date: // 类型: 配置不当导致远程代码执行 前置条件: 影响范围: Solr and for Linux Solr下载:https://www.apache.or ...
- 应用安全 - Web框架 - 数据库管理 - phpMyAdmin - 漏洞汇总
CVE-2019-18622 Date: 2019.10.28 类型: SQL injection in Designer feature 影响范围: phpMyAdmin versions prio ...
- 应用安全 - Web框架 - Apache Flink - 漏洞汇总
SSV ID:SSV-98101 -- 类型: 文件上传导致远程代码执行 flink下载: https://www.apache.org/dyn/closer.lua/flink/flink-1. ...
- TechEmpower 21轮Web框架 性能评测 -- C# 的性能 和 Rust、C++并驾齐驱
自从2021年2月第20轮公布的测试以后,一年半后 的2022年7月19日 发布了 TechEmpower 21轮测试报告:Round 21 results - TechEmpower Framewo ...
- web端常见安全漏洞测试结果分析-- appscan
基于appscan测试结果分析: 一.XSS跨站脚本 指的是攻击者往Web页面里插入恶意html代码,通常是JavaScript编写的恶意代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被 ...
- Tomcat服务器本地的搭建,以及在 IDEA软件下的配置,以及项目的测试运行(基于supermvc框架下的web)
一.声明 使用了基于springmvc的supermvc的web框架.实习公司的框架. 二.tomact的下载与安装 1选择适合自己电脑配置的jdk和jre版本(截图来自tomcat的官方网站http ...
随机推荐
- Lightoj 1231 - Coin Change (I) (裸裸的多重背包)
题目链接: Lightoj 1231 - Coin Change (I) 题目描述: 就是有n种硬币,每种硬币有两个属性(价值,数目).问用给定的硬币组成K面值,有多少种方案? 解题思路: 赤果果的 ...
- 洛谷 P3312 [SDOI2014]数表
式子化出来是$\sum_{T=1}^m{\lfloor}\frac{n}{T}{\rfloor}{\lfloor}\frac{m}{T}{\rfloor}\sum_{k|T}\mu(\frac{T}{ ...
- PopupWindow(1)简介
PopupWindow有点类似于Dialog,相同点在于都是弹出窗口,并且都可以对其进行自定义显示,并且里面的监听组件,进行相应的操作,但它与Dialog又有很大的区别,PopupWindow只是弹出 ...
- Windows下降权MYSQL和apche的运行级别(普通用户权限运行)
1.MYSQL的降权运行 新建立一个用户比如mysql net user mysql microsoft /add net localgroup users mysql /del 不属于任何组 ...
- 【ADO.NET】 基础 (SQL Server)
一.Web.config配置 <connectionStrings> <add name="constr_name" connectionString=" ...
- AJPFX关于java中可访问控制符和非访问控制符的详细总结
1.类的修饰符分为:可访问控制符和非访问控制符两种. 可访问控制符是:公共类修饰符 public 非访问控制符有:抽象类修饰符 abstract :最终类修饰符 final 1 )公共类修饰符 pub ...
- 上交oj1219 重要的逆序数对
题意: https://acm.sjtu.edu.cn/OnlineJudge/problem/1219 思路: 在经典的归并排序求逆序数对算法基础上稍作修改. 实现: #include <io ...
- sc服务查询
sc query lanmanse2rver |find /i "state" |find /i "running" || ( echo 该服务没有运行时,要执 ...
- 51nod 1417 天堂里的游戏
基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 收藏 关注 多年后,每当Noder看到吉普赛人,就会想起那个遥远的下午. Noder躺在草地上漫无目的的张望,二 ...
- Android(java)学习笔记167:横竖屏切换时Activity的生命周期
1.横竖屏切换的生命周期 默认情况下横竖屏切换,先销毁再创建 2.有的时候,默认情况下的横竖屏切换(先销毁再创建),对应用户体验是不好的,比如是手机游戏横竖屏切换对游戏体验非常不好,下面两种方 ...