V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
supermama
V2EX  ›  程序员

客户端程序代码如果做权限控制

  •  
  •   supermama · 2024-09-02 09:55:32 +08:00 · 2912 次点击
    这是一个创建于 367 天前的主题,其中的信息可能已经有所发展或是发生改变。

    以前做的都是 BS 的程序,前后分离,前端、后端、数据库 分别是三批人分成不同权限管理,所以也不担心代码泄露或者权限问题。 那么如果是 CS 的程序,要 Git 仓库要怎么分权限,既保证一个人无法拿到全部的代码,而且也不影响在开发过程中的协作呢?

    26 条回复    2024-09-03 14:35:30 +08:00
    panxiuqing
        1
    panxiuqing  
       2024-09-02 10:13:11 +08:00
    以前三批人没法交流串通?
    shadowyue
        2
    shadowyue  
       2024-09-02 10:16:53 +08:00
    没有完整代码项目在开发的时候能跑起来?
    supermama
        3
    supermama  
    OP
       2024-09-02 10:17:04 +08:00
    @panxiuqing 理论上会,但是至少出状况的概率会低一些。现在如果是 cs 结构,其实连数据库也没有,纯客户端,一个人出事,代码就被拿走了。
    supermama
        4
    supermama  
    OP
       2024-09-02 10:18:14 +08:00
    @shadowyue 不行,跑不起来。所以就不知道像客户端的这种项目,要怎么区分好权限,既能协作编码,但是每个人又只能拿到自己的那部分代码。
    vituralfuture
        5
    vituralfuture  
       2024-09-02 10:22:09 +08:00 via Android
    拿不到全部的代码其实问题很大。假设楼主的这个项目是 C++写的,可以通过链接到预先编译的库的方式避免某人拿到这部分的代码,但只适用于分层明显的情况下。如果这部分属于同一层,出 bug 了很难排查。如果这一层是频繁变动的业务,操作起来也很麻烦

    最后,防止代码泄露应该靠法律手段,技术手段防不住的
    shijingshijing
        6
    shijingshijing  
       2024-09-02 10:23:00 +08:00
    @shadowyue 接口定义好了完全没问题的,前提是文档完善,接口清晰,不经常变来变去。
    shadowyue
        7
    shadowyue  
       2024-09-02 10:26:14 +08:00
    客户端程序也可以拆成例如 UI 层,业务层,数据层吧,
    每个部分之间的交互通讯能支持本地或者远程两种方式的话,
    你就能把几个部分拆开,各自开发各自的。这个思路不知道是否可行
    zhangeric
        8
    zhangeric  
       2024-09-02 10:27:45 +08:00
    cs 跟 bs 一样啊,做成前后端分离不就完了么?
    xuanbg
        9
    xuanbg  
       2024-09-02 10:29:23 +08:00
    你的客户端难道不是替代 JS 前端的么?不会是客户端直连数据库的吧???
    Skifary
        10
    Skifary  
       2024-09-02 10:34:33 +08:00
    CS 分层分模块也一样
    tool2dx
        11
    tool2dx  
       2024-09-02 10:38:10 +08:00
    客户端可以啊,每人负责一个 dll 模块,整体运行起来只需要调用接口,不需要源代码。每个人的 git 权限隔离。
    gbw1992
        12
    gbw1992  
       2024-09-02 11:02:37 +08:00
    之前我们做.net cs 项目时,不同业务模块可以发布到私有 nuget 上由不同组开发。主程序 host 项目直接引用或者使用反射的方式加载不同项目的界面。
    nice2cu
        13
    nice2cu  
       2024-09-02 11:29:05 +08:00
    分模块 jar 包模式引入,只能看别人的代码 不能改
    R4rvZ6agNVWr56V0
        14
    R4rvZ6agNVWr56V0  
       2024-09-02 12:54:53 +08:00
    不同的库、不同的权限
    共同的 CI/CD (管理员能拿到所有权限)
    自动打包,然后进行测试
    sampeng
        15
    sampeng  
       2024-09-02 13:41:00 +08:00
    防君子不防小人。否则,so 出模块。也没什么好的办法
    sampeng
        16
    sampeng  
       2024-09-02 13:41:48 +08:00
    但说实话吧,代码真的有这么重要么?除了真正算法累的。普通 crud ,功能页面类的。有源码又怎么样,重要的是市场模型吧
    importmeta
        17
    importmeta  
       2024-09-02 14:05:52 +08:00
    建议做好保密协议,知识产权,专利,因为防不住。
    HangoX
        18
    HangoX  
       2024-09-02 14:09:38 +08:00
    cs 程序吗? git 做这个有点难的,需要用 subtree ,或者直接通过 nexus 提供不同的底层包
    janus77
        19
    janus77  
       2024-09-02 14:21:37 +08:00
    前端后端数据库本来就是不同的项目啊,是各自打包最后产物也是各自的,你这客户端凭什么要分开啊,我不理解,仅仅是为了安全?前端后端分离开也不是为了安全才分开的啊
    dandycheung
        20
    dandycheung  
       2024-09-02 14:23:37 +08:00 via Android
    改用 SVN 。
    realJamespond
        21
    realJamespond  
       2024-09-02 15:50:50 +08:00
    微前端分几个库即可
    glcolof
        22
    glcolof  
       2024-09-02 16:04:11 +08:00   ❤️ 1
    网游作为一种特殊的客户端程序,很多公司是这么管理的:
    首先是前后端分离,使用 SVN 给客户端和服务器的开发人员不同的权限。
    同时全员内网开发,电脑不能访问互联网,需要查询资料的时候有单独的电脑。要下载资料的时候,需要转发给专门的人员,由该人员从外网复制到内网。
    机箱加封闭外壳,不能插 U 盘什么的。
    系统内安装加密软件,对硬盘数据加密,发给第三方的时候需要提交解密申请,层层审批之后才能解密。
    屏幕自带数字水印,截图和拍照都会留下记录。
    所有员工签署保密协议,违反协议会有严厉的惩罚。
    supermama
        23
    supermama  
    OP
       2024-09-02 18:51:47 +08:00
    @zhangeric 后端没啥功能,主要功能基本都在客户端
    supermama
        24
    supermama  
    OP
       2024-09-02 18:53:06 +08:00
    @dandycheung 用了几年了,再也不想用 svn 了。
    supermama
        25
    supermama  
    OP
       2024-09-02 18:54:10 +08:00
    @glcolof 受教了。网游管得这么严格。
    glcolof
        26
    glcolof  
       2024-09-03 14:35:30 +08:00
    @supermama 可能因为网游的代码如果泄露,公司会有较大的损失,比如其它公司可以换皮,黑产那边做外挂和私服也更方便。从这个角度来说,网游公司可能更接近传统软件公司,而不是互联网公司。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3948 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 00:52 · PVG 08:52 · LAX 17:52 · JFK 20:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.