原文:数据库管理——安全管理——识别SQLServer中空密码或者弱密码的登录名

原文译自:

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中空密码或者弱密码的登录名的更多相关文章

  1. 强密码和弱密码并没有什么区别?NIST密码安全标准更新:不再建议密码要求混合大写字母、字符和数字

    作为一名认真负责的小编,每次注册账号设置密码的时候都是最痛苦的,太简单的怕被破解,太难的又记不住. 等你好不容易记住密码,三个月后IT同学过来拍拍你的肩膀,"你的密码到期了,记得改啊--&q ...

  2. sqlserver学习笔记(二)—— 创建登录名、用户名

    (重要参考:51自学网——SQL Server数据库教程) 登录名与用户名的区别: 1.登录名是指可以使用新建的登录名和密码登录数据库这个程序软件,但不能打开或展开用户自己创建的数据库: 2.用户名是 ...

  3. 测试教程网.unittest教程.3. 实例: 测试弱密码

    From: http://www.testclass.net/pyunit/test_example_1/ 背景 考虑这样一个测试弱密码的实例,这个我们在pytest相关教程中也有过描述. 我们需要判 ...

  4. 弱密码检测JR!

    1.JR(Joth the Ripper)简介·一款密码分析工具,支持字典式的暴力破解·通过对 shadow 文件的口令分析,可以检测密码·官方网站:http://www.openwall.com/j ...

  5. linux系统弱密码检测

    需要自备弱密码明文字典 from _utils.patrol2 import data_format,report_format,run_cmd import platform import cryp ...

  6. 基于Python+协程+多进程的通用弱密码扫描器

    听说不想扯淡的程序猿,不是一只好猿.所以今天来扯扯淡,不贴代码,只讲设计思想. 0x00 起 - 初始设计 我们的目标是设计一枚通用的弱密码扫描器,基本功能是针对不同类型的弱密码,可方便的扩展,比如添 ...

  7. SVN弱密码扫描(Python)

    寂寞如雪的用脑过度,所以来写个博客分享一下.#虽然上一篇博客我还没写完 SVN的弱密码,看起来很复杂,但实际上很简单啊= =虽然不像pymssql/mymssql这种,Python提供了很好用的包,但 ...

  8. ssl Diffie-Hellman弱密码问题

    title: ssl Diffie-Hellman弱密码问题 date: 2017-08-16 16:41:55 categories: 网络安全 tags: ssl Diffie-Hellman - ...

  9. 测试教程网.unittest教程.5. 实例: 找出所有是弱密码的用户

    From: http://www.testclass.net/pyunit/test_example_3/ 背景 当我们的测试数据是下面这些的时候,我们的用例是有问题的. [ {"name& ...

随机推荐

  1. RabbitMq消息序列化简述

    涉及网络传输的应用.序列化不可避免. 发送端以某种规则将消息转成byte数组进行发送. 接收端则以约定的规则进行byte[]数组的解析. 序列化的选择能够是jdk序列化,hessian,jackson ...

  2. Cantor的数表 【找规律】

    小俞同学,近期勤学苦练数学,对一种数表产生了兴趣. 数表例如以下: 1/1 1/2 1/3 1/4 1/5 2/1 2/2 2/3 2/4 3/1 3/2 3/3 4/1 4/2 5/1 她冥思苦相了 ...

  3. .NET 单点登录

    <appSettings>     <!--是否启用单点登录接口-->     <add key="IsStartCas" value="f ...

  4. vps自己搭建VPN(转)

    1.购买一个VPS: https://www.pzea.com/North-America-openvz-vps.html 2.下载putty软件,进行vpn安装: http://www.chiark ...

  5. hdu2818行列匹配+排序

    题意:给定一个矩阵,矩阵上有的数字是1,有的是0,给定两种操作,交换某两行或者某两列,问是否能置换出对角线为1的矩阵 题解:能够置换出对角线是1的矩形要求有n个1既不在同一行也不再同一列,即行列匹配, ...

  6. 谷歌宣布Android auto目前的汽车系统汽车市场的影响

    由于2007年.汽车导航产品已经得到长足的发展.其产品主要用于WinCE制.除了导航功能,通常有收音机,播放光盘.广播SD卡/U音频和视频盘,蓝牙手机,倒车后视功能.由于WinCE微软放弃系统,And ...

  7. add-apt-repository

    也许你早已注意到,我们在介绍软件的时候,在安装这块一般都提供 PPA 源安装方式,这是一种快速方便的软件安装方法,但对于一些新手来说,对 PPA 并不是很熟悉,下面我们就详细介绍一下. # 我们先了解 ...

  8. C# Windows Phone 8 WP8 开发,将WebClient的DownloadStringCompleted事件改成非同步的awiat方法。

    原文:C# Windows Phone 8 WP8 开发,将WebClient的DownloadStringCompleted事件改成非同步的awiat方法. 一般我们在撰写Windows Phone ...

  9. C++ 习题 输出日期时间--友元类

    Description 设计一个日期类和时间类,编写display函数用于显示日期和时间.要求:将Time类声明为Date类的友元类,通过Time类中的display函数引用Date类对象的私有数据, ...

  10. 关于js中window.location.href,location.href,parent.location.href,top.location.href的使用方法

    关于js中"window.location.href"."location.href"."parent.location.href".&qu ...