1 cs 架构,数据库连接串要保存在本地,或者放在 web 上。base64 太弱了。aes 或者 des 也很容易破解吧,因为你要告诉程序如何解密吧。rsa 类似,密钥要写在程序里。如何防止数据库访问用户名密码被破解?
1
ysc3839 2022-04-08 21:02:14 +08:00 via Android
“数据库连接串”是什么?为什么要保存在本地?
|
2
aver4vex 2022-04-08 21:05:28 +08:00
本地存数据库链接?
|
3
yuangee888 OP 就是客户端+数据库的程序
|
4
gam2046 2022-04-08 21:53:22 +08:00
一般客户端不直连数据库。如果非要直连,数据库上设权限,不允许直接对表进行 select ,建视图,只给予用户查询视图的权限,在视图中隔离数据,把不允许此用户读取的记录过滤掉。
|
5
codehz 2022-04-08 21:59:58 +08:00 via Android
你这安全模型就没搞清楚
Server 是用户控制的吗,不是的话直接存 server 上就好了,你总不会让 client 直接连接数据库吧。。。 |
6
zhuangzhuang1988 2022-04-08 22:03:08 +08:00
服务器暴露需要的接口
|
7
deplivesb 2022-04-08 22:05:32 +08:00
cs 的程序你需要 c 端跨过 s 端直接连接数据库????????
|
8
renmu123 2022-04-08 22:23:38 +08:00 via Android
放后端服务器
|
9
akin 2022-04-08 22:41:25 +08:00
cs 端 desktop Application 直连数据库一般都用低权限的 DB user ,只读权限。如果需要写入,早期的做法是通过存储过程传入参数。
后续的 desktop Application ,已经很少直接连接数据库,都是透过 API gateway 或者 ESB 这样的东西操作,那就更无需处理连接字符串。 楼主你在用 power Builder 么? |
10
crab 2022-04-09 05:49:46 +08:00
通过存储过程,但建议弄个 web 的 api 形式来操作吧。
|
11
xuanbg 2022-04-09 06:20:44 +08:00
@codehz 他这个模式早年很多的,说是 C/S ,但根本没有服务端,客户端直连服务器上的数据库数据库的。他这个 Server 不是服务端,是服务器啦。
|
13
SenLief 2022-04-09 07:59:05 +08:00
估计算不上什么 cs 架构,可能服务器只有一个数据库。
|
14
sadfQED2 2022-04-09 08:07:20 +08:00 via Android
数据库连接串存数据库里面,客户端第一次用只读账号来查自己的连接串,查到连接串以后再重建数据库
|
16
unclemcz 2022-04-09 08:30:50 +08:00 via Android
这种历史悠久的程序直连数据库的话,可以硬编码到 dll 。
|
17
yuangee888 OP server 端只有一个数据库,客户端直接连接。
程序是 c#的 |
18
yuangee888 OP pb 类似的,客户端直连数据库
|
19
liuhan907 2022-04-09 12:51:47 +08:00
@yuangee888
这种基本不加密,因为加密也没啥用。不管你怎么混淆最终这类东西还是要连接远程数据库然后抓个包就啥都有了。这种古董程序连接也基本不会有 mTLS 保护,所以别考虑这么多,随便用个 AES 然后把密钥丢 C 里用 PInvoke 一下就行了。防君子不防小人。 |
20
msg7086 2022-04-10 02:02:57 +08:00 via Android
你这种架构,没法防止。一开始就要把系统做成假设客户可以拿到数据库账号密码。
|