连接数据的安全性问题。

zhang024 2008-10-10 01:11:01
现在的情况是这样的,我们开发出来的软件,只要是在我们网站上注册了用户都能使用。
软件第一次打开的时候,自动到网上去拿现在的数据库地址,用户名和密码。然后通过这个用户名和密码来连接数据库。
这样我的数据库地址,用户名和密码就在本机的某个位置保存起来了,当然保存的是加密信息。
问题是:
可以通过一些监控软件来监控到软件和数据库的连接信息,这样如果说他破解了我的数据库用户名和密码,那我的数据库是不是就
裸露了!这就会造成严重的后果!,所以怎么来避免这种问题呢?随着用户越多,这个可能性就越大!怎么来正确理解和解决这个问题呢?


谢谢各位大侠!
...全文
203 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhang024 2008-10-17
  • 打赏
  • 举报
回复
20楼,用户当然是对数据库可以进行任意操作,比如添加,修改删除。。。
四夕哥哥哥 2008-10-16
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 zdingyun 的回复:]
弱弱地问声LZ,你的数据库是给用户查询数据呢?还是由用户对你的数据库进行输入修改呢?
[/Quote]
我想最少都会有对数据更新吧,比如最后一次登陆时间,最后一次登陆IP,什么的.
zdingyun 2008-10-16
  • 打赏
  • 举报
回复
[Quote=引用楼主 zhang024 的帖子:]
现在的情况是这样的,我们开发出来的软件,只要是在我们网站上注册了用户都能使用。
软件第一次打开的时候,自动到网上去拿现在的数据库地址,用户名和密码。然后通过这个用户名和密码来连接数据库。
这样我的数据库地址,用户名和密码就在本机的某个位置保存起来了,当然保存的是加密信息。
问题是:
可以通过一些监控软件来监控到软件和数据库的连接信息,这样如果说他破解了我的数据库用户名和密码,那我的数据…
[/Quote]
弱弱地问声LZ,你的数据库是给用户查询数据呢?还是由用户对你的数据库进行输入修改呢?
zhang024 2008-10-16
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 appleller 的回复:]
我也想知道!
一般C/S结构软件都有初始设置,即一般设定SQL数据库地址及SA密码,但不知道一般保存在哪里?安全不?用户登陆时怎样来取这个密码的?
[/Quote]

一般来说都是放在注册表里面的!但是都是加密过后的!
安全的话,我觉得是很不安全的,因为数据库信息保存在客户的机器上。如果软件安装在很多地方,那么你的数据库密码就会泄漏很多次
如果是互联网软件,成千上万的人用的话,肯定有人能搞破你的密码

而且对数据库的更新维护也是问题,你的数据库地址如果要更换怎么办?如果数据库用户名,密码要更换怎么办?等一系列的问题。

当然,正如 7楼所说 “对远程数据库进行操作,不建议采用 internet 连接. ”

所以要想实现,就得绕弯走!
zhang024 2008-10-16
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 plowman001 的回复:]
其实解决你这个问题不是很难,就是比较烦。

在数据库建一个存储过程,用户对数据库只有读存储过程,对其他的任何表、视图、存储过程都没权限。通过参数来反映不同的操作。
用户对表没有直接的操作权限。而是由存储过程返回一个临时表。在对数据写操作时,可以由数据库进行,权限、条件等进行验证和检查。再写数据库。

进行这样的操作也就是说把安全交给数据的安全系统进行管理。如果你把数据库的安全做得好的话应该是比…
[/Quote]

这个是个很好的思路,不过我现在是在网站(asp.net c#)上执行sql语句,执行之前,先进行合法性检查,利用c#进行检查似乎更加灵活,你的方法还是需要软件知道数据库的相关信息,而我现在完全避免了软件和数据库的直接连接,软件只要调用网站的一个API就好了。

我上面的问题,采用了另外的一个解决方法,Dataset放回后,肯定是不能直接把所有的DataTable都给Adodb.recordset的,只有自己写一个类模拟现实(NextRecordset)这个功能了!

appleller 2008-10-13
  • 打赏
  • 举报
回复
我也想知道!
一般C/S结构软件都有初始设置,即一般设定SQL数据库地址及SA密码,但不知道一般保存在哪里?安全不?用户登陆时怎样来取这个密码的?
plowman001 2008-10-13
  • 打赏
  • 举报
回复
其实解决你这个问题不是很难,就是比较烦。

在数据库建一个存储过程,用户对数据库只有读存储过程,对其他的任何表、视图、存储过程都没权限。通过参数来反映不同的操作。
用户对表没有直接的操作权限。而是由存储过程返回一个临时表。在对数据写操作时,可以由数据库进行,权限、条件等进行验证和检查。再写数据库。

进行这样的操作也就是说把安全交给数据的安全系统进行管理。如果你把数据库的安全做得好的话应该是比较安全的。
zhang024 2008-10-12
  • 打赏
  • 举报
回复
恩,我现在是这样实现的,所有的Sql都在网站上执行,执行完毕之后生成一个XML,然后返回给客户端,
客户端来解析找个xml,生成一个RecordSet.

但是遇到了一个问题,如何将一个DataSet (包含多表) 转化成一个Adodb.recordset呢?

也就是说能通过Recordset.NextRecordset 访问下一个记录集的?


谢谢!
lyserver 2008-10-10
  • 打赏
  • 举报
回复
或者使用公钥和私钥,网站与本地某些条件符合,才返回正确的数据库地址、用户和密码。思路跟以前一样。
lyserver 2008-10-10
  • 打赏
  • 举报
回复
XML本身是不能通信的!
实在没办法,就在网站上做一个ASP页面,提供加密后的数据库地址、用户和密码,本地解密后用。将VB编译成P-CODE,增加本地程序反编译的难度。
zhang024 2008-10-10
  • 打赏
  • 举报
回复
希望大家拍砖!
zhang024 2008-10-10
  • 打赏
  • 举报
回复


我现在出来了一个想法,就目前的这个基础上修改也很简单。

由于在在软件里面,数据库的请求都是由一个类控制的,所以我将这个请求送到网站上,又网站执行完毕后,给软件

网站与软件之间用xml通信!

这样,软件应该避免了和数据库的连接!!
zhang024 2008-10-10
  • 打赏
  • 举报
回复

我是在想,就现在这种架构,我能不能在服务器上将数据库的请求全部拿到,然后再过滤一次!

这样相当于数据库多了一个防火墙,这样数据库就处于保护状态!
fvflove 2008-10-10
  • 打赏
  • 举报
回复
以下:是个人一个设想,不保证其可行性.

1.对于每一个客户都建议一个表.(有用户名,密码)
2.每一个客户在使用的时候,都要先登陆(采用 ASP 方式)
3.还是采用远程打开数据库的方式.
4.当某个用户登录成功后,服务端立即将此用户名登记起来.
5.并做以下动作:以随机方式生成一个文件名(将此文件名及路径发送至刚登陆的用户,如果能随机生成用户名及密码更好.),将数据库文件复制至随机生成的地方.
6.客户端根据收到的信息进行连接远程数据库.
7.当客户端退出的时候,服务端取消登记.(服务端删除随机生成的文件)

8.如果一个用户已经被登记已登陆,不让登陆.
zhang024 2008-10-10
  • 打赏
  • 举报
回复

楼上说的正确,对于这种架构我也了解

主要是我们先开发出来软件,直接连接远程的数据库的这种,首先是做个某些企业内部使用的,就不存在这个问题。

后来发展了一下,所有的软件都直接连我们的数据库,这样减少了客户企业的成本。

所以就引出了上面的问题!
fvflove 2008-10-10
  • 打赏
  • 举报
回复
一般来说: 对远程数据库进行操作,不建议采用 internet 连接.
正如LZ所说,如果一定要用internet 连接 那就会出现 破解 而不安全.

至于怎么样处理及读取 远程数据库里面的信息. 可以参考一下 网络游戏的处理方式.

每一个指令都都过网络对服务器进行请求: 服务器处理后再发送至客户端.

如果感到服务器处理的数据太多,可以让一些不重要的数据在客户端处理.
zhang024 2008-10-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 fvflove 的回复:]
即然:
VB程序能通过网络去读取数据.

为什么
不能用ASP做一个网页的登录页面.

在VB中用一个 WebBrower 控件 引用页面进行登录呢?
[/Quote]

可能我们2的理解有偏差,我是要通过软件去连接远程数据库,然后所有的操作都在软件里面实现,
不是在那里登录的问题!而是本机软件里面保存了远程数据库的地址,数据库的用户名和密码。

这样造成了不安全。即使本机保存的是加密的信息,也不是绝对的安全!对吧?
fvflove 2008-10-10
  • 打赏
  • 举报
回复
即然:
VB程序能通过网络去读取数据.

为什么
不能用ASP做一个网页的登录页面.

在VB中用一个 WebBrower 控件 引用页面进行登录呢?


zhang024 2008-10-10
  • 打赏
  • 举报
回复
楼上说的对头,如果破解了咋办?

而且VB 软件极其容易反编译,从而找到数据库相关信息!
lyserver 2008-10-10
  • 打赏
  • 举报
回复
对网站上的数据库地址、用户名和密码进行加密,取回解密后才进行使用。不过要是本地程序也被破解了,就没办法了。
加载更多回复(2)

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧