原文译自:
http://www.mssqltips.com/sqlservertip/2775/identify-blank-and-weak-passwords-for-sql-server-logins/?utm_source=dailynewsletter&utm_medium=email&utm_content=headline&utm_campaign=2012925
微软一直建议使用复杂的强密码。弱密码或者空密码会导致安全漏洞。可以使用PWDCOMPARE安全性函数来找出这类型的登录名和使用复杂的强密码重置,以避免这方面的安全漏洞。
可以使用这个函数去查找空密码或者弱密码。通过传入两个参数“text_password”和password_hash来执行这个函数,如果 clear_text_password 的哈希与 password_hash 参数匹配,则返回 1;否则返回 0。当访问目录视图sys.sql_logins时把这个函数放到where子句中,可以检查是否有空密码或者弱密码。
步骤一:
先创建一些具有相同密码的登录名。这里创建两个登录名:mssqltips和mssqltips_1,并有相同的密码,并且都为空密码。然后为每个登录名创建一个对应的用户,并赋予对数据库的db_owner权限。
--Creating a Login which has same password as its login name. Then creating a user with same name
--and assigned it db_owner access.
CREATE LOGINmssqltips
WITH PASSWORD='mssqltips'
, CHECK_POLICY=OFF
go
use tempdb
go
CREATE
USER mssqltips forlogin
mssqltips
go
sp_addrolemember'db_owner',mssqltips
go
--Creating a Login without password. Then creating a user with same name and assigned it db_owner access.
CREATE LOGINmssqltips_1
WITH PASSWORD=''
, CHECK_POLICY=OFF
go
use tempdb
go
CREATE
USER mssqltips_1
for login mssqltips_1
go
sp_addrolemember'db_owner',mssqltips_1
go
|
步骤二:
现在测试相同密码,创建另外一个登录名“mssqltips_2”,并和mssqltips有相同密码。
--Creating a Login with common password. Then creating a user with same name and assigned it
--db_owner access.
CREATE LOGINmssqltips_2
WITH PASSWORD='mssqltips'
, CHECK_POLICY=OFF
go
use tempdb
go
CREATE
USER mssqltips_2
for login mssqltips_2
go
sp_addrolemember'db_owner',mssqltips_2
go
|
步骤三:
查询在SQLServer实体中弱密码的登录:
查找相同密码:
下面查询是返回所有具有相同密码的登录名,如mssqltips,把这个密码传到PWDCOMPARE函数去获取所有符合条件的登录名:
SELECT
name ,
type_desc
,
create_date
,
modify_date
,
password_hash
FROM
sys.sql_logins
WHERE PWDCOMPARE('mssqltips',password_hash)
= 1 ;
|
截图显式mssqltips和mssqltips_2具有相同密码:
查找空密码:
执行以下语句:
SELECT
name ,
type_desc
,
create_date
,
modify_date
,
password_hash
FROM
sys.sql_logins
WHERE PWDCOMPARE('',password_hash)
= 1 ;
|
得到以下结果:
查找密码和登录名相同的登录名:
SELECT
name ,
type_desc
,
create_date
,
modify_date
,
password_hash
FROM
sys.sql_logins
WHERE PWDCOMPARE(name,password_hash)
= 1 ;
|
得到以下结果:
步骤四:
当你找到上面那些有问题的登录是,要重置成强密码,以保证服务器环境更加安全。
备注:截图是原文图片,而脚本,是把数据库从原文数据库改成tempdb。
分享到:
相关推荐
解决两台SQLServer数据库服务器间备份再还原之后出现无登录名的孤立用户的问题
包含登录注册,修改密码,图书信息查询添加删除,图书借阅归还以及借阅归还信息查询
sqlserver数据库SSH配置1
Oracle数据库 数据库——数据库安全性管理 数据库安全性管理 ⼀、涉及内容 1.验证系统权限管理。 2.验证⾓⾊管理。 3.验证概要⽂件管理。 ⼆、具体操作 (⼀) 1.根据以下要求进⾏系统权限的授予与回收操作。 (1)...
注意sql server和access数据库可以使用vs自带的数据库启动,不需要安装庞大的sql安装包。 管理员用户密码 admin 123456 普通用户密码 qqq 123456 模块介绍 管理员 登陆模块 主界面模块 添加电影模块 编辑电影模块...
2.利用SQL Server配置管理器启动、停止SQL Server服务(包括默认实例和命名实例),配置SQL Server服务为自动启动。 3.利用SQL Server配置管理器配置进行SQL Server 2005网络配置,启用默认实例和命名实例的TCP/IP...
快速破译 SQLSERVER数据库登录 密码, c#完整代码
VB实现的人事管理系统源代码+数据库SQL Server2014+程序说明。 一、本系统由以下对象组成: 1.窗体 (1)AddUser:添加用户; (2)Backup:数据库备份; (3)delete_staff:删除职员数据; (4)Login:系统...
1.支持SQL server 数据库文件批量附加 2.需要在装有SQL server 的电脑上运行 3.使用系统管理员来登录电脑,系统使用windows集成身份验证 4.选中目录,点自动搜素,可以搜索目录和子目录下所有mdf文件 5.对不附加的,...
本免费小工具适用于迁移SQLServer数据库(从低版本到高版本,或者从A服务器到B服务器)。只要提前做好配置和准备,不管用户库的数据量有多大,每次迁移需要停止业务的时间都可以控制在5分钟之内(操作熟练的话,2...
2.利用SQL Server配置管理器启动、停止SQL Server服务(包括默认实例和命名实例),配置SQL Server服务为自动启动。 3.利用SQL Server配置管理器配置进行SQL Server 2005网络配置,启用默认实例和命名实例的TCP/IP...
2.利用SQL Server配置管理器启动、停止SQL Server服务(包括默认实例和命名实例),配置SQL Server服务为自动启动。 3.利用SQL Server配置管理器配置进行SQL Server 2005网络配置,启用默认实例和命名实例的TCP/IP...
asp.net 客户管理系统 是一套完善的web设计管理系统,系统具有完整的源代码和数据库,系统主要采用B/S模式开发,开发环境为vs2010,数据库为sqlserver2008,或者以上版本都可以,使用c#语言开发。。 二、功能介绍 ...
能过MFC连接SQL Server数据库,也可以远程进行连接,但是要加把server=改成ip,端口
SQL SERVER连接oracle数据库几种方法 查询oracle数据库中的表 在master数据库中查看已经存在的链接服务器 要在企业管理器内指定登录帐号
笔记是本人学习SQLServer一段时间后重新整理出来的,适合有一些入门基础的人学习。 ├─01 安装及使用 │ SQLServer2005安装及使用.txt │ ├─02 常用函数 │ function.sql │ ├─03 建表、建库 │ create.sql ...
SQL SERVER数据库用户名和登录名的区别
2.利用SQL Server配置管理器启动、停止SQL Server服务(包括默认实例和命名实例),配置SQL Server服务为自动启动。 3.利用SQL Server配置管理器配置进行SQL Server 2005网络配置,启用默认实例和命名实例的TCP/IP...
解决sqlserver数据库迁移后用户映射不上的问题
在使用网络数据库时,需要先登陆数据库验证用户信息,如果没有此用户,则注册为新用户。例程连接的是SQLserver数据库,如果使用时没有SQLserver数据库,可以当作例程借鉴一下。@易语言数据库学习。