芯友网xin1234.com

从SQL Server 2005开始,SQL Server和客户端的连接是自动加密的。联机丛书上所说的SQL Serve



主席
冬瓜,我就是在写个类
刚刚在想密码安全的问题
联机从书上提到过从SQL Server 2005开始,SQL Server和客户端的连接是自动加密的。联机丛书上所说的SQL Server会自动加密连接就是指的这个阶段。这个阶段开始于客户端和SQL Server在TCP/IP协议栈的三次握手,止于客户端成功登陆SQL Server。从SQL Server 2005开始,这个阶段永远是加密的。
滋阴壮阳冬瓜汤
你不用太担心这种问题,一般能从内存中,把string字符串拿出来的,技术都是蛮过硬的,你防不住。
主席
这是答案
所以使用高版本的SQL SERVER还是有好处从
有好处的
滋阴壮阳冬瓜汤
tcp/ip,一次连接成功,要七次握手。
主席
SQL Server中的“加密”发生在什么地方

总的来说,我把SQL Server的加密分成两个部分,一个是对数据的加密,一个是对连接的加密。对于数据的加密,主要是通过一系列的函数如EncryptbyKey,或者TDE来完成的。这部分不在这里展开了。

另外一部分是连接加密,自己分的话还能分成两个阶段。一个是建立连接时候的加密。另外一个阶段是连接建立起来之后,客户端和SQL Server在其上传输数据时候的加密。
滋阴壮阳冬瓜汤
断开连接,则要达到八次握手,才能真正的断开。
祭冬
冬瓜的意思是,防君子不防小人
主席
建立连接时的加密

联机丛书上所说的SQL Server会自动加密连接就是指的这个阶段。这个阶段开始于客户端和SQL Server在TCP/IP协议栈的三次握手,止于客户端成功登陆SQL Server。从SQL Server 2005开始,这个阶段永远是加密的。

那么SQL Server是使用什么密钥来对连接加密的呢?默认情况下SQL Server会自动生成一个证书并使用这个证书来对连接做SSL加密。

大家可能会在SQL Server的Error log的开头部分看到这么一段话:

 

A self-generated certificate was successfully loaded for encryption

  

这段话就表明了SQL Server在启动的时候自动加载了自动生成的证书并且使用这个证书来加密。

这是微软的官方资料
滋阴壮阳冬瓜汤
是的,道高一尺,魔高一丈,单靠微软,母猪也能上树呀
主席
我们可以做一个实验来验证它。将SA的密码设置为Password,然后我们在远端机器上使用SQL Server Management Studio并使用SA账户去连接SQL Server。同时我们使用微软的Network Monitor工具来抓取SQL Server和客户端之间的网络包。使用SA账户来做这个实验是因为,SA账户是一个SQL 验证账户,而SQL验证账户的密码都是由客户端通过网络直接提交给SQL Sever来做验证的。这也是为什么说SQL验证不如Windows验证安全的原因。通过实验:

1.       我们可以看到有SSL的数据包交换,因此你判定SQL Server已经使用了SSL来加密了。
开启心的追求
进销存的字段都有哪些,我只有进货的单子
主席
2.       检查所有网络包的内容,我们是找不到Password的,也就是说网络上传输的不再是明文而是加密过的内容。
需要注意的一点是,SQL  Server自动生成的证书是一种自签名的证书,而通过自签名证书实现的SSL并不能提供很强的安全性。他对中间人攻击(man-in-the-middle attack)不具有抵抗能力。因此我们建议在生产环境中,应该手动给SQL Server配置证书,而不是让它使用自动生成的证书。
滋阴壮阳冬瓜汤
sql sever从来就不是以强大的防保功能自称,这等宣传,看看可以,反正也够用了。
主席
对我来说,足够了
又不是中情局的
滋阴壮阳冬瓜汤
数据库一般都有适用范围的。中小型的,sql server是不错的选择。mysql是网络首选。
桌面型的,sqlie是首选 ,firebird次选,最后access。

超大型的,科学用的数据库,很少是用商业数据库。因为数据量大大超出商业数据库的容量了。
主席
也就是说,SQL SERVER2005以前的版本中,通过 Debug.Print cn.ConnectionString  是可以取得密文的
科学用的,应该自己专门定义一个数据库的
滋阴壮阳冬瓜汤
谁有这本事,在你的程序中写入这一句代码,那他逆天了。
主席
cn.ConnectionString   里面不能读出密码,这就好办多了
我是要做个Dll,要留出端口给外部调用
本来考虑只能从外部传入CN对象进去的,不然密码会泄露。现在Debug.Print cn.ConnectionString  不能取得密文,我就可以直接让dll输出CN对象供外部调用
滋阴壮阳冬瓜汤
你不要太费这种心思。
str="Provider=SQLOLEDB.1;User ID=sa;Initial Catalog=ReportServer;Data Source=
127.0.0.1,1433;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=陈友福-PC;Use Encryption for Data=False;Tag with column collation when possible=False;"
只要在代码中,是明文的字符串,它是可能被扫出来的。

除非,你这个字符串本身自己加密了,
主席
没有密码
当然不会是明文在代码中的
另外有config的配置文件,用AES256加密的
滋阴壮阳冬瓜汤
人家攻击的不是你的代码,而是数据库的端口,你端口总要暴露出来吧
主席
内部的人怕是没那水平,外部就用VPN了
想想还是从外部穿进去算了,虽然没有密码,用户名和IP地址的也都有了
滋阴壮阳冬瓜汤
反正这种是一门极高深的学问了,你只能按你所学的来做就好了。至于其它的,先放一边,这门学问太深了。
主席
说的是,我们只管自己好用
滋阴壮阳冬瓜汤
事实上,也很少有人会废心思,想去扫内存中的字符串,这本身就是挺难的一件事了
32505003
哪里有excel vba实例教程
主席
Excel VBA不宜过多学习
稍懂即可
32505003
数据库呢
哪里有教程
最好是B/s模式的数据库
比如做个学生成绩管理系统
初学_熟悉
学生?
32505003
是啊
祭冬
挖,这么高级
32505003
大学论文时就以这个课题
祭冬
你啥专业啊
32505003
计算机
祭冬
计算机科学应用?
32505003
祭冬

计算机科学应用,有sql server吧
32505003
现在只会做报名系统
Q+
B/S是网站设计
32505003
是啊,利用网站进行成绩管理
Q+
@主席 之前有发现过不少都是明文写在程序中
主席
明文写入程序的,很容易就能获得密码
Q+
我有解过一个远程会计培训系统,就是直接取明文的
主席
一般都使用外部配置文件,加密后存入配置文件,需要时读取出来解密
Q+
主席
外部配置加密的,就不好破
Q+
未必
主席
是不好破的
Q+
你知道外部,别人也知道外部
主席
密码简单或者技术烂,就没办法

相关问题
大神们问下,如果一个sql非常的长,将近10行的时候(表连接查询的),是分开查好还是表连接的的形】 用视图;没用过那东西啊......
CentOS7.2上 安装了php7环境  连接不到mysql网站指向成功 只是数据库连接不上谁】 数据库服务开了吗,防火墙过了吗;开了  
内部连接(inner join) 为毛要丢弃不匹配的记录呢】 。。。。就是这么设计的。。。你要保留,就用另一个;out join;
mysql内连接查询一般优化的方法是关键字段加索引?】 连接外键查询呗要么就不要连接查询】分成两句sql来执行
------分隔线----------------------------
赞助商链接
赞助商链接