首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何避免在COBOL程序中硬编码凭据?

如何避免在COBOL程序中硬编码凭据?
EN

Stack Overflow用户
提问于 2018-05-13 15:15:53
回答 4查看 680关注 0票数 6

我有以下代码连接到COBOL程序中的外部DB:

代码语言:javascript
复制
MOVE 'I2SFG04'  TO WK-USER
MOVE '12345'    TO WK-PASS

EXEC SQL 
    CONNECT TO :WK-EXT-MACHINE 
    USER :WK-USER 
    USING :WK-PASS
END-EXEC.

但是您可以猜到,我不想硬编码用户并在COBOL程序中传递。那么,是否有一种安全的方法来存储它们,以便任何有权查看COBOL程序的人都看不到凭据?

我的第一种方法是创建一个包含SYSIN内容的文件(RACF受保护的),这样COBOL程序就可以加载它,但是它不会在源代码中显示。就像这样:

代码语言:javascript
复制
//STEP001  EXEC PGM=IKJEFT01
//STEPLIB  DD DSN=I2SJR04.SYS.DBRMLIB,DISP=SHR
//SYSIN    DD DSN=EF35.PRIVATE.DB.LOGIN,DISP=SHR
//SYSOUT   DD SYSOUT=*
//SYSTSIN  DD *
    DSN SYSTEM(SSID)
    RUN PROGRAM(MYCOBB) PLAN(PLANNAME) -
    LIB('I2SJR04.SYS.LOADLIB')
    END
/*

EF35.PRIVATE.DB.LOGIN文件的内容:

代码语言:javascript
复制
I2SFG04
12345

有更好的方法来处理这种情况吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-05-17 14:57:29

如果它是IBM,则不需要提供任何凭据。

您的连接将使用运行作业的用户id。

您只需告诉您的DBA,JCL用户的作业将以什么身份运行--然后他将授予您正在使用的计划的访问权限。

票数 2
EN

Stack Overflow用户

发布于 2018-05-18 00:41:44

一个更复杂和安全的解决方案是编写一个简短的汇编程序,从安全系统(RACF、ACF2、绝密)获取用户和密码。

如果您将IBM产品作为您的安全产品,下面是一个叙述:2.1.0/com.ibm.zos.v2r1.ichd100/passret.htm

这种方法所做的是将是否允许获取密码的逻辑交给安全管理员,而不是程序员。您可以向世界展示您的源代码,但是如果安全系统不授予对凭据的访问权限,那么用户看到什么并不重要。另外,这种类型的事情通常可以被审计,所以每次引用用户/密码时,您都可以很容易地获得完整的列表。

票数 4
EN

Stack Overflow用户

发布于 2018-05-16 00:47:53

我能看到的唯一的缺陷是,如果有人在哪里重新编码和重新编译程序,说输出细节。

因此,也许您可以采取其他步骤,使用RACF受保护的程序库,将程序编译到其中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50317586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档