首页 新闻 会员 周边 捐助

使用SqlConnection与SQLServer连接,传输过程中ConnectionString中的账号密码是否安全?

0
悬赏园豆:5 [待解决问题]

使用SqlConnection与SQLServer服务器进行连接,ConnectionString中保存有的账号密码能否被截取网络封包解读?不知道SqlConnection与SQLServer的交互通信中,ConnectionString是否已经加密?

问题补充:

SQL Server 登录

Windows 身份验证是用于连接到 SQL Server 的首选方法。但是,如果需要 SQL Server 身份验证,请使用下列语法来指定用户名和密码。在此示例中,星号用来表示有效用户名和密码。

"Persist Security Info=False;User ID=*****;Password=*****;Initial Catalog=AdventureWorks;Server=MySqlServer"
安全说明安全说明

Persist Security Info 关键字的默认设置为 false。如果将其设置为 true 或 yes,则允许在打开连接后通过连接获取安全敏感信息(包括用户 ID 和密码)。保持将 PersistSecurity Info 设置为 false,以确保不受信任的来源不能访问敏感的连接字符串信息。

 


作为添加的安全措施,默认情况下,SqlConnection 对象的 ConnectionString 属性不持续存在或不返回完整的连接字符串。若要这样做,必须将“持久性安全信息”设置为 true。有关更多信息,请参见 SqlConnection.ConnectionString 属性和 SqlConnection 类

弎吩锺熱℃的主页 弎吩锺熱℃ | 菜鸟二级 | 园豆:203
提问于:2014-09-30 16:51
< >
分享
所有回答(8)
0

可以手动加密的

yyutudou | 园豆:997 (小虾三级) | 2014-09-30 16:57

有没有相关资料或链接参考一下呢?

支持(0) 反对(0) 弎吩锺熱℃ | 园豆:203 (菜鸟二级) | 2014-10-01 12:17

@弎吩锺熱℃: http://www.cnblogs.com/cocoulong/archive/2013/03/27/2985093.html

支持(0) 反对(0) yyutudou | 园豆:997 (小虾三级) | 2014-10-08 16:21

@yyutudou: 其实我想知道的并不是对web.config的ConnectionString加密的方式,而是ConnectionString在SqlClient内存对象和与SQLServer传输验证登陆过程中是否安全的。与SQLServer传输验证登陆过程中是安全的,这点我已经找到了相关的文档。而ConnectionString在SqlClient内存对象是否安全的,在SqlClient的说明文档中虽然看起来像是安全的,但是无法确认。

支持(0) 反对(0) 弎吩锺熱℃ | 园豆:203 (菜鸟二级) | 2014-10-09 08:43
0

可以告诉你的是,网络安全的。

爱编程的大叔 | 园豆:30844 (高人七级) | 2014-09-30 17:06

真的吗?也就是ConnectionString在网络传输过程中已被加密的?

支持(0) 反对(0) 弎吩锺熱℃ | 园豆:203 (菜鸟二级) | 2014-10-01 12:18
0

数据层 最好,放在服务器端。

小资代码 | 园豆:206 (菜鸟二级) | 2014-09-30 17:08

服务端这边被网络捉包会不会不安全呢?

支持(0) 反对(0) 弎吩锺熱℃ | 园豆:203 (菜鸟二级) | 2014-10-01 12:18
0

配置文件里肯定不安全

小奉手 | 园豆:148 (初学一级) | 2014-10-01 08:58

若配置文件里面存放的是加密后的连接字串,需要时再解密读取呢?

支持(0) 反对(0) 弎吩锺熱℃ | 园豆:203 (菜鸟二级) | 2014-10-01 12:19
0

安全的,数据库连接字符串都是在请求端交由数据库连接驱动程序管理的,数据库驱动程序会内置的保证交给它的信息是安全的。

519740105 | 园豆:5810 (大侠五级) | 2014-10-01 10:40

能不能提供一下相关的参考链接呢?或者相关的搜索关键字,我好了解一下详情。

支持(0) 反对(0) 弎吩锺熱℃ | 园豆:203 (菜鸟二级) | 2014-10-01 12:20

@弎吩锺熱℃: 没有。根据个人理解分析的。

1、数据库那么重要的东西,如果轻松就让人通过网络数据抓取就破解了密码,那还了得?这样,数据库肯定存在大问题的

2、数据库连接不象我们通过form方式提交数据,而是走了数据库驱动程序,这个有点类似Web访问的Https协议,走http协议的密码,你能通过抓取数据的方式获取密码?这个有个参考:网易的通行证登录。

3、数据库的网络连接只有比https更严密。

支持(0) 反对(0) 519740105 | 园豆:5810 (大侠五级) | 2014-10-01 12:28

@519740105: 虽然我也是像你这样想的,但是我也不确定,所以就来提问了,想得到个确定的答案。

支持(0) 反对(0) 弎吩锺熱℃ | 园豆:203 (菜鸟二级) | 2014-10-02 00:31

@弎吩锺熱℃: 帐户、密码是安全的,这个可以给你确定的回答!

支持(0) 反对(0) 519740105 | 园豆:5810 (大侠五级) | 2014-10-02 08:59

@519740105: 但是我不能跟上司说我确定,但是不知道如何确定。。

支持(0) 反对(0) 弎吩锺熱℃ | 园豆:203 (菜鸟二级) | 2014-10-02 12:12

@弎吩锺熱℃: 那你就把这里的解释给你上司看。

把我的分析一条一条的摆给他听。

如果他不确定,那~~~宁愿辞职也不继续了。

支持(0) 反对(0) 519740105 | 园豆:5810 (大侠五级) | 2014-10-02 12:26

@弎吩锺熱℃: 还有一个办法,就是“忽悠”,告诉他,自己已经通过一个特殊的算法把帐号和密码加密了,至于加密方法嘛,有很多:

1、自己弄服务层,数据库不对外公开

2、对字符串以加密的方式存储起来,使用的时候解密

支持(0) 反对(0) 519740105 | 园豆:5810 (大侠五级) | 2014-10-02 12:28

@519740105: 

1.有些软件已经开发在用的,新开发的还能考虑使用这种模式,已有程序修改成本太高。

2.现在就是用的这种模式。。但是解密出来的连接字符串是存储在ConnectionString里面的,然后连接数据库的时候,肯定就要把这个连接发送出去,但是不知道发送出去的数据,是否已经经过加密。如果不被加密,那就可以直接捕捉网络封包,获取到里面的信息了。

支持(0) 反对(0) 弎吩锺熱℃ | 园豆:203 (菜鸟二级) | 2014-10-02 13:30
0

数据库一般只能给自己公司的服务器访问,不会直接让客户端直接连接的。

雲霏霏 | 园豆:238 (菜鸟二级) | 2014-10-01 15:50

有时候这情况也不能完全避免,就算同处一个网络内被捉包,要是明文传输,也是不安全的。

支持(0) 反对(0) 弎吩锺熱℃ | 园豆:203 (菜鸟二级) | 2014-10-02 00:30
0

安全。

晓菜鸟 | 园豆:2594 (老鸟四级) | 2014-10-01 16:47

但是呢,能不能说具体一点呢?

支持(0) 反对(0) 弎吩锺熱℃ | 园豆:203 (菜鸟二级) | 2014-10-02 00:31
0

从《不制作证书是否能加密SQLSERVER与客户端之间传输的数据?》中看到了《SQL Server 连接加密 (1) -- SQL Server connection encyption》,得到了确认的答复。

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

弎吩锺熱℃ | 园豆:203 (菜鸟二级) | 2014-10-06 10:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册