怎么自己做淘宝网站吗,佛山网站建设优化制作公司,自己做个网站,用绿色做图标的网站数据库是为了实现一定目的按某种规则和方法组织起来的“数据”的“集合”。数据库可以直观的理解为存放数据的仓库#xff0c;而里面的数据按照一定的格式存放#xff0c;便于查找。 
数据库的作用 
1.实现数据共享#xff0c;减少数据的冗余度#xff1a;同文件系统相比而里面的数据按照一定的格式存放便于查找。 
数据库的作用 
1.实现数据共享减少数据的冗余度同文件系统相比由于数据库实现了数据共享从而避免了用户各自建立应用文件维护了数据的一致性保持数据的独立性提高可扩展性利用数据库还可对数据进行集中控制和管理并通过数据模型表示各种数据的组织以及数据间的联系。 
2.抗灾能力由数据库管理系统提供一套方法可及时发现故障和修复故障从而防止数据被破坏。数据库系统能尽快恢复数据库系统运行时出现的故障 
数据库分类 
关系型数据库如Oracle、MySQL、PostgreSQL等它们使用二维表格模型来组织数据支持SQL查询语言并且通常需要预定义数据类型 
优点 易于理解 使用方便和易于维护 
缺点是 缺少高并发 无法处理海量的数据 每一次查询都需要sql语句进行编译导致复杂查询性能差同时在基于web结构中 数据库是最难进行横向扩展的 
使用场景超市 信用卡消费 图书馆 旅行社 
非关系型数据库也被称为NoSQL数据库包括键值存储数据库如Redis、Memcached、列存储数据库如HBase、Cassandra、文档型数据库如MongoDB、CouchDB以及图形数据库如Neo4J等。这类数据库通常支持非结构化数据并且不需要预定义数据类型 
优点 高并发读写 基于键值对数据没有耦合性 容易扩展并且支持高并发和分布式的数据处理成本低廉 
缺点 无事务处理 无法保证数据的完整性和安全性 并且成型时间太短 功能没有关系数据库完善 
使用场景 社交网络 新闻网站和博客平台 IOT 电子商务 
关系型数据库 
Access数据库 
Access 是微软公司推出的基于Windows的桌面关系数据库管理系统RDBMS即Relational Database Management System是Office系列应用软件之一。它提供了表、查询、窗体、报表、页、宏、模块7种用来建立数据库系统的对象提供了多种向导、生成器、模板把数据存储、数据查询、界面设计、报表生成等操作规范化为建立功能完善的数据库管理系统提供了方便也使得普通用户不必编写代码就可以完成大部分数据管理的任务 
优点 
存储方式简单易于维护管理 面向对象。Access是一个面向对象的开发工具这种基于面向对象的开发方式使得开发应用程序更为简便  界面友好、易操作。Access是一个可视化工具是风格与Windows完全一样用户想要生成对象并应用只要使用鼠标进行拖放即可非常直观方便  集成环境、处理多种数据信息。Access基于Windows操作系统下的集成开发环境该环境集成了各种向导和生成器工具极大地提高了开发人员的工作效率  支持ODBC开发数据库互连Open Data Base Connectivity利用Access强大的DDE动态数据交换和OLE对象的联接和嵌入特性  
缺点 数据库过大一般百M以上纯数据不包括窗体、报表等客户端对象性能会变差  虽然理论上支持255个并发用户但实际上根本支持不了那么多如果以只读方式访问大概在100个用户左右  记录数过多单表记录数过百万性能就会变得较差  不能编译成可执行文件.exe必须要安装Access运行环境才能使用  
漏洞 
Access相对其他数据库来说比较简单只有一个数据库里面存放着表、列以及数据通过简单的语句就可以完成注入。一般通过联合注入、逐字猜解、偏移注入 
1、更改数据库存储路径以及数据库名。默认情况下数据库会保存在网站的data目录下而攻击者只需要对其下的数据库名进行爆破就可以直接下载数据库修改数据库存储路径以及数据库名为一些难以猜解的名字那么很多时候就能防止被人直接拿到数据库。 
2、针对用户输入做基于黑白名单过滤包括特殊字符和函数如union、select、from、order、单引号、星号等。 
3、安装WAF能自动防范SQL注入同时针对网络攻击可以自定义过滤规则。 
不过access数据库已经被逐渐被淘汰掉了 
Mysql数据库 
MySQL由瑞典MySQL AB公司开发属于Oracle旗下产品。因为其速度、可靠性和适应性而备受关注是流行的关系型数据库管理系统之一采用关系模型来组织数据结构的数据库(二维表) 
优点 
跨平台开源免费MySQL可以扩展到支持数百万个表和数百个连接。可以处理大量的并发查询和事务处理具有高可靠性能够保证数据的完整性和一致性,可以根据不同的应用程序和需求进行架构 
缺点 
不支持完全事务和分布式事务导致可能会出现数据不一致的问题不支持复杂的查询导致查询速度变慢或查询结果不准确不支持强制访问控制或加密在安全性方面存在一些问题如数据泄露 篡改 
数据库管理MySQL需要一定的数据库管理技能包括备份和恢复、调优和维护。 
漏洞 
OpenSSL存在远程代码执行漏洞漏洞编号CVE-2022-1292 
漏洞原因由于c_rehashc脚本未正确清理shell元字符的问题未经授权的攻击者可通过构造恶意数据从而执行系统命令导致远程代码执行。 
受影响的应用版本3.0.0  OpenSSL  3.0.31.1.1  OpenSSL  1.1.1n1.0.2  OpenSSL  1.0.2zd 
Mysql出现拒绝服务漏洞(CVE-2023-21912) 
影响范围5.0.0Oracle MySQL5.7.41和8.0Oracle MySQL8.0.30。 
漏洞成因MySQL的拒绝服务漏洞(CVE-2023-21912)是由于MySQL Server处理认证数据包的缺陷。具体来说可能是由于对客户端设置字符集的处理不当当客户端字符集设置为ucs2、utf16、utf16le等进行连接时导致异常34。未经身份验证的攻击者可通过多种协议访问 MySQL 服务器成功攻击此漏洞可导致 MySQL 服务器挂起或频繁重复崩溃造成拒绝服务攻击 
以上两个漏洞现在可以根据官方的补丁进行修复 还有很多的MySQL和提权漏洞如 UDF 提权、MOF 提权漏洞 在网上也有很多资料 大家搜索就可以得到 
H2database 特点 很快 嵌入式和服务器模式 Java sql数据库 端口20051 
H2 数据库是一个用 Java 开发的嵌入式(内存级别)数据库它本身只是一个类库也就是只有一个 jar 文件可以直接嵌入到项目中。 
H2数据库又被称为内存数据库因为它支持在内存中创建数据库和表。所以如果我们使用H2数据库的内存模式那么我们创建的数据库和表都只是保存在内存中一旦服务器重启那么内存中的数据库和表就不存在了。 
用途 同应用程序一起打包发布可以非常方便地存储少量的结构化数据  可以用于单元测试。启动速度快而且可以关闭持久化功能每一个用例执行完随即还原到初始状态  可以作为缓存即当做内存数据库作为NoSQL的一个补充。当某些场景下数据模型必须为关系型可以拿它充当MemcachedMemcached是一个自由开源的高性能分布式内存对象缓存系统使用作为后端MySQL/Oracle的一个缓冲层缓存一些不经常变化但需要频繁访问的数据比如字典表、权限表  
漏洞 
H2远程代码执行 CVE-2021-42392 JNDI 远程类加载 
H2 数据库的 org.h2.util.JdbcUtils.getConnection 方法将驱动程序的类名和数据库的 URL 作为参数。攻击者可能会传递 JNDI 驱动程序名称和指向 LDAP 或 RMI 服务器的 URL从而导致远程代码执行。这可以通过各种攻击媒介来利用最明显的是通过 H2 控制台导致未经身份验证的远程代码执行 目前可使用官方补丁进行修复 
Nosql数据库 
Redis 沙箱绕过 未授权访问 RCE 特征点 端口6379 
ANSI C编写的开源、支持网络、基于内存、分布式、可选持久性的键值对存储数据库属于NoSQL数据库类型。与传统数据库不同的是 Redis 的数据存于内存中所以读写速度非常快被广泛应用于缓存方向 
缓存Cache是一种数据存储技术广泛应用在电脑工程领域1。它将原本访问起来较慢的数据放到访问更快的存储介质中当第二次访问时能够更快地访问数据是一种空间换时间的做法 Redis支持数据的持久化可以将内存中的数据保存在磁盘中重启的时候可以再次加载进行使用。  Redis支持更多数据结构的存储。不只是key-value  Redis支持数据的备份即master-slave模式的数据备份  
主从模式Master-Slave是一种常见的软件架构模式1。它的核心思想是基于分而治之的思想将一个原始任务分解为若干个语义等同的子任务并由专门的工作者线程来并行执行这些任务原始任务的结果是通过整合各个子任务的处理结果形成的 
Mysql也支持主从模式 优点 提高计算性能和可靠性 缺点 设备之间孤立没有共享 可以根据数据同步延迟和主从切换来更改缺点 
漏洞 
1.未授权访问 
在redis3.2之后redis增加了protected-mode在这个模式下非绑定IP或者没有配置密码访问时都会报错 Protected Mode是一种安全保护机制主要用于防止未经授权的访问和利用。这种模式在不同的应用中可能有不同的实现和含义开启时候外网无法访问 默认是打开的 
漏洞危害 
1.    Redis绑定在0.0.0.0:6379,暴露在公网 在未开启认证下 任意用户可以未授权访问 Redis 以及读取 Redis 的数据 
2   没有设置密码认证默认为空或者弱密码可以免密码登录redis服务Redis内置了脚本语言Lua允许用户通过Lua脚本执行一系列操作2。EVAL命令是Redis的一个内置命令用于执行Lua脚本攻击者可通过EVAL执行lua代码或通过数据备份功能往磁盘写入后门文件 
3. 攻击者在未授权访问 Redis 的情况下获得root身份 可以在 Redis 服务器上写入公钥进而可以使用对应私钥直接登录目标服务器 
2.本地主从复制RCE 
对于只允许本地连接的Redis服务器可以通过开启主从模式从远程主机上同步恶意.so文件至本地接着载入恶意.so文件模块反弹shell至远程主机 
3.Redis联动SSRF漏洞 
RESP协议是Redis服务器通信的标准方式服务器和客户端之间的通信建立在RESP协议之上RESP协议实际上是一个支持简单字符串错误整数批量字符串和数组五种数据类型的序列化协议。 
Gopher是Internet上一个非常有名的信息查找系统在WWW出现之前Gopher是Internet上最主要的信息检索工具Gopher站点也是最主要的站点使用tcp70端口而它被代替的原因主要是收费和结构固化 
通过SSRF漏洞和Gopher协议访问到内网的Redis服务并发送恶意代码生成后门文件 
修复建议 
1、改掉默认端口禁止外部访问Redis服务端口开启protected-mode安全机制配置安全组限制可连接Redis服务器的IP 
2、禁止使用root权限启动redis服务最小化权限运行redis 限制账号的命令使用权限 
3.设置强类型的加密访问密码引入ALC访问机制 对eval命令进行限制 
ACL是一种用于控制对资源访问权限的机制建立 独立的关联映射表记录了该客体访问的主体被授予访问客体的权限以及允许对客体执行哪些操作1。当主体试图访问客体时系统会检查映射表确定是否允许访问 
ACL在网络中针对路由器决定数据包接受或拒绝 在liunx中实现对单一用户设定访问文件的权限 
CouchDB 未授权越权 端口号 5984 
CouchDB 是 Apache CouchDB 是开源 NoSQL 文档数据库JSON作为存储格式 JavaScript作为查询语言 MapReduce和HTTP作为API 
优点 
1.开源项目免费使用可以轻松集成到企业当前的数据管理基础架构之中。 企业对软件拥有更多控制权所以在根据业务需求调整软件时也就有了更大的灵活性。 
2.无论是需要通用的文档存储以实现高效的数据同步还是奉行“脱机优先”理念CouchDB 都可以帮助企业灵活地创建持久耐用、高度可靠而且易于扩展的基础架构。 
3.使用 REST API从任何地点访问数据库 
4.CouchDB 提供多种兼容性优势可轻松地与当前基础架构集成。 CouchDB 是以 Erlang 编写的一种通用的并发式垃圾收集编程语言和运行时系统因此十分可靠方便开发人员使用 
无模式的数据模型是一种不需要预定义模式的数据模型1。这种模型通常在NoSQL数据库中使用例如键值存储1 
数据库脱机操作是指将数据库从当前的数据库管理系统中移除但保留数据库及其数据文件和事务日志文件12。这种操作通常用于数据库迁移例如将数据库从一个服务器迁移到另一个服务器 
缺点 
1.复杂性 
虽然CouchDB提供了许多强大的功能但这也增加了其复杂性。对于那些不熟悉NoSQL数据库或者不熟悉JSON和java脚本的开发人员来说学习和使用CouchDB可能会有一些困难 
2.缺乏事务支持 
CouchDB不支持传统的ACID事务1。虽然它提供了一些机制来处理并发更新但是对于那些需要严格的事务一致性的应用来说这可能是一个问题列如涉及金融交易的系统分布式系统或微服务架构  
事务一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态也就是说一个事务执行之前和执行之后数据库都必须处于一致性状态 
3.性能 
CouchDB使用了一种称为MVCC多版本并发控制的技术来处理并发访问这种技术需要为每个文档保存多个版本从而增加了存储需求和处理时间 
漏洞 
未授权访问权限绕过 CVE-2017-12635 
影响范围 小于 1.7.0 以及 小于 2.1.1 
由于Erlang和JavaScript对JSON解析方式的不同导致语句执行产生差异性导致的。这个漏洞可以让任意用户创建管理员属于垂直权限绕过漏洞。 
任意命令执行漏洞 CVE-2017-12636 
影响范围 小于 1.7.0 以及 小于 2.1.1 
由于数据库自身设计原因管理员身份可以通过 HTTPS方式配置数据库。在某些配置中可设置可执行文件的路径在数据库运行范围内执行。结合 CVE-2017-12635 可实现远程代码执行。 
修复 
做好网络隔离外网访问 设置复杂密码 
CouchDB远程代码执行漏洞(CVE-2022-24706) 
影响范围 
Apache CouchDB  3.2.2 
CouchDB 会打开一个随机网络端口绑定到所有可用的接口以进行集群操作或runtime introspection程序运行时检查对象类型或属性的能力epmd(在集群中相当于DNS 提供节点名称到端口的查询服务)本身在一个固定的端口上进行监听但是其错误地暴露了CouchDB打开的随机端口。CouchDB包装之前为单节点和集群安装设置了一个默认的cookie 值该cookie用于验证Erlang 节点之间的任意通信。未经身份验证的恶意攻击者通过发送特制的恶意数据到CouchDB的特定接口从而能够获得管理员权限进行在目标服务器上执行任意代码。 
修复 
设置防火墙不将单独的分发端口暴露给外部访问的安装不易受到攻击