数据库安全

如何正确对用户密码进行加密?转自https://blog.csdn.net/zhouyan8603/article/details/80473083

时间秒杀一切 提交于 2019-12-23 04:27:12
本文介绍了对密码哈希加密的基础知识,以及什么是正确的加密方式。还介绍了常见的密码破解方法,给出了如何避免密码被破解的思路。相信读者阅读本文后,就会对密码的加密有一个正确的认识,并对密码正确进行加密措施。 作为一名Web开发人员,我们经常需要与用户的帐号系统打交道,而这其中最大的挑战就是如何保护用户的密码。经常会看到用户账户数据库频繁被黑,所以我们必须采取一些措施来保护用户密码,以免导致不必要的数据泄露。 保护密码的最好办法是使用加盐密码哈希( salted password hashing)。 重要警告: 请放弃编写自己的密码哈希加密代码的念头 !因为这件事太容易搞砸了。就算你在大学学过密码学的知识,也应该遵循这个警告。所有人都要谨记这点:不要自己写哈希加密算法! 存储密码的相关问题已经有了成熟的解决方案,就是使用 phpass ,或者在 defuse/password-hashing 或 libsodium 上的 PHP 、 C# 、 Java 和 Ruby 的实现。在对密码进行哈希加密的问题上,人们有很多争论和误解,可能是由于网络上有大量错误信息的原因吧。对密码哈希加密是一件很简单的事,但很多人都犯了错。本文将会重点分享如何进行正确加密用户密码。 密码哈希是什么? hash("hello") =

再走Node路:(篇九) node处理安全问题: sql注入,密码加密,xss攻击

笑着哭i 提交于 2019-12-15 18:48:51
经过我们之前的node路的学习,我们基本能够整合各种信息搭建一个小型的服务器系统弄了,那今天我们就来说一下服务器的安全问题: (注意,这里我们说到的只是个大概,就不进行深入了) 我们主要说到的安全问题有三个: sql注入 密码加密 xss攻击 1.关于sql注入,我们举一个简单的例子,他其实就是恶意者对我们数据库的攻击,获取我们数据库中的用户信息等私密的数据,我们之前在连接数据库的时候讲到了一些基本的sql语句,而原生的node的进行开发服务的时候,我们的数据库操作的sql语句是我们进行拼接的,这样就会出现,如果恶意者输入一段带攻击性的sql语句进入时,我们直接拼接到数据库中去执行,就会出现一些意想不到的严重后果,举个例子: 当我们用户登录时,需要输入用户名和密码,那如果恶意者输入以下有一段信息: 用户名: zhangsan’ - - 密码: 随意输入,不是真实的用户密码 那么现在在我们的服务端拼接处sql语句到数据库进行用户查询时的sql语句就会是这样的: select username , nickname from users where username = 'zhangsan' --'password=随意输入的密码 如果了解sql语句的人都知道,- - 在sql中是注释,这就相当于在查询时直接将密码条件给注释掉了,这样无论如何都会查询成功

4-MySQL DBA笔记-开发进阶

末鹿安然 提交于 2019-12-13 18:10:31
第4章 开发进阶 本章将介绍一些重中之重的数据库开发知识。 在数据库表设计中,范式设计是非常重要的基础理论,因此本章把它放在最前面进行讲解,而这其中又会涉及另一个重要的概念——反范式设计。 接下来会讲述MySQL的权限机制及如何固化安全。 然后介绍慢查询日志及性能管理的部分理念,并讲述数据库的逻辑设计、物理设计、导入导出数据、事务、锁等知识。 最后会提及 MySQL的一些非核心特性,并对于这些特性的使用给出一些建议。 4.1 范式和反范式 4.1.1 范式 什么是范式? 范式是数据库规范化的一个手段,是数据库设计中的一系列原理和技术,用于减少数据库中的数据冗余,并增进数据的一致性。 数据规范化通常是将大表分成较小的表,并且定义它们之间的关系。这样做的目的是为了避免冗余存放数据,并确保数据的一致性。 添加、删除和修改数据等操作可能需要修改多个表,但只需要修改一个地方即可保证所有表中相关数据的一致性(由于数据没有冗余存放,修改某部分数据一般只需要修改一个表即可)。 由于数据分布在多个表之间,因此检索信息可能需要根据表之间的关系联合查询多个表。 数据规范化的实质是简单写、复杂读。 写入操作比较简单,对于不同的信息,分别修改不同的表即可;而读取数据则相对复杂,检索数据的时候,可能需要编写复杂的SQL来联合查询多个表。 常用的范式有第一、第二、第三范式,通常来说

运维分类

。_饼干妹妹 提交于 2019-12-13 00:00:14
系统运维 主要负责:系统运维负责IDC、网络、CDN和基础服务的建设(LVS、NTP、DNS);负责资产管理,服务器选型、交付和维修 IDC数据中心建设 收集业务需求,预估未来数据中心的发展规模,从骨干网的分布,数据中心建筑,以及Internet接入、网络攻击防御能力、扩容能力、空间预留、外接专线能力、现场服务支撑能力等方面评估选型数据中心。负责数据中心的建设、现场维护工作。 == 网络建设== 设计及规划生产网络架构,这里面包括:数据中心网络架构、传输网架构、CDN网络架构等,以及网络调优等日常运维工作 LVS负载均衡和SNAT建设 LVS是整个站点架构中的流量入口,根据网络规模和业务需求,构建负载均衡集群;完成网络与业务服务器的衔接,提供高性能、高可用的负载调度能力,以及统一的网络层防攻击能力;SNAT集中提供数据中心的公网访问服务,通过集群化部署,保证出网服务的高性能与高可用。 CDN规划和建设 CDN工作划分为第三方和自建两部分。建立第三方CDN的选型和调度控制;根据业务发展趋势,规划CDN新节点建设布局;完善CDN业务及监控,保障CDN系统稳定、高效运行;分析业务加速频道的文件特性和数量,制定最优的加速策略和资源匹配;负责用户劫持等CDN日常故障排查工作。 服务器选型、交付和维护 负责服务器的测试选型,包含服务器整机、部件的基础性测试和业务测试,降低整机功率

Oracle数据库的安全策略分析(三)

梦想与她 提交于 2019-12-05 07:10:56
数据的安全性策略: 数据的生考虑应基于数据的重要性。如果数据不是很重要,那么数据的安全性策略可以稍稍放松一些。 然而,如果数据很重要,那么应该有一谨慎的安全性策略,用它来维护对数据对象访问的有效控制。 用户安全性策略: (1) 一般用户的安全性 A 密码的安全性 如果用户是通过数据库进行用户身份的确认,那么建议使用密码加密的方式与数据库进行连接。 这种方式的设置方法如下: 在客户端的oracle.ini文件中设置 ora_encrypt_login数为true; 在服务器端的initORACLE_SID.ora文件中设置 dbling_encypt_login参数为true。 B 权限管理 对于那些用户很多,应用程序和数据对象很丰富的数据库,应充分利用“角色”这个机制所带的方便性对权限进行有效管理。对于复杂的系统环境,“角色”能大大地简化权限的管理。 (2) 终端用户的安全性 您必须针对终端用户制定安全性策略。例如,对于一个有很多用户的大规模数据库,安全性管理者可以决定用户组分类,为这些用户组创建用户角色,把所需的权限和应用程序角色授予每一个用户角色,以及为用户分配相应的用户角色。当处理特殊的应用要求时,安全性管理者也必须明确地把一些特定的权限要求授予给用户。您可以使用“角色”对终端用户进行权限管理。 数据库管理者安全性策略: (1)

MongoDB 3.0+安全权限访问控制

末鹿安然 提交于 2019-12-04 18:31:47
MongoDB 3.0+安全权限访问控制 --------------------没有安全认证时,进行用户权限的管理-------------------- 1、启动没有访问控制的MongoDB服务 sudo service mongod start 2、连接到实例 mongo --port 27017 指定额外的命令行选项来连接Mongo shell到部署Mongodb服务器, 如--host 3、创建的用户管理员 use admin db.createUser( { user: "myUserAdmin", pwd: "abc123", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } ) 4、重新启动MongoDB实例,并启用访问控制 1、重新启动mongod实例,如果使用配置文件的设置,security.authorization: vi /etc/mongod.conf 修改内容: security: authorization: enabled 2、注意:keys and values之间一定要加空格, 否则解析会报错 重启服务: sudo service mongod start 5、用户管理员身份验证 1、创建连接mongo shell 时进行授权,指定-u <username>, -p

Web安全测试学习笔记 - SQL注入-2

亡梦爱人 提交于 2019-12-04 13:32:35
接上一篇SQL注入的学习笔记,上一篇我通过报错信息得知后台数据库是MySQL( 这个信息非常重要~ ),然后通过SQL注入拿到了用户表的所有行,其实我们还可以通过MySQL的特性来拿更多的信息。 1. 获取当前数据库名称 输入:2' union select 1,database() ' 输出:数据库名称为dvwa database()是Mysql自带函数,用来获取当前数据库名称。 2.获取当前数据库所有表名 输入:1' union select 1,table_name from information_schema.tables where table_schema='dvwa 输出:dvwa数据库中一共有两张表,分别是gestbook和users information_schema是MySQL自带数据库,用来存储MySQL数据库元数据,通俗来说就是MySQL中的所有数据库名,每个数据库的表名,每个表的列名等等。 3. 获取用户表的所有字段名 输入:1' union select 1,column_name from information_schema.columns where table_schema='dvwa' and table_name='users 输出:users表中比较重要的列名:user,password 4. 获取用户表中的数据 输入: ' UNION

端口安全攻防

与世无争的帅哥 提交于 2019-12-04 08:41:10
端口 服务 入侵方式 21 ftp/tftp/vsftpd文件传输协议 爆破/嗅探/溢出/后门 22 ssh远程连接 爆破/openssh漏洞 23 Telnet远程连接 爆破/嗅探/弱口令 25 SMTP邮件服务 邮件伪造 53 DNS域名解析系统 域传送/劫持/缓存投毒/欺骗 67/68 dhcp服务 劫持/欺骗 110 pop3 爆破/嗅探 139 Samba服务 爆破/未授权访问/远程命令执行 143 Imap协议 爆破 161 SNMP协议 爆破/搜集目标内网信息 389 Ldap目录访问协议 注入/未授权访问/弱口令 445 smb ms17-010/端口溢出 512/513/514 Linux Rexec服务 爆破/Rlogin登陆 873 Rsync服务 文件上传/未授权访问 1080 socket 爆破 1352 Lotus domino邮件服务 爆破/信息泄漏 1433 mssql 爆破/注入/SA弱口令 1521 oracle 爆破/注入/TNS爆破/反弹shell 2049 Nfs服务 配置不当 2181 zookeeper服务 未授权访问 2375 docker remote api 未授权访问 3306 mysql 爆破/注入 3389 Rdp远程桌面链接 爆破/shift后门 4848 GlassFish控制台 爆破/认证绕过 5000 sybase

Web安全攻防笔记-SQL注入

扶醉桌前 提交于 2019-12-03 04:42:33
information_schema(MySQL5.0版本之后,MySQL数据库默认存放一个information_schema数据库) information_schema的三个表: SCHEMATA:该表中的字段SCHEMA_NAME存储该用户创建的所有数据库的库名。 TABLES:该表中的字段TABLE_SCHEMA,TABLE_NAME分别记录该用户创建的所有数据库库名和表名。 COLUMNS:该表中的字段TABLE_SCHEMA,TABLE_NAME,COLUMN_NAME分别记录该用户创建的所有数据库库名、表名、字段名。 查询语句 SELECT 要查询的字段名 FROM 库名.表名 SELECT 要查询的字段名 FROM 库名.表名 WHERE 已知条件的字段名=‘已知条件的值’ SELECT 要查询的字段名 FROM 库名.表名 WHERE 已知条件的字段名=‘已知条件的值’ AND 已知条件2的字段名=‘已知条件2的值’ SELECT * FROM users SELECT * FROM users limit 0,1 重要函数(用于注入时,查询敏感信息) database():当前网站使用数据库 version():当前数据库版本号 user():当前数据库用户 concat_ws():多条目显示 load_file():读取系统文件,读取文件路径需转换为16进制

数据库整理(四)数据库安全性与完整性

爷,独闯天下 提交于 2019-12-02 23:00:39
数据库整理(四)数据库安全性与完整性 安全性 数据库的安全性保护数据库以防止不合法使用所造成的数据泄漏、更改或破坏 数据库的不安全因素 : 非授权用户对数据库的恶意存取和破坏 ---用户身份鉴定 存取控制 视图 数据库中重要或敏感的数据被泄露 ---强制存取控制、数据加密存储、加密传输。审计 安全环境的脆弱 与操作系统的安全性、网络协议安全保障有关 数据库系统安全模型 安全措施是一级一级层层设置的。用户要求进入计算机系统时,系统首先根据输入的用户标识进行 用户身份鉴定 ;只有合法的用户才准许进入计算机系统;对已进入系统的用户,数据库管理系统还要进行 存取控制 ,只允许用户执行合法操作:操作系统也会有自己的保护措施:数据最后还可以以 密码形式 存储到数据库中。 与数据库有关的安全技术 用户身份鉴别、多层存取控制、审计、视图、数据加密 用户身份鉴定 每个用户赋予唯一的一个身份标识 静态口令鉴别(密码)、动态口令鉴别(一次一密 短信密码 动态令牌)等 存取控制 确保只授权给有资格的用户访问数据库的权限 --DBMS存取控制机制 定义用户权限 将用户权限登记到数据字典中( 权限是用户对某一数据对象的操作权力 ) 合法权限检查 用户发出存取数据库操作请求后,DBMS根据在数据字典查找,根据安全规则进行权限检查,无权限进行拒绝 两类存取控制方法 自主存取控制方法