C/S请教一个安全连接数据库的方法。

bdhwjs 2009-01-12 04:07:59
刚从B/S开发转到C、S上来,对这里还不是太了解,放在客户端软件里的XML中,再把XML加密这样是不是太不安全了,并且我要是改动数据库连接的话用户就要更新这个文件。。

其他方法请大虾们指教下,最好能给例子源码,或参考网站。

资料上好像是说写个服务器端来接收,但是没太明白,谁能帮忙提供个例子或资料~~~~

...全文
400 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
白云在上 2009-01-13
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 bdhwjs 的回复:]
我想实现的是客户端直接连接数据库,但客户端连接数据库的时候必须要把数据库连接解密,解密这一部被用户看到的话不就死翘翘啦吗??
[/Quote]

如果客户能够截获网路封包,那数据库直连的想法还是要从数据库客户端连接方面想办法。至于在程序内部解密那是必须的。。。
消失的尘芥 2009-01-12
  • 打赏
  • 举报
回复
学习了
SAP辉哥 2009-01-12
  • 打赏
  • 举报
回复
我认为2楼的思想是是最好的。
SmartClient说白了就是在CS构架体系的客户端软件添加WebService,将你的所有数据层都封装到WebService里面,
你不是以前做BS开发吗,这个对你来说应该很简单的。这样安全,又高效。
bdhwjs 2009-01-12
  • 打赏
  • 举报
回复
我想实现的是客户端直接连接数据库,但客户端连接数据库的时候必须要把数据库连接解密,解密这一部被用户看到的话不就死翘翘啦吗??
jinjazz 2009-01-12
  • 打赏
  • 举报
回复
服务器端可以写webservice返回dataset和本地请求返回dataset效果一样
bdhwjs 2009-01-12
  • 打赏
  • 举报
回复
比如说一个数据库连接字符串,我用DES给他加密了,有一个八位密钥。
加密后成了一段乱码。

然后我这套客户端软件给了用户,在运行的时候肯定要调用这个数据库库加密字符串,调用的时候就解密,解密的方法就是把加密后的字符和密钥添加进去,这样就解好了。。

但是用户可以看到我的dll文件,反编译,看到我解密的方法,不就把数据库连接给找到了吗???
slin60 2009-01-12
  • 打赏
  • 举报
回复
remoting是个很好的解决方案
yanrabbit163 2009-01-12
  • 打赏
  • 举报
回复
什么系统要那么高安全性呢?一般把连接字符串加密就可以了,没那么苛刻,实在不行就用WebService
abcyzq 2009-01-12
  • 打赏
  • 举报
回复
顶。网上搜索个DES加密解密类,或者自己写个加密解密算法。
bdhwjs 2009-01-12
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 Fibona 的回复:]
如果是c/s系统,那你可以用webservice获取连接,这个对webservice也要进行安全验证,

所以简单的说,只要你进行了加密,基本上就满足
[/Quote]

给个例子说明下好吗?

获取到数据库连接的话,那用户要是把我的连接截获了呢。。
怎么加密和解密??

麻烦给个代码参考下好吗??
bdhwjs 2009-01-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wf5360308 的回复:]
一般进行加密就比较安全了。或者用webservice作为中间层,这样只有服务器上才能看到连接字符串,
如果还觉得不安全,那就再加密。
[/Quote]

意思就是客户端程序给页面中的B/S程序请求,B/S反馈出结构,C/S在获取下。是这个意思吧。。


关于smartclient和服务器端程序怎么写我还是没搞清楚。。。
有例子或源码和参考资料吗,大侠们给个,谢谢了。。。
Fibona 2009-01-12
  • 打赏
  • 举报
回复
如果是c/s系统,那你可以用webservice获取连接,这个对webservice也要进行安全验证,

所以简单的说,只要你进行了加密,基本上就满足
justindreams 2009-01-12
  • 打赏
  • 举报
回复
使用webservice吧,这样就可以在服务器上保存数据库连接
白云在上 2009-01-12
  • 打赏
  • 举报
回复
你的安全连接指的是什么?如果是为了在客户端保存数据库连接密码,将用户名等信息加密后存放在XML应该没问题的。C/S程序的麻烦就是服务器端的改动会要求客户端作相应的改动,没办法的。当然如果你写个服务器端程序也是可以的,用服务器端程序隔离数据库与客户端,对保护数据库是有好处的,即做成真正的C/S,而不是客户端/数据库。
冷月孤峰 2009-01-12
  • 打赏
  • 举报
回复
一般进行加密就比较安全了。或者用webservice作为中间层,这样只有服务器上才能看到连接字符串,
如果还觉得不安全,那就再加密。
jinjazz 2009-01-12
  • 打赏
  • 举报
回复
可以考虑smartclient,这样和bs一样,数据层是在服务器端.
TonyWu66 2009-01-12
  • 打赏
  • 举报
回复

using System;
using System.Collections.Generic;
using System.Text;
using System.Configuration;

namespace MasterSoft.Common
{
public class ConfigrationHelper
{
/// Author:TerryLee

/// From:http://terrylee.cnblogs.com

/// </summary>
//加密配备文件
public static void EncryptConfiguration()
{
try
{
// 使用什么类型的加密
string provider = "RsaProtectedConfigurationProvider";

Configuration config = null;

config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

// 加密连接字符串

ConfigurationSection section = config.ConnectionStrings;

ProtectSection(provider, config, section);
section = config.AppSettings;
ProtectSection(provider, config, section);
}
catch (Exception ex)
{
throw ex;
}
}

private static void ProtectSection(string provider, Configuration config, ConfigurationSection section)
{
try
{
if ((section.SectionInformation.IsProtected == false) &&

(section.ElementInformation.IsLocked == false))
{
section.SectionInformation.ProtectSection(provider);

section.SectionInformation.ForceSave = true;

config.Save(ConfigurationSaveMode.Full);
}
}
catch (Exception ex)
{
throw ex;
}
}

}
}


在Application.Run 前执行就好啦.

111,130

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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