软件测试之Web安全测试详解
前言
随着互联网时代的蓬勃发展,基于Web环境下的应用系统、应用软件也得到了越来越广泛的使用。
目前,很多企业的业务发展都依赖于互联网,比如,网上银行、网络购物、网络游戏等。但,由于很多恶意攻击者想通过截获他人信息去谋取利益,因此,会对Web服务器进行攻击。攻击的方式也非常多,常见的有SQL注入、跨站脚本攻击、跨站请求伪造、缓存区溢出等。
由此,我们不得不对网络环境的安全性加以提升。软件测试工程师通过分析黑客的攻击行为等方式,对网站进行Web安全测试。
同时,我也为大家准备了一份软件测试视频教程(含面试、接口、自动化、性能测试等),就在下方,需要的可以直接去观看,也可以直接点击文末小卡片免费领取资料文档
软件测试视频教程观看处:
B站封神的接口测试教程,30天练完70个项目实战(含自动化测试、性能测试),学完即就业,永久白嫖!
1、SQL注入
在Web安全测试中,SQL注入是最为常见的一种手段。主要是指攻击者通过巧妙的构建非法SQL查询命令,插入表单或请求字符串后提交,并根据返回的结果,来获得想要的数据。这就是SQL注入。
SQL注入的方法一般有猜测法和屏蔽法。猜测法主要是通过猜测数据库可能存在的表名和列名,根据组合的SQL语句获取数据表的信息。屏蔽法主要是利用SQL输入的不严谨进行逻辑验证,从而使得SQL验证结果始终为真,从而绕开验证的目的。

当然,这2种是SQL注入最基础的、最简单的方法。在测试过程中,我们需要注意命名规则,以及对关键词的屏蔽等。另外,我们也需要在工作中,不断总结经验,更加深入的学习猜想法和屏蔽法等。
2、跨站脚本攻击
跨站脚本攻击(简称XSS),是一种迫使Web站点回显可执行代码的攻击技术。
当Web站点回显后,攻击者会重新提供可执行代码。一般情况下,他们会往Web页面里插入恶意Script代码,当用户浏览该页面时,嵌入其中的Script代码会被执行,从而攻击终端用户。
XSS最为常见的攻击方法为反射型XSS和存储型XSS。
反射型XSS,又称非持久型跨站点脚本攻击,也是最常见的XSS攻击方式。这种方式一般需要用户自己去点击链接,才能触发攻击者注入的XSS代码。
而存储型XSS则不同。存储型XSS又称为持久型跨站点脚本攻击,也是最直接危害用户的XSS。当攻击者在服务器中存储了攻击代码后,用户只要打开对应页面,就会触发XSS代码自动执行。这种XSS比较危险,容易产生蠕虫,盗窃用户Cookie等危害。造成这种安全问题的原因,主要是开发者在编程过程中,对一些敏感符号未进行处理,
如“/、“.”、“’”、“‘”、“<”、“>”、“?”等。或对数据库字段、数据库类型以及长度的限制等未进行处理。
3、跨站请求伪造
跨站请求伪造(简称CSRF),是一种对网站的恶意利用。它通过伪装普通用户的请求,来利用受信任的网站。与XSS攻击相比,CSRF攻击往往因为不太流行而导致难以防范。所以,我们认为CSRF往往比XSS更具危险性。
简单判断是否存在CSRF漏洞的方法,就是通过抓取正常请求的数据包,然后通过去掉Referer字段,再重新提交。如果二次提交还有效,说明存在CSRF漏洞。
为了防止CSRF,常用的方法就是在AJAX异步请求地址中,添加Token并进行验证,从而降低CSRF出现的可能。
4、缓存区溢出
缓冲区溢出是一种非常普遍存在的漏洞,广泛存在于各种操作系统、应用软件中。
利用缓冲区溢出攻击,可以导致程序出现运行失败、系统关机、重新启动等行为,或执行攻击者的指令,比如非法提升权限等。
在缓冲区溢出中,最为危险的就是堆栈溢出,它可以利用堆栈溢出,在函数返回时,将程序的地址修改为攻击者想要的任意地址,达到攻击者的目的。其最典型的例子,就是1988年利用fingerd漏洞进行攻击的蠕虫。
当然,造成缓冲区溢出的原因有很多。主要原因有对输入、输出的数据没有限制大小、长度以及格式等,还有就是对用户的特殊操作没有做异常处理导致。
所以,在测试过程中,我们需要注意输入输出的大小长度以及格式规范限制,还有需要多模拟一些异常,关注异常的处理情况。
写在最后
对Web应用软件来说,安全性包含Web服务器、数据库、操作系统以及网络的安全等,只要其中任何一个部分出现安全漏洞,都会导致整个系统的安全性问题。Web安全测试是比较难解决的问题,这个取决于测试要达到什么程度。简单说软件不可能做到100%的测试,所以也不要期望可以达到100%的安全。
在实际测试过程中,测试人员主要是针对用户的权限以及数据库的安全性进行测试,还可以借助IBM的安全漏洞扫描工具APPScan来进行漏洞扫描。
PS:这里分享一套软件测试的自学教程合集。对于在测试行业发展的小伙伴们来说应该会很有帮助。除了基础入门的资源,博主也收集不少进阶自动化的资源,从理论到实战,知行合一才能真正的掌握。全套内容已经打包到网盘,内容总量接近500个G。

☑ 240集-零基础到精通全套视频课程
☑ [课件+源码]-完整配套的教程
☑ 18套-测试实战项目源码
☑ 37套-测试工具软件包
☑ 268道-真实面试题
☑ 200个模板-面试简历模板、测试方案模板、软件测试报告模板、测试分析模版、测试计划模板、性能测试报告、性能测试报告、性能测试脚本用例模板(信息完整)
这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。
送给大家一句话,共勉:当我们能力不足的时候,首先要做的是内修!当我们能力足够强大的时候,就可以外寻了!

相关文章:
软件测试之Web安全测试详解
前言 随着互联网时代的蓬勃发展,基于Web环境下的应用系统、应用软件也得到了越来越广泛的使用。 目前,很多企业的业务发展都依赖于互联网,比如,网上银行、网络购物、网络游戏等。但,由于很多恶意攻击者想通过截获他人…...
MYSQL binlog
为了防止 binlog 文件过大导致无可用的磁盘空间,MySQL 提供了一个系统变量用来配置过期时间。 MySQL5.7 :expire_logs_days,精确度为天; MySQL8.0 :binlog_expire_logs_seconds,精确度为秒。 SET GLOBAL bi…...
Web 基础概念
自己总结的web前端知识体系大全 基础概念 DOM DOM是什么意思-前端入门_dom是什么意思啊_猿说前端的博客-CSDN博客 DOM的含义: DOM称为文件对象模型(DocumentObjectModel,简称DOM),是W3C组织推荐的处理可扩展置标语言的…...
谈谈最近招人的感受!
最近折腾新的项目,面试了很多实习生小伙伴,我说说我的一些「面试」感受, 虽然是一个老生常谈的话题,但是依然提一下。 准时很重要:提前一点时间,踩个点,别迟到,面试的过程中由于每个…...
【日常业务开发】Java调用第三方http接口的常用方式
【日常业务开发】Java调用第三方http接口的常用方式 概述Java调用第三方http接口的方式通过JDK网络类Java.net.HttpURLConnection通过apache common封装好的HttpClient通过Apache封装好的CloseableHttpClient通过OkHttp通过Spring的RestTemplate通过hutool的HttpUtil 总结 概述…...
【大数据开发技术】实验04-HDFS文件创建与写入
文章目录 一、实验目标二、实验要求三、实验内容四、实验步骤 一、实验目标 熟练掌握hadoop操作指令及HDFS命令行接口掌握HDFS原理熟练掌握HDFS的API使用方法掌握单个本地文件写入到HDFS文件的方法掌握多个本地文件批量写入到HDFS文件的方法 二、实验要求 给出主要实验步骤成…...
中国制造让苹果跪服,将再增加一家中国高科技供应商
日前产业链人士指出由于京东方的OLED面板有力地制衡韩国面板厂商三星和LGD,促使他们降价,而且技术也不错,因此正计划再引入一家中国OLED面板厂商,以进一步促进OLED面板的竞争。 早期苹果的OLED面板完全由三星供应,由此…...
港卡开户感想(2023-8)
目录 银行列表预约开户总体原则外资行本地行内资行补充 选择落地点酒店及转换插头国际漫游换港币成行下一步 - 保险附录整理的银行资料 2023年8月份去了趟香港做银行开户, 整理如下供参考. 银行列表 https://www.hkma.gov.hk/gb_chi/smart-consumers/account-opening/contact-…...
机器学习第十一课--K-Means聚类
一.聚类的概念 K-Means算法是最经典的聚类算法,几乎所有的聚类分析场景,你都可以使用K-Means,而且在营销场景上,它就是"King",所以不管从事数据分析师甚至是AI工程师,不知道K-Means是”不可原谅…...
Java on Azure Tooling 8月更新|以应用程序为中心的视图支持及 Azure 应用服务部署状态改进
作者:Jialuo Gan - Program Manager, Developer Division at Microsoft 排版:Alan Wang 大家好,欢迎阅读 Java on Azure 工具的八月更新。在本次更新中,我们将推出新的以应用程序为中心的视图支持,帮助开发人员在一个项…...
论文笔记:ST2Vec: Spatio-Temporal Trajectory SimilarityLearning in Road Networks
2022 KDD 1 intro 现有的轨迹相似性学习方案强调空间相似性而忽视了时空轨迹的时间维度,这使得它们在有时间感知的场景中效率低下 如上图,在拼车过程中,T1表示司机计划的行程,T2和T3是两个想要搭车的人。T1和T2在空间上更接近&am…...
upload-labs靶场未知后缀名解析漏洞
upload-labs靶场未知后缀名解析漏洞 版本影响: phpstudy 版本:5.2.17 1 环境搭建 1.1 在线靶场下载,解压到phpstudy的www目录下,即可使用 https://github.com/c0ny1/upload-labs1.2 已启动:访问端口9000&…...
VisualStudio配置opencv
下载opencv 链接:https://opencv.org/releases/ 我下载的是4.7.0,选择windows下载。 下载成功后打开exe文件,选择路径安装。 配置环境变量 安装成功后找到安装目录,复制bin目录路径。 我的是放在了D盘 D:\Opencv4.7.0\opencv…...
如何通过git指令加入管理者仓库并提交分支(Github Gitee)
文章目录 创建GitHub、Gitee账户安装git下载gitgit基础配置 管理者创建gitee仓库新建仓库配置公钥 管理者管理仓库开发者通过git指令提交git提交错误原因: 创建GitHub、Gitee账户 GitHub: https://github.com/ Gitee : https://gitee.com/ …...
LuatOS-SOC接口文档(air780E)-- fastlz - FastLZ压缩
示例 -- 与miniz库的差异 -- 内存需求量小很多, miniz库接近200k, fastlz只需要32k原始数据大小 -- 压缩比, miniz的压缩比要好于fastlz-- 准备好数据 local bigdata "123jfoiq4hlkfjbnasdilfhuqwo;hfashfp9qw38hrfaios;hfiuoaghfluaeisw" -- 压缩之 local cdata …...
MySQL表的增删改查(进阶)
一 、数据库约束 NOT NULL - 指示某列不能存储 NULL 值。 UNIQUE - 保证某列的每行必须有唯一的值。 DEFAULT - 规定没有给列赋值时的默认值。 PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。 确保某列(或两个列多个列的结合)有唯一标识, 有…...
Greenplum实用工具-gpfdist
注:本文翻译自https://docs.vmware.com/en/VMware-Greenplum/7/greenplum-database/utility_guide-ref-gpfdist.html 向Greenplum数据库段提供数据文件或从数据库段写入数据文件。 语法 gpfdist [-d <directory>] [-p <http_port>] [-P <last_http…...
axios和fetch的区别
axios和fetch都是用于发起HTTP请求的工具,但是它们有一些区别: 语法和用法:axios是一个基于Promise的HTTP客户端,具有更简洁和直观的语法,可以方便地发送GET、POST、PUT等各种请求,并提供了更多的请求配置选…...
HTML那些重要的知识点
文章目录 ⭐️写在前面的话⭐️一、HTML1.1 锚点链接跳转到当前页面的指定位置跳转到其他页面的指定位置 1.2 自定义列表1.3 表格的跨行跨列1.4 视频和音频内容1.5 页面结构规范1.6 ifram内联框架1.7 表单1.7.1 form标签1.7.2 原生表单部件1.7.3 下拉框1.7.4 文本域1.7.5 文件域…...
《优化接口设计的思路》系列:第四篇—接口的权限控制
系列文章导航 《优化接口设计的思路》系列:第一篇—接口参数的一些弯弯绕绕 《优化接口设计的思路》系列:第二篇—接口用户上下文的设计与实现 《优化接口设计的思路》系列:第三篇—留下用户调用接口的痕迹 《优化接口设计的思路》系列&#…...
调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...
学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...
GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...
解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用
在工业制造领域,无损检测(NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统,以非接触式光学麦克风技术为核心,打破传统检测瓶颈,为半导体、航空航天、汽车制造等行业提供了高灵敏…...
