用户名和密码的安全问题。

ruhong1 2017-04-19 09:43:54
原来在内网作一些软件,安全要求不是很高。
现在作的一些软件,可能要在外网发布,
这个时候就麻烦了,要是把数据库的连接名和密码放在软件里,
随便一反汇编就出来了,
怎么处理这个情况呢?
...全文
421 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
卧_槽 2017-04-21
  • 打赏
  • 举报
回复
加密保存,用的时候解密读取
xrhll 2017-04-21
  • 打赏
  • 举报
回复
你这个问题我觉得在开发的时候做客户端和服务器端,客户端访问服务器端,服务器端再访问数据服务器端,将数据服务器和服务器端分开,反编译客户端也没有用呀,所有数据库连接的用户名和密码都在服务器端,理论上问题不大。
cdcjk 2017-04-20
  • 打赏
  • 举报
回复
如果你想同时走两个方向,请花更多的钱
ruhong1 2017-04-20
  • 打赏
  • 举报
回复
我准备看点WCF,那么WCF一般是部署到IIS,还是自己作一个winfrm来运行? 主流是怎样的,简单讲个流程?
ruhong1 2017-04-19
  • 打赏
  • 举报
回复
引用 10 楼 cdcjk 的回复:
数据库只能由服务端程序来操作。
三层结构没作过,简单扫一下盲吧。 服务端怎样和客户端交换数据? C/S模式下?
cdcjk 2017-04-19
  • 打赏
  • 举报
回复
数据库只能由服务端程序来操作。
Forty2 2017-04-19
  • 打赏
  • 举报
回复
引用 8 楼 ruhong1 的回复:
... 如果验证通过,我再返回一个能操作数据库的用户名和密码给客户端?如何? ...
这样做不安全,它的本质跟“连接名和密码放在软件里”是一样的。 要安全,数据库只能由服务端程序来操作。
ruhong1 2017-04-19
  • 打赏
  • 举报
回复
单位内作软件,不涉及到钱的问题,也不太可能有什么团队,所有的东西都得自己摸索。 所以以前能省的都省。 至于用户名,当然每个人都有自己的用户名和密码。 现在说的是数据库的连接用户和密码如何保存的问题。 要不然,我设置一个低权限的只能执行存储过程的用户,然后让客户端 执行, 如果验证通过,我再返回一个能操作数据库的用户名和密码给客户端?如何? 不好意思,个人业余爱好,不懂的多,不要见笑。
Average337 2017-04-19
  • 打赏
  • 举报
回复
引用 3 楼 sp1234 的回复:
所谓“内网软件”(我不是指所有的内网软件,实际上许多专门在内网的软件也是比较正规的)通常是用来指根本就是课堂上学的最基本的编程语句、直接拿来套用的软件,不是产品。这类东西自然只应该用在小办公室里,赚点小钱。
啦啦啦啦
正怒月神 2017-04-19
  • 打赏
  • 举报
回复
让客户端调用接口和api。
Forty2 2017-04-19
  • 打赏
  • 举报
回复
1、不直接连数据库,而是让所有的客户连接一个服务。该服务需要身份验证。 2、每个客户身份验证的用户名和密码不一样(可以用一个注册的机制来实现)。 好处是: 1、使用服务,可以限制用户能够作什么,防止扩散性破坏。 2、不同客户用不同用户名,可以追究客户滥用系统,可以取消泄露的用户名和密码。
  • 打赏
  • 举报
回复
一个真正的 c-s 软件系统,其客户端根本不知道服务端有没有数据库、用几个数据库、业务需要使用其它哪些 SOA 服务。客户端就是客户端,专注于界面数据绑定,专注于用户体验,它直接访问你们自己的开发的服务器端。 客户端通常可以外包,自己管理好服务器端,用服务器端来把握业务数据一致性。客户端的发展思路,应该采取开放地思维方式。
  • 打赏
  • 举报
回复
所谓“内网软件”(我不是指所有的内网软件,实际上许多专门在内网的软件也是比较正规的)通常是用来指根本就是课堂上学的最基本的编程语句、直接拿来套用的软件,不是产品。这类东西自然只应该用在小办公室里,赚点小钱。
  • 打赏
  • 举报
回复
引用 楼主 ruhong1 的回复:
原来在内网作一些软件,安全要求不是很高。 现在作的一些软件,可能要在外网发布, 这个时候就麻烦了,要是把数据库的连接名和密码放在软件里, 随便一反汇编就出来了, 怎么处理这个情况呢?
不用反汇编也能轻松看到数据库连接串。因为连接串通常都是有特定格式的,就是把 .exe、.dll 当作普通的“乱码文本”搜一下,往往也能轻易找到。另外就是客户端通讯工具很容易找到发送的内容。 实际上这还是太底层的说法。真正比较高层的设计的说法是:所有用户都用相同的账号密码。 你可以想象一下,假设 ofo 单车的全国用户都用相同的账号密码,那么就算是搞什么噱头,破了几亿分之一,就等于 100% 全破了。那么这种设计的风险就太大了,这种设计师就是不合格的。 最起码,一个开放的网络系统,也应该给每一个人一个单独账号密码啊?!!怎么只用一个账号密码。
token不能为空 2017-04-19
  • 打赏
  • 举报
回复
加一个服务端 看起来你这个是客户端直接访问数据库的情况?
xian_wwq 2017-04-19
  • 打赏
  • 举报
回复
引用 8 楼 ruhong1 的回复:
单位内作软件,不涉及到钱的问题,也不太可能有什么团队,所有的东西都得自己摸索。 所以以前能省的都省。 至于用户名,当然每个人都有自己的用户名和密码。 现在说的是数据库的连接用户和密码如何保存的问题。 要不然,我设置一个低权限的只能执行存储过程的用户,然后让客户端 执行, 如果验证通过,我再返回一个能操作数据库的用户名和密码给客户端?如何? 不好意思,个人业余爱好,不懂的多,不要见笑。
访问数据库是server侧程序的事情, 客户端肯定不需要也没有必要进行配置 楼上大神说了,数据库这些东东对客户是透明的
拜一刀 2017-04-19
  • 打赏
  • 举报
回复
别直连数据库,和服务器端通讯,服务器端操作数据库再把结果传回给客户端 不如说没必要的话,数据库本来就不该开放远程,就好像服务器拿到手几个重点端口立刻就该关掉,3389也改到别的端口去
token不能为空 2017-04-19
  • 打赏
  • 举报
回复
想要程序简单又想要安全是不太现实的 就像耳机一样,便携和音质是两个方向 如果你想同时走两个方向,请花更多的钱

110,537

社区成员

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

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

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