安全测试自学手册之软件安全测试基础

安全测试的概念

定义:指有关验证应用程序的安全等级和识别潜在安全性缺陷的过程。】

  • 应用软件的安全性测试:软件自身设计中存在的安全隐患,并检查软件对非法入侵的防御能力。
  • 系统级别的安全性测试:确保只有具备系统平台访问权限的用户才能访问,包括对系统的登录和远程访问。

导致软件出现安全问题的主要原因是:软件的安全漏洞。

安全漏洞概念:

  • 定义:硬件、软件或协议在逻辑设计上或具体实现或系统安全策略上存在的缺陷或漏洞。
  • 漏洞产生原因:程序员不正确或不安全的编码导致的。
  • 危害:攻击者通过漏洞获取系统额外权限,植入病毒、木马,窃取资料。

        注意:只有威胁到系统安全的错误才算漏洞。

安全漏洞的危害:

  • 系统完整性:非法篡改破坏数据完整性。
  • 系统可用性:破坏系统或网络,导致服务不可用。
  • 系统机密性:泄露个人或企业隐私信息。
  • 系统可靠性:造成系统不能正常提供有效服务。

软件安全测试方法

  • 代码安全性测试:对源代码进行安全扫描,根据程序中的数据流、控制流、语义等信息与其特有软件安全规则库进行匹配,从中找出代码中潜在的安全漏洞。
  • 渗透测试:主要使用自动化工具或人工模拟黑客输入,对系统进行攻击性测试,从而找出运行时刻说存在的安全漏洞。
  • 程序数据扫描:通常是内存测试,可发现例如缓冲区溢出之类的漏洞。

软件安全测试的内容

  • 功能验证:对涉及到安全的软件功能进行有效性验证,如:管理模块、权限模块、加密系统、认证系统等。
  • 模拟攻击:一种特殊的、极端的测试方法,模拟攻击验证软件系统的安全防护能力。如:渗透测试---比较常用。
  • 漏洞扫描:漏洞扫描器。
  • 侦听技术:网络监听,获取传输信息,当发现有敏感信息时,存在安全问题。--网络是否被监听。

软件安全测试的过程

基于安全需求,将系统可能面临的安全问题进行分类,画出威胁树,可针对威胁树选择对应的方法和技术,是为需求分析。

  • 基于威胁模型,指定计划
    • 以口令安全问题威胁树为例,计划就可为口令安全可能存在的各种攻击进行制定。
  • 规划最小测试单元
    • 不是整个模块都有安全问题,关注有问题的最小模块即可。
  • 对系统的可能漏洞进行分级
    • 按照不同优先级进行。
  • 设计安全测试用例
    • 根据漏洞类型,进行准备数据,设计测试用例进行测试。
  • 模拟攻击系统
    • 模拟攻击,查看系统状态。
  • 总结执行结果,提出解决方案

WEB安全测试范围

  • web服务器应用安全
  • 服务器本身及网络环境安全
  • web服务器周边应用安全
  • 网站程序安全

WEB安全测试的分类

  • 认证与授权
  • Session与cookie:cookie校验,敏感数据不存本地
  • DDoS拒绝服务攻击
  • 文件上传漏洞:缺少必要校验:限制文件格式/大小限制/修改扩展名是否可以绕过限制
  • XSS跨站攻击:恶意攻击者往网页中植入恶意的代码,用户执行的时候触发。
  • SQL注入:利用网站的sql漏洞,达到恶意的目的。

0day & 1day

0day 又叫零时差攻击,是指被发现后立即被恶意利用的安全漏洞。

  • 0day:只有你自己知道
  • 1day:刚刚公布的漏洞(没超1天)
  • nday:漏洞公布已经n天

白帽子和黑帽子

白帽子:精通安全技术,站在黑客对面的专家。。。。

黑帽子:黑客技术造成破坏,甚至犯罪团伙。。。。

WEB安全测试载体

  • 通常是网络协议,常见的是http协议。

网络协议基础

网络模型

  • OSI模型
  • 网络模型协议对照

  • 协议数据的网络传输
    • 包括2部分:拆解 和 封装        

传输层TCP/UDP协议

  • tcp协议:面向连接、可靠,基于字节流。
    • 将应用成接收到的数据进行拆分--报文段

三次握手:确保连接的可靠性(全双工,2端确认)

四次挥手:断开双方的连接(双工确认)

报文结构:

 端口:用于判断某个应用程序的标识。 

网络层IP协议

略。。。

应用层HTTP协议

重要状态码:

200-->请求成功

3xx表示重定向:

  • 301--->请求的资源永久的移到了新地址
  • 302-->请求的资源临时从不同的url响应请求
  • 304-->文档内容自上次请求以来没有发生过改变,从缓存响应请求

4xx表示客户端错误:

  • 401 -->unauthorized,当前请求需要用户确认
  • 403-->forbidden,服务器已经理解请求,但拒绝执行它
  • 404-->not found,请求所希望的到的资源未在服务器上面发现。如路径或资源名错误

5xx表示服务端错误:

500-->服务器遇到了未曾预料的状况,导致他无法完成对请求的处理,如:源码错误

消息摘要技术

消息摘要技术(Message Digest)是一种用于确保消息完整性和安全性的密码学技术。它将输入的任意长度的消息数据转换成固定长度的摘要,通常表示为一串由数字和字母组成的哈希值。

常见的消息摘要算法包括MD5(Message Digest Algorithm 5)和SHA(Secure Hash Algorithm)系列,如SHA-1、SHA-256、SHA-512等。这些算法使用不同的数学函数和运算来计算摘要,并满足以下特点:

  1. 不可逆性:无法通过摘要反推出原始消息的内容。
  2. 唯一性:不同的消息很难生成相同的摘要,且即使输入消息的微小变化也会显著改变摘要的值。
  3. 固定长度:摘要的长度是固定的,不受输入消息长度的影响。

消息摘要技术在数据完整性校验、数字签名、密码存储等场景中广泛应用。以下是一些常见的应用场景:

  1. 数据完整性校验:通过计算消息的摘要并与预期的摘要进行比对,可以验证消息在传输过程中是否被篡改或损坏。

  2. 数字签名:发送方可以使用自己的私钥对消息进行摘要计算,并将摘要作为数字签名附加到消息中。接收方可以使用发送方的公钥验证数字签名的有效性,以确保消息的完整性和来源认证。

  3. 密码存储:在用户账户和密码存储时,通常不会直接存储明文密码,而是将密码经过摘要计算后存储摘要值。当用户登录时,输入的密码通过相同的摘要算法计算摘要,并与保存的摘要进行比对,以验证输入密码的正确性,而无需存储明文密码。

需要注意的是,随着计算能力的提升,一些早期的消息摘要算法(例如MD5)已经被证明存在碰撞攻击等安全漏洞,因此在实际应用中,更推荐使用更安全和强大的SHA-2系列或SHA-3系列的算法。此外,完整性校验仅能确认数据是否被篡改,但无法提供机密性保护,因此在需要同时满足完整性和机密性的场景中,还需要结合其他密码学技术来实现综合的安全保护。

数字签名技术

数字签名技术是一种用于验证数字文件的完整性、源信任和抗否认性的密码学技术。它结合了公钥加密和消息摘要技术,确保消息在传输过程中不被篡改,并提供了对消息发送者身份的认证。

数字签名的工作原理如下:

  1. 创建签名:发送方使用自己的私钥对要发送的消息进行加密或计算消息摘要。然后,发送方将加密后的消息或摘要与消息一起发送给接收方。

  2. 验证签名:接收方使用发送方的公钥对接收到的消息进行解密或计算消息的摘要。然后,接收方将得到的结果与发送方发送的签名进行比对。

如果接收方成功验证了签名,并且消息的完整性未被破坏,则可以确认以下事实:

  • 消息的完整性:由于私钥只有发送方拥有,因此无法通过伪造签名来修改或篡改消息内容。如果消息被篡改,验证过程将失败,提示消息已被更改。

  • 消息的源信任:由于只有发送方拥有与其公钥匹配的私钥,所以只有发送方才能生成有效的签名。接收方可以使用发送方的公钥验证签名的有效性,从而确认消息来自于发送方。

  • 抗否认性:由于数字签名是与发送方的身份关联的,发送方无法否认已经使用其私钥生成的签名。这提供了对消息的抗否认特性,即发送方不能否认发送过的消息。

数字签名技术在许多领域广泛应用,例如:

  1. 数字证书:数字证书是数字签名的一种重要应用。它由证书颁发机构(Certificate Authority)使用自己的私钥对某个实体(如网站、组织或个人)的公钥进行签名,确认公钥的所有权和真实性。这样,其他人可以使用证书颁发机构的公钥验证数字证书的有效性,并信任证书中附带的公钥。

  2. 数字文档的完整性和身份验证:数字签名可用于保护文件的完整性,确保在传输或存储过程中没有被篡改。同时,接收方可以通过验证签名来验证文件的来源和身份,以确保其真实性和可信度。

  3. 电子商务:数字签名能够确保在线交易的安全性和可信度。通过对交易数据进行数字签名,买家和卖家可以相互验证对方的身份以及交易的完整性。

需要注意的是,数字签名技术依赖于安全的密钥管理和使用合适的密码学算法。保护私钥的安全性至关重要,以防止私钥泄露和未经授权的签名操作。同时,为了保持对抗量子计算攻击的能力,应选择适用于量子安全的密码学算法,如使用基于椭圆曲线的数字签名算法(ECDSA)或RSA的1024位以上密钥长度。 

会话安全管理技术

cookie状态保持:使用cookie技术来保持登录状态。

cookie + session技术 :

session是将数据存储到服务器中,服务器会为每一个用户创建一个session,用户访问服务器的时候需要拿着session去表明身份,session的实现是基于cookie,session需要借助于cookie来存储sessionid 。

使用session技术实现状态保持?

  • session是保存在服务器端
  • cookie是保存在客户端

token技术:

token在计算机身份认证中是令牌(临时)的意思,主要用于前后端分离、第三端登录项目中。

  • token是在服务端产生的
  • 前端向服务端请求认证,服务端认证成功,会返回token给客户端。
  • 前端在每次请求的时候带上token证明自己的合法地位。

session依赖于cookie(浏览器),token可以不依赖于cookie(非浏览器)。

token技术进行状态保持原理:

token技术---jwt :

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/410031.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

挑战杯 基于机器学习与大数据的糖尿病预测

文章目录 1 前言1 课题背景2 数据导入处理3 数据可视化分析4 特征选择4.1 通过相关性进行筛选4.2 多重共线性4.3 RFE(递归特征消除法)4.4 正则化 5 机器学习模型建立与评价5.1 评价方式的选择5.2 模型的建立与评价5.3 模型参数调优5.4 将调参过后的模型重…

ARCMAP进行天空开阔度(SVF)分析

这里的SVF并不是生物学或医学的(Stromal Vascular Fraction),而是指GIS中的(Sky View Factor,SVF),即为(城市)天空开阔度。 城市天空开阔度(Sky View Factor,SVF)是重要的城市形态学参数,那今天博主就跟大家讲一下如何用ArcMap来计算天空开阔度。 1、加载数据 需要加载…

【《高性能 MySQL》摘录】第 2 章 MySQL 基准测试

文章目录 2.1 为什么需要基准测试2.2 基准测试的策略2.2.1 测试何种指标 2.3 基准测试方法2.3.1 设计和规划基准测试2.3.2 基准测试应该运行多长时间2.3.3 获取系统性能和状态2.3.4 获得准确的测试结果2.3.5 运行基准测试并分析结果2.3.6 绘图的重要性 2.4 基准测试工具…

[ffmpeg] x264 配置参数解析

背景 创建 x264 编码器后,其有一组默认的编码器配置参数,也可以根据需要修改参数,来满足编码要求。 具体参数 可修改的参数,比较多,这边只列举一些常用的。 获取可以配置的参数 方式1 查看 ffmpeg源码 libx264.c…

Kotlin:协程基础

点击查看:协程基础 中文文档 点击查看:协程基础 英文文档 第一个协程程序 import kotlinx.coroutines.*fun main(){GlobalScope.launch {delay(1000L)//delay 是一个特殊的 挂起函数 ,它不会造成线程阻塞,但是会 挂起 协程&…

【Redis学习笔记03】Java客户端

1. 初识Jedis Jedis的官网地址&#xff1a;https://github.com/redis/jedis 1.1 快速入门 使用步骤&#xff1a; 注意&#xff1a;如果是云服务器用户使用redis需要先配置防火墙&#xff01; 引入maven依赖 <dependencies><!-- 引入Jedis依赖 --><dependency&g…

机器学习:SVM算法(Python)

一、核函数 kernel_func.py import numpy as npdef linear():"""线性核函数:return:"""def _linear(x_i, x_j):return np.dot(x_i, x_j)return _lineardef poly(degree3, coef01.0):"""多项式核函数:param degree: 阶次:param …

stream流-> 判定 + 过滤 + 收集

List<HotArticleVo> hotArticleVos hotArticleVoList .stream() .filter(x -> x.getChannelId().equals(wmChannel.getId())).collect(Collectors.toList()); 使用Java 8中的Stream API对一个名为hotArticleVoList的列表进行过滤操作&#xff0c;筛选出符合指定条件…

一次登录、便捷访问所有?聊聊CAS单点登录是如何实现的

前言 之前我们说到“”对组织建设的价值和建设思路&#xff0c;知道了通过实施统一身份管理解决方案&#xff0c;能够简化用户管理、降本增效、并加强安全性。对于员工来说&#xff0c;给予一套单一的凭证&#xff08;如账号密码&#xff09;&#xff0c;就可以使其访问多个权限…

conda 导出/导出配置好的虚拟环境

一. 导出环境配置&#xff08;yml文件&#xff09; 1. 在主目录下激活虚拟环境&#xff08;UE4是我的虚拟环境名称&#xff0c;请根据你自己的名称进行修改&#xff09; conda activate UE4 2. 运行此代码 conda env export > environment.yml 二. 导入环境配置&#xf…

备战蓝桥杯---基础算法刷题2

题目有一点水&#xff0c;不过还是有几个好题的&#xff0c;我在这分享一下&#xff1a; 很容易想到先往最高处跳再往最低处跳&#xff0c;依次类推&#xff0c;那怎么保证其正确性呢&#xff1f; 证法1. 在此&#xff0c;我们从0开始&#xff0c;假设可以跳到a,b,c(a<b<…

NUS神经网络生成我感觉解读过于夸大了

网上对其解读有点过了&#xff0c;只是合成了最后标准化层的参数&#xff0c;或者是更多的其他层参数。而不是网络结构。对于新任务下的网络结构以及参数如何生成&#xff0c;应该是做不到的&#xff0c;论文意义有限。 论文片段&#xff1a;我们提出了神经网络扩散&#xff0…

以 All-in-One 模式安装 KubeSphere时避坑

环境 ubuntu 18.04 准备 安装服务插件 socat 必须 可选但建议 conntrack 必须 可选但建议 ebtables 可选但建议 可选但建议 ipset 可选但建议 可选但建议 命令 sudo apt-get install socat安装docker 建议自行安装&#xff0c;不用KubeSphere 自带的 处理服务器配置 1…

1906_ AMBA_高级MCU总线架构

1906_ AMBA_高级MCU总线架构 全部学习汇总&#xff1a; g_arm_cores: ARM内核的学习笔记 (gitee.com) 在看内核相关的文件的时候看到了AMBA这个缩写&#xff0c;查了一下具体的概念。这个其实是一个总线架构&#xff0c;应该是ARM设计的。我找到了相关的介绍网页&#xff1a; A…

基于容器和集群技术的数据自动化采集设计和实现

目标&#xff1a;部署mysql服务容器并使用docker构建包含python爬虫脚本的容器采集数据到mysql数据库。 环境&#xff1a;Centos7、已配置Kubernetes集群及docker。 环境配置请参考以下文章&#xff1a; CentOS7搭建Kubernetes集群 Kubernetes集群信息如下(虚拟机主机名和IP…

浪潮信息服务器蝉联全球第二,中国第一持续领跑

作为服务器领域的专家&#xff0c;浪潮信息多年来持续通过技术创新更新服务&#xff0c;提升产品竞争力&#xff0c;领衔全球服务器市场。根据国际权威研究机构高德纳&#xff08;Gartner&#xff09;公布的《2023年第3季度全球服务器市场追踪报告》可见&#xff0c;2023Q3全球…

Java里常用的集合哪些是线程安全的和不安全的

最近在做一个业务的时候&#xff0c;需要考虑线程的安全性&#xff0c;然后选用集合的时候专门去整理了一下。 线程安全的是: Hashtable&#xff0c;ConcurrentHashMap&#xff0c;Vector &#xff0c;CopyOnWriteArrayList &#xff0c;CopyOnWriteArraySet 线程不安全的是: H…

计算机网络:思科实验【4-生成树协议STP及虚拟局域网VLAN】

&#x1f308;个人主页&#xff1a;godspeed_lucip &#x1f525; 系列专栏&#xff1a;Cisco Packet Tracer实验 本文对应的实验报告源文件请关注微信公众号程序员刘同学&#xff0c;回复思科获取下载链接。 实验目的实验环境实验内容交换机生成树协议**STP**虚拟局域网**VLAN…

vue3个人网站电子宠物

预览 具体代码 Attack.gif Attacked.gif Static.gif Walk.gif <template><div class"pet-container" ref"petContainer"><p class"pet-msg">{{ pet.msg }}</p><img ref"petRef" click"debounce(attc…

FreeRTOS学习第8篇--同步和互斥操作引子

目录 FreeRTOS学习第8篇--同步和互斥操作引子同步和互斥概念实现同步和互斥的机制PrintTask_Task任务相关代码片段CalcTask_Task任务相关代码片段实验现象本文中使用的测试工程 FreeRTOS学习第8篇–同步和互斥操作引子 本文目标&#xff1a;学习与使用FreeRTOS中的同步和互斥操…