CS模式安全性讨论。

debug1984 2008-07-16 01:33:44
各位,小弟我以前做了一个BS结构的企业管理系统。现在打算把这个系统改成CS模式的。
各个客户端都直接读写数据库,我认为这样不安全的。若公司有人恶意获取数据库连接等信息,通过SQL连接器就可以任意修改数据了。

请问各位是怎样解决这个问题的呢?
我觉得加密连接字符串也是治表不治里的,我现在用的方法是,通过SOCKET 向服务端发送一段指令,服务端验证账号密码正确后,返回数据库连接字符串。客户端把这个字符串存放在一个静态类里面。

请问有没有什么办法根治这个问题呢?
...全文
193 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
sitych 2008-07-16
  • 打赏
  • 举报
回复
服务器端做数据校验,合法操作才能操作数据库。客户端不能直接操作数据库
bindsang 2008-07-16
  • 打赏
  • 举报
回复
.NET里面用WebService和Remoting就是专门解决这种门题的,Remoting用要用在局域网内,速度比较快,但用起来相对于WebService麻烦
WebService可以用在局域网和互联网上.使用起来简单方便
考虑安全性的话,现成的有WSE,自已写SOAP扩展也行,还可以压缩加密,身份验证都可以

以前做过一个项目也是这样的C/S结构,WebService和Remoting两个版本都有,自己搞的Soap扩展,分了四层,有两个版本存在的问题,需要一个Proxy层,一般三层就够了

采用分层开发的话,客户端根本没机会接触到数据库
冷月孤峰 2008-07-16
  • 打赏
  • 举报
回复
各个客户端都直接读写数据库?
用webservice让客户端调用。另外再将连接字符串进行加密
grearo 2008-07-16
  • 打赏
  • 举报
回复
也可以考虑数据操作的中间件方式完成。
tootto 2008-07-16
  • 打赏
  • 举报
回复
我觉得你的考虑有点过了。一个公司内部的系统,公司的人都要如此防范?

如果真想黑的话,内部的人能不清楚数据库服务器?直接奔你的数据库服务器了,还用你的系统找联接字符串?
反之,如果搞不清楚服务器的信息, 我想这人也没水平HACK你的系统找联接字符串。毕竟找服务器比hack你的系统简单多了。
debug1984 2008-07-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 grearo 的回复:]
建议使用三层架构
在应用层跟数据层之间增加一个专门的项目
[/Quote]

请问真正的SQL语句执行的地方是在客户端上面运行的吗?还是其他什么地方?
PETSHOP不知道算是不,这个是WEB项目。

多谢提示,我再网上查下。另外顺便问下
.NET Remoting可以解决这个问题吗?
JTFLSH 2008-07-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 grearo 的回复:]
建议使用三层架构
在应用层跟数据层之间增加一个专门的项目
[/Quote]

支持,使用三层架构好处很多,维护、修改、安全都可以得到很大程度的方便。
卧_槽 2008-07-16
  • 打赏
  • 举报
回复
各个客户端不要直接连接数据库。可以通过一个webservice来来对数据库操作,各客户端只调用webservice的方法。安全性可以得到保障。
HolyPlace 2008-07-16
  • 打赏
  • 举报
回复
将连接字符串的密码加密。
grearo 2008-07-16
  • 打赏
  • 举报
回复
建议使用三层架构
在应用层跟数据层之间增加一个专门的项目
china_ming 2008-07-16
  • 打赏
  • 举报
回复
针对你的问题我没有好的解决方案,但是帮你顶一下!!

110,620

社区成员

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

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

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