漏洞之 SQL Injection(SQL 注入) 1、准备1.1、MySQL相关知识点1.1.1、MySQL 中 information_schemainformation_schema 数据库是MySQL自带的,它提供了访问数据库元数据的方式。什么是元数据呢?元数据是关于数据的数据,如数据库名或表名,列的数据类型,或访问权限等。有些时候用于表述该信息的其他术语包括“数据词典”和“系统目录”。 information_schema实际上是视图,而 2021-03-08 security #security
漏洞之 SSRF(Server-Side Request Forgery,服务器端请求伪造) 1、SSRF 漏洞是什么?SSRF(Server Side Request Forgery,服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。 一般情况下,SSRF 攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统) 2、SSRF 漏洞原理SSRF 形成的原因大都是:由于服务端提供了能够从其他服务器应用获取数 2021-03-08 security #security
漏洞之 XSS(Cross Site Scripting,跨站脚本攻击) 1、XSS的原理和分类跨站脚本攻击 XSS(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。 恶意攻击者往 Web 页面里插入恶意Script代码,当用户浏览该页面时,嵌入Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。XSS攻击针对的是用户层面的攻击! XSS分为: 2021-03-08 security #security
漏洞之 reverse shell (反弹 shell) 什么是反弹 shell (reverse shell)反弹 shell 就是控制端监听在某TCP/UDP端口,被控端发起请求到该端口,并将其命令行的输入输出转到控制端。reverse shell 与 telnet,ssh 等标准 shell 对应,本质上是网络概念的客户端与服务端的角色反转。 为什么要反弹 shell通常用于被控端因防火墙受限、权限不足、端口被占用等情形。 举例:假设我们 2021-03-08 security #security
漏洞之 shellshock (破壳漏洞) 1、简介1.1 什么是Bash?百度百科链接:http://baike.baidu.com/view/849.htm。 BashShell 全称是 Bourne Again Shell,是 GNU 计划的一部分,用来替代 Bourne shell。它用于基于 GNU 的系统如 Linux。大多数的 Linux(Red Hat,Slackware,Caldera)都以 bash 作为缺省的 shel 2021-03-08 security #security
漏洞之 越权 越权简介信息安全行业关于权限有两个常见的概念,一个叫越权,一个叫提权。 提权指的是低权限的用户通过技术手段提升到高权限的用户。(权限一般是指计算机权限,提权是指从用户权限提升到管理员权限)。 越权一般是指低权限用户进行高权限的操作或平级操作,越权漏洞出现的地方一般以网页、APP 为主。 越权漏洞是一种很常见的逻辑安全漏洞。是由于服务器端对客户提出的数据操作请求过分信任,忽略了对该用户操作权限的 2021-03-08 security #security
编码方式,字符集,字符编码 1. 相关概念1.1 位(bit)位是计算机存储数据的最小单位,1或者0就表示1位,如10010010就表示8位的二进制数。 1.2 字节(byte)字节是计算机信息技术用于计量存储容量的一种计量单位,作为一个单位来处理的一个二进制数字串,是构成信息的一个小单位。 123451 B = 8 bit (1字节等于8位)1 KB = 1024 B = 1024 字节1 MB = 1024 KB 1 G 2021-03-08
软件测试的分类 软件测试按照所做工作的不同,可以分为很多的方面,下面我们一起来看一下,一些常见的分类,如下图: 1、按开发阶段划分1.1、单元测试(Unit Testing)(模块测试)单元测试,又称模块测试。对软件的组成单位进行测试,其目的是检验软件基本组成单位的正确性。测试的对象的是软件测试的最小单位:模块。 单元测试是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。通常而言 2021-03-08 architecture #architecture
重放攻击 什么是重放攻击(Reply attack)重放攻击,也称为回放攻击,是一种网络攻击方式。是指攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的。重放攻击是一种中间人攻击。重放攻击是非常常见的,因为在拦截了来自网络的传输后,黑客不需要专门的专业知识来解密信息。 重放攻击不仅限于信用卡交易,还可以采取多种形式,诈骗者可以通过有效的重放攻击来模仿真实用户并完成任何欺诈行为。 重放攻击的工作原理 2021-03-08 security #security
MySQL DATETIME 和 TIMESTAMP 时间类型的区别及使用场景 在 MySQL 中有两种存储时间的数据类型 DATETIME 和 TIMESTAMP ,它们在数据库实际应用中,各有各的优势和劣势。 DATETIME 和 TIMESTAMP 的相同点 两个数据类型存储时间的格式一致。均为 YYYY-MM-DD HH:MM:SS 两个数据类型都包含「日期」和「时间」部分。 两个数据类型都可以存储微秒的小数秒(秒后6位小数秒) DATETIME 和 TIMESTA 2021-03-07 MySQL #MySQL
MySQL 大小写 MySQL 大小写Linux 数据库名、表名和表的别名 是严格区分大小写的; 列名与列的别名在所有的情况下均是忽略大小写的; 表中字符格式的数据是忽略大小写的; WindowsMySQL在Windows下都不区分大小写。 在查询时区分字段值的大小写 创建时设置 BINARY 属性,查询时可以区分大小写: 123CREATE TABLE T(A VARCHAR(10) BINARY); 2021-03-07 MySQL #MySQL
MySQL 大小写 MySQL 大小写Linux 数据库名、表名和表的别名 是严格区分大小写的; 列名与列的别名在所有的情况下均是忽略大小写的; 表中字符格式的数据是忽略大小写的; WindowsMySQL在Windows下都不区分大小写。 在查询时区分字段值的大小写 创建时设置 BINARY 属性,查询时可以区分大小写: 123CREATE TABLE T(A VARCHAR(10) BINARY); 2021-03-07 MySQL #MySQL
MySQL 字符集与排序规则 背景数据库表被用来存储和检索数据。不同的语言和字符集需要以不同的方式存储和检索。因此,MySQL需要适应不同的字符集(不同的字母和字符),适应不同的排序和检索数据的方法 几个重要术语 字符集:为字母和符号的集合 编码:为某个字符集成员的内部表示 排序规则:为规定字符如何比较的指令。(排序规则也称为”校对顺序”) 为什么校对这么重要 排序英文其实没有想象的那么简单。例如APE、apex和Apple 2021-03-07 MySQL #MySQL
MySQL 数据库及表编码格式查看和修改 数据库支持的字符集1.列出MYSQL支持的所有字符集: 1mysql> SHOW CHARACTER SET; 2.当前MYSQL服务器字符集设置 1SHOW VARIABLES LIKE 'character_set_%'; 3.当前MYSQL服务器字符集校验设置 1SHOW VARIABLES LIKE 'collation_%'; 4.设备客户端显示的字符集(命令行中用selec 2021-03-07 MySQL #MySQL
MySQL 数据类型之 浮点型和定点型 MySQL 中使用浮点数和定点数来表示小数。 浮点类型有两种,分别是单精度浮点数(FLOAT)和双精度浮点数(DOUBLE);定点类型只有一种,就是 DECIMAL。 浮点型 FLOAT、DOUBLE、REALFLOAT、DOUBLE 的区别 数据类型 字节数 有符号的取值范围 无符号的取值范围 备注 FLOAT(M, D) 4 (-3.402 823 466 E+38,-1.175 2021-03-07 MySQL #MySQL
0-MySQL 安装(CentOS7) 1、背景在CentOS7中已经不在支持mysql,就算你已经安装了,CentOS7还是表示很嫌弃。取而代之在CentOS7内部集成了mariadb,而安装MySQL的话会和MariaDB的文件冲突。所以建议改装Mariadb,如果坚持要装MySQL,请参考其他教程,下面放原因。 MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是 2021-03-06 MySQL #MySQL
0-MySQL 安装(ubuntu) 1、介绍 Ubuntu18.04 默认mysql数据库版本为 5.7.24 Ubuntu22.04 默认mysql数据库版本为 8.0.33 执行安装命令不需要带对应版本,就可以直接安装。 2、第一步卸载/清理残余1dpkg --list|grep mysql 根据查询卸载以前的数据库 1234sudo apt-get autoremove --purge mysql-servers 2021-03-06 MySQL #MySQL
01-RabbitMQ 简单案例 Hello world我们将用 Java 编写两个程序。发送单个消息的生产者和接收消息并打印出来的消费者 在下图中,“ P” 是我们的生产者,“ C” 是我们的消费者。中间的框是一个队列 RabbitMQ 代表使用者保留的消息缓冲区 连接的时候,需要开启 5672 端口 依赖 pom.xml1234567891011121314151617181920212223242526272829< 2021-03-06 RabbitMQ #RabbitMQ
02-RabbitMQ 发布确认 发布确认逻辑生产者将信道设置成 confirm 模式,一旦信道进入 confirm 模式,所有在该信道上面发布的消息都将会被指派一个唯一的 ID(从 1 开始),一旦消息被投递到所有匹配的队列之后,broker 就会发送一个确认给生产者(包含消息的唯一 ID),这就使得生产者知道消息已经正确到达目的队列了, 如果消息和队列是可持久化的,那么确认消息会在将消息写入磁盘之后发出,broker 回传给生 2021-03-06 RabbitMQ #RabbitMQ
03-RabbitMQ 交换机 在上一节中,我们创建了一个工作队列。我们假设的是工作队列背后,每个任务都恰好交付给一个消费者(工作进程)。在这一部分中,我们将做一些完全不同的事情-我们将消息传达给多个消费者。这种模式 称为 ”发布/订阅”。 ExchangesRabbitMQ 消息传递模型的核心思想是: 生产者生产的消息从不会直接发送到队列。实际上,通常生产者甚至都不知道这些消息传递传递到了哪些队列中。 相反,**生产 2021-03-06 RabbitMQ #RabbitMQ