nosql

owsap top 10 2017(十大web安全应用程序安全)

时光毁灭记忆、已成空白 提交于 2020-05-04 03:33:10
一,2017-注入 将不受信任的数据作为命令或查询的一部分发送给解析器时。会产生诸如sql注入,nosql注入,os注入和LDAP注入的注入缺陷。攻击者的恶意数据会诱使解析器在没有适当授权的情况下执行非预期的命令或访问数据。 二,失效的身份认证 通常,通过错误使用应用程序的身份认证和会话管理功能,攻击者能够破译密码,密钥或会话令牌,或利用其他开发缺陷来暂时性或永久性冒用其他用户的身份。 三,敏感数据泄露 许多web应用程序和API都无法正确保护敏感数据。例如:财务数据,医疗数据,PH数据。攻击者可以通过窃取或修改未加密的数据来实施信用卡诈骗,身份盗窃或其他犯罪行为。未加密的敏感数据容易受到破坏,因此,我们要对敏感信息加密,这些数据包括:。传输过程中的数据,存储的数据以及浏览器的交互数据。 四,外部实体(xxe) 许多较早的或配置错误的xml。处理器评估了xml文件的外部实体引用。攻击者可以利用外部实体窃取使用URL文件处理器的内部文件和共享文件,监听内部扫描端口,执行远程代码和实施拒绝服务攻击。 五,失效的访问控制 未对通过身份验证的用户实施恰当的访问控制。攻击者可以利用这些缺陷访问未经授权的功能或数据,例如:访问其他用户的账户,查看敏感文件,修改其他用户的数据,更改访问权限等。 六,安全配置错误 安全配置错误是最常见的安全问题,这通常是由于不安全的默认配置,不完整的临时配置

性能调优的一些思路步骤

╄→尐↘猪︶ㄣ 提交于 2020-05-03 18:55:34
性能调优可分为以下步骤: 1.目前现象 2.提出猜想 3.验证猜想 4.定位到问题 5.解决问题 分析问题难其实就对应的是第2步骤,说白了就是你提不猜想,为什么你提出猜想,那是因为你的知识面不广,基础知识不牢固。知识面不够,就导致针对现象,提不出问题。 定位问题难对应第4步骤,这个的问题就是不会使用工具,我们在佐证我们的猜想时需要一些辅助工具。不会使用工具,就导致不能佐证猜想。 解决问题可以从一些几个方面思考: 1.基础组件(网络、操作系统、硬件设备升级等) 2.数据库层面(事务拆分,索引调优,SQL 优化,NoSQL 引入) 3.应用架构方面 (引入一些新的计算或者存储框架,利用新特性解决原有集群计算性能瓶颈;或者引入分布式策略,在计算和存储方面进行水平化) 4.业务层面 (针对一些特殊的业务场景进行优化) 来源: oschina 链接: https://my.oschina.net/u/1035715/blog/4263505

史上最全数据库笔记(上)

一曲冷凌霜 提交于 2020-05-02 17:35:17
一、 为什么使用SQL数据库? 数据库又称作数据集合,如果没有数据库管理人员需要一条一条的进行输入数据,于是有人发明了一条C语言语句,可以循环使用(增删改查)比如双十一的购物车就是数据库的体现,把想要的数据整理到一个文件中,在互联网中进行数据记录,查询,整理,统计等工作。 二、 什么是数据? 信息,文字,音乐,图片,视频,文件等,多媒体文件都是数据 三、 什么是大数据? 数据量多,数据流量大,并发量高,比如生活中的抖音,每秒都有很多人上传视频,下载视频,流量大,并发量高,数据量多是大数据的特点。 四、 什么是数据库? 数据库本身是一个文件,用来存储数据信息,对数据进行分类整理,一般数据库是以二进制进行存储的,因为CPU是直接处理二进制的,所以数据库直接以二进制进行存储,这样可以提高数据库的处理速度。 五、 数据库管理系统的作用? 用于创建数据库文件,管理数据库文件,提供数据库的操作界面(人机交互界面),对数据库内的数据进行增、删、改、查。 六、 数据库系统是什么? 是由开发、管理、应用一体的数据应用系统,一般是指开发人员在应用程序中对数据库的调用。 七、 主流数据库系统有哪些? 1. SQL Server(微软) 简单,易学,有大量的模板,完整的错误提示代码信息。 2. Oracle(甲骨文) 数据分析:比如百度的点击量排名,就是数据分析后的结果 面向应用对象的数据库 面向大型企业

MySQL数据库优化

强颜欢笑 提交于 2020-05-01 18:16:41
MySQL性能 最大数据量 最大并发数 查询耗时0.5秒 实施原则 数据表设计 数据类型 避免空值 text类型 索引优化 索引分类 优化原则 SQL优化 分批处理 不做列运算 避免Select * 操作符<>优化 OR优化 IN优化 LIKE优化 JOIN优化 LIMIT优化 其他数据库   博主负责的项目主要采用阿里云数据库MySQL,最近频繁出现慢SQL告警,执行时间最长的竟然高达5分钟。导出日志后分析,主要原因竟然是 没有命中索引和没有分页处理 。其实这是非常低级的错误,我不禁后背一凉,团队成员的技术水平亟待提高啊。改造这些SQL的过程中,总结了一些经验分享给大家,如果有错误欢迎批评指正。 MySQL性能 最大数据量    抛开数据量和并发数,谈性能都是耍流氓 。MySQL没有限制单表最大记录数,它取决于操作系统对文件大小的限制。 文件系统 单文件大小限制 FAT32 最大4G NTFS 最大64GB NTFS5.0 最大2TB EXT2 块大小为1024字节,文件最大容量16GB;块大小为4096字节,文件最大容量2TB EXT3 块大小为4KB,文件最大容量为4TB EXT4 理论可以大于16TB 《阿里巴巴Java开发手册》提出单表行数超过500万行或者单表容量超过2GB,才推荐分库分表。性能由综合因素决定,抛开业务复杂度,影响程度依次是硬件配置、MySQL配置

MySQL 8.0 正式版 8.0.11 发布:比 MySQL 5.7 快 2 倍

岁酱吖の 提交于 2020-05-01 07:18:25
ySQL 8.0 正式版 8.0.11 已发布,官方表示 MySQL 8 要比 MySQL 5.7 快 2 倍,还带来了大量的改进和更快的性能! 注意:从 MySQL 5.7 升级到 MySQL 8.0 仅支持通过使用 in-place 方式进行升级,并且不支持从 MySQL 8.0 降级到 MySQL 5.7(或从某个 MySQL 8.0 版本降级到任意一个更早的 MySQL 8.0 版本)。唯一受支持的替代方案是在升级之前对数据进行备份。 下面简要介绍 MySQL 8 中值得关注的新特性和改进。 1. 性能 :MySQL 8.0 的速度要比 MySQL 5.7 快 2 倍。MySQL 8.0 在以下方面带来了更好的性能:读/写工作负载、IO 密集型工作负载、以及高竞争("hot spot"热点竞争问题)工作负载。 2. NoSQL :MySQL 从 5.7 版本开始提供 NoSQL 存储功能,目前在 8.0 版本中这部分功能也得到了更大的改进。该项功能消除了对独立的 NoSQL 文档数据库的需求,而 MySQL 文档存储也为 schema-less 模式的 JSON 文档提供了多文档事务支持和完整的 ACID 合规性。 3. 窗口函数(Window Functions) :从 MySQL 8.0 开始,新增了一个叫窗口函数的概念,它可以用来实现若干新的查询方式。窗口函数与

MySQL 8.0

醉酒当歌 提交于 2020-04-30 16:56:30
MySQL支持最苛刻的Web,电子商务,SaaS和在线事务处理(OLTP)应用程序。它是一个完全集成的事务安全,符合ACID的数据库,具有完整的提交,回滚,崩溃恢复和行级锁定功能。MySQL提供了易用性,可伸缩性和性能,可为Facebook,Google,Twitter,Uber和Booking.com提供支持 MySQL 8.0提供: 新! 用于使用单个数据库开发SQL和NoSQL文档应用程序的 文档存储 。 新! 事务数据字典 实现为存储在单个InnoDB表空间中的一组SQL表。 新! 用于授予和拒绝用户组权限的 SQL角色 ,大大减少了安全性工作量。 新! 对于更丰富的移动应用程序和国际字符集, 默认为utf8mb4 字符集。 新! 通用表表达式( 也称为WITH查询)已添加到MySQL 8.0。 新! 窗口函数 可减少代码复杂性并帮助开发人员提高工作效率。 新! 看不见的索引 ,可以为运行24x7的应用程序更好地管理软件升级和数据库更改。 新! 降序索引 消除了对排序结果的需求,并提高了性能。 改善了! JSON支持 以及许多附加功能,包括JSON_TABLE()函数,该函数接受JSON数据并将其作为关系表返回。 改善了! 速度提高2倍 ,并以每秒180万次查询创造了新的基准记录。 改善了! OpenSSL 作为MySQL中的默认TLS / SSL库。 改善了!

使用canal通过mysql复制协议从binlog实现热数据nosql缓存(2)

久未见 提交于 2020-04-30 16:15:09
开启mysql binlog功能 以5.7版本为例,找到/etc/mysql/mysql.conf.d/mysqld.cnf [mysqld] pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock datadir = /var/lib/mysql #log-error = /var/log/mysql/error.log # By default we only accept connections from localhost #bind-address = 127.0.0.1 # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 # 开启binlog log-bin=mysql-bin binlog-format=ROW server_id=1 # 开启binlog 配置完毕重启mysql服务,重启完成后,查看是否已经成功开启 show variables like 'log_%'; canal-server服务 点击下载ali-canal 配置canal-server,修改\canal.deployer-1.0.22\conf\example

NodeJS+Mongoose: MissingSchemaError: Schema hasn't been registered for model “Category”

时光怂恿深爱的人放手 提交于 2020-04-30 09:28:31
问题 I am trying to build a simple blog, where are posts and categories. Articles can be currently added to a parent category (in the future, they might be added to multiple categories). A category has many articles. This is what I came up with: Category.js : const CategorySchema = new Schema({ name: { type: String, required: true, trim: true }, user: { // I wanted to know what user created the category type: mongoose.Schema.Types.ObjectId, ref: 'User' } }, { timestamps: true }); const Category =

每一位程序员手中都应该有一把「奥卡姆剃刀」

為{幸葍}努か 提交于 2020-04-30 08:36:15
在互联网时代,相信几乎每个人都听说过「奥卡姆剃刀定律」,但是你真的懂它的意思吗?更进一步,你真的知道在实际中如何运用奥卡姆剃刀定律吗? 我们先看一下百度百科对它的定义: 奥卡姆剃刀定律(Occam's Razor, Ockham's Razor)又称“奥康的剃刀”,它是由14世纪英格兰的逻辑学家、圣方济各会修士奥卡姆的威廉(William of Occam,约1285年至1349年)提出。这个原理称为 “如无必要,勿增实体” ,即 “简单有效原理” 。正如他在《箴言书注》2卷15题说“切勿浪费较多东西去做,用较少的东西,同样可以做好的事情。” 对于任何一个概念,看定义无疑是第一步也是重要的一步,但是“纸上得来终觉浅”,要想把一个概念吃透——真正掌握,必然要在实践中反复去体悟才行。上面的定义虽然清晰,但也容易造成一些误导。 “简单有效原理” 似乎在暗示奥卡姆剃刀定律就是极简主义,相信有很多人也是这么认为的。 奥卡姆剃刀定律是极简主义吗? 奥卡姆剃刀最初被用在自然科学的相关理论中,作为启发技巧来使用,我们可以先从自然科学的一些例子中来理解它。在物理学里,物理学家通常都致力于用最简单的公式来阐述一个基本理论,这可以看作是对奥卡姆剃刀的一个应用。我们熟知的很多物理定律都有非常简洁的形式,比如大名鼎鼎的牛顿第二定律: 比如爱因斯坦质能方程: 比如,牛顿万有引力定律: 在爱因斯坦出现之前

分布式-技术专区-Redis并发竞争key的解决方案详解

丶灬走出姿态 提交于 2020-04-29 16:27:38
  Redis缓存的高性能有目共睹,应用的场景也是非常广泛,但是在高并发的场景下,也会出现问题:缓存击穿、缓存雪崩、缓存和数据一致性,以及今天要谈到的缓存并发竞争。这里的并发指的是多个redis的client同时set key引起的并发问题。 出现并发设置Key的原因   Redis是一种单线程机制的nosql数据库,基于key-value,数据可持久化落盘。由于单线程所以Redis本身并没有锁的概念,多个客户端连接并不存在竞争关系,但是利用jedis等客户端对Redis进行并发访问时会出现问题。   比如:同时有多个子系统去set一个key。这个时候要注意什么呢? 举一个例子   多客户端同时并发写一个key,一个key的值是1,本来按顺序修改为2,3,4,最后是4,但是顺序变成了4,3,2,最后变成了2。 如何解决redis的并发竞争key问题呢? 第一种方案:分布式锁+时间戳 1.整体技术方案 这种情况,主要是准备一个分布式锁,大家去抢锁,抢到锁就做set操作。 加锁的目的实际上就是把并行读写改成串行读写的方式,从而来避免资源竞争。 2.Redis分布式锁的实现 主要用到的redis函数是setnx() 用SETNX实现分布式锁 利用SETNX非常简单地实现分布式锁。例如:某客户端要获得一个名字youzhi的锁,客户端使用下面的命令进行获取: SETNX lock