万一写有连接字符串的客户端被破解,如何保证数据库的安全?(100分)

  • 主题发起人 主题发起人 小娘皮
  • 开始时间 开始时间

小娘皮

Unregistered / Unconfirmed
GUEST, unregistred user!
c/s数据库(MS SQLServer),两层结构,客户端要分发给不确定的用户,
并且客户端要操作放在中心服务器上的数据库,如果客户端被破解,那么
用户就可以取得连接字符串,包含用户名和密码,这岂不是太危险了?
请问有没有解决的办法?
 
设定这个用户的权限,只能读取或者写入指定的对象,绝对不能有sa权限。
 
一般情况下我们会在客户端使用的帐号为只对向对的表有添加修改删除记录的权利而没有其
他的权利,例如访问其他表、其他数据库、设置等权限,这样就算被破解了(太不幸了)也
不会造成太大伤害。
 
用户名和密码都加密。用户用一般权限的用户,不用sa
 
把连接的用户权限在保证不影响系统操作的情况降到尽可能的小。
把作完的程序加密一下。
 
谢谢Adnil、terry_lzs、郭玉梁
比如说,用户在连接时要确认身份(具有查询整个用户清单表的权限),可以修改、删除用户
自已的资料(具有修改、删除用户清单表的权限),这些权限我不得不提供,就算没有其他
权限,破解了连接字符串的的用户还是可以获得用户清单表内的所有数据,而且可以进行破
坏,这。。。。还是太可怕了。
 
如果是客户的权限比较大,密码被他人知道 ,这个安全性也不是你的责任。
如果是权限比较小,密码被他人知道 ,数据被破坏的面应该不是很大,事后可以用备份恢复

>>如果客户端被破解,那么用户就可以取得连接字符串,
>>包含用户名和密码,这岂不是太危险了?
既然你知道 客户端被破解后 会让人盗走用户名和密码,
你就不要把用户名和密码放在客户端呀!
(不知道你能否理解我的意思)

比如, 用户Activer登陆了 ,连接数据库时用的UserName和Password不应该是放在客户端,
而是放在服务器端,当Activer的用户通过验证,服务器段返回登陆数据库的Username和Password。
(以上情况在三层中可以应用)


 
他的意思是你要使用连接例如
source = delmain;username =sa;password ='';
这个连接字符串去连接SQL SERVER,他们可以通过截获TCPIP包来得到这个字符串。
不知我的理解是否正确?
 
被破解,數據庫就不安全了,我就是這樣看人家的數據庫的
 
其实我试过破解的
如果你用connectionstring来连接
那么就在程序中动太赋值
设计期connected为false
运行时在改成true就可以了
 
呵呵,要是别人真那样弄,他可以找数据库,直接猜SA的密码,这样还比较快呢。
 
非常感谢以上多位大虾! 我想,数据安全问题是每一位程序员都关心的,
还有没有更稳妥的解决办法?
 
权限这个时候就像是把双刃剑,你既然已经给它赋值了又怎么能在不确定的时候限制权限?!
在权限上下功夫比较难了,还是想想如何不被破解比较实际。
 
为什么不让用户自己输入密码而且可以修改密码
 
5555,真的没有更好的办法了吗?
 
db2就支持set schema这样的操作
即使他得到了连接字符串但是他还是没有权限修改的
可是在连接字符串中设置普通用户连接该用户权限仅限于select 在程序启动时set schema到
db2admin这样才会有修改的权限这样比较安全
 
请继续发表高见
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部