V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yuangee888
V2EX  ›  数据库

cs 架构的程序,数据库连接串都是如何加密的?

  •  
  •   yuangee888 · 2022-04-08 20:54:42 +08:00 via Android · 1878 次点击
    这是一个创建于 741 天前的主题,其中的信息可能已经有所发展或是发生改变。

    1 cs 架构,数据库连接串要保存在本地,或者放在 web 上。base64 太弱了。aes 或者 des 也很容易破解吧,因为你要告诉程序如何解密吧。rsa 类似,密钥要写在程序里。如何防止数据库访问用户名密码被破解?

    20 条回复    2022-04-10 02:02:57 +08:00
    ysc3839
        1
    ysc3839  
       2022-04-08 21:02:14 +08:00 via Android
    “数据库连接串”是什么?为什么要保存在本地?
    aver4vex
        2
    aver4vex  
       2022-04-08 21:05:28 +08:00
    本地存数据库链接?
    yuangee888
        3
    yuangee888  
    OP
       2022-04-08 21:13:16 +08:00 via Android
    就是客户端+数据库的程序
    gam2046
        4
    gam2046  
       2022-04-08 21:53:22 +08:00
    一般客户端不直连数据库。如果非要直连,数据库上设权限,不允许直接对表进行 select ,建视图,只给予用户查询视图的权限,在视图中隔离数据,把不允许此用户读取的记录过滤掉。
    codehz
        5
    codehz  
       2022-04-08 21:59:58 +08:00 via Android
    你这安全模型就没搞清楚
    Server 是用户控制的吗,不是的话直接存 server 上就好了,你总不会让 client 直接连接数据库吧。。。
    zhuangzhuang1988
        6
    zhuangzhuang1988  
       2022-04-08 22:03:08 +08:00
    服务器暴露需要的接口
    deplivesb
        7
    deplivesb  
       2022-04-08 22:05:32 +08:00
    cs 的程序你需要 c 端跨过 s 端直接连接数据库????????
    renmu123
        8
    renmu123  
       2022-04-08 22:23:38 +08:00 via Android
    放后端服务器
    akin
        9
    akin  
       2022-04-08 22:41:25 +08:00
    cs 端 desktop Application 直连数据库一般都用低权限的 DB user ,只读权限。如果需要写入,早期的做法是通过存储过程传入参数。
    后续的 desktop Application ,已经很少直接连接数据库,都是透过 API gateway 或者 ESB 这样的东西操作,那就更无需处理连接字符串。
    楼主你在用 power Builder 么?
    crab
        10
    crab  
       2022-04-09 05:49:46 +08:00
    通过存储过程,但建议弄个 web 的 api 形式来操作吧。
    xuanbg
        11
    xuanbg  
       2022-04-09 06:20:44 +08:00
    @codehz 他这个模式早年很多的,说是 C/S ,但根本没有服务端,客户端直连服务器上的数据库数据库的。他这个 Server 不是服务端,是服务器啦。
    antipro
        12
    antipro  
       2022-04-09 07:55:55 +08:00 via Android
    @codehz 他就是要这么做。
    SenLief
        13
    SenLief  
       2022-04-09 07:59:05 +08:00
    估计算不上什么 cs 架构,可能服务器只有一个数据库。
    sadfQED2
        14
    sadfQED2  
       2022-04-09 08:07:20 +08:00 via Android
    数据库连接串存数据库里面,客户端第一次用只读账号来查自己的连接串,查到连接串以后再重建数据库
    sadfQED2
        15
    sadfQED2  
       2022-04-09 08:08:16 +08:00 via Android
    @sadfQED2 重建=>重连
    unclemcz
        16
    unclemcz  
       2022-04-09 08:30:50 +08:00 via Android
    这种历史悠久的程序直连数据库的话,可以硬编码到 dll 。
    yuangee888
        17
    yuangee888  
    OP
       2022-04-09 11:05:48 +08:00 via Android
    server 端只有一个数据库,客户端直接连接。
    程序是 c#的
    yuangee888
        18
    yuangee888  
    OP
       2022-04-09 11:07:14 +08:00 via Android
    pb 类似的,客户端直连数据库
    liuhan907
        19
    liuhan907  
       2022-04-09 12:51:47 +08:00
    @yuangee888
    这种基本不加密,因为加密也没啥用。不管你怎么混淆最终这类东西还是要连接远程数据库然后抓个包就啥都有了。这种古董程序连接也基本不会有 mTLS 保护,所以别考虑这么多,随便用个 AES 然后把密钥丢 C 里用 PInvoke 一下就行了。防君子不防小人。
    msg7086
        20
    msg7086  
       2022-04-10 02:02:57 +08:00 via Android
    你这种架构,没法防止。一开始就要把系统做成假设客户可以拿到数据库账号密码。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1020 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 19:27 · PVG 03:27 · LAX 12:27 · JFK 15:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.