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

标签 security passwords cobol mainframe jcl

我有以下代码可以连接到 COBOL 程序中的外部数据库:

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 程序可以加载它,但它不会显示在源代码中。像这样的东西:
//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 文件:
I2SFG04
12345

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

最佳答案

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

如果您将 IBM RACF 产品作为您的安全产品,这里有一个叙述:
https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.1.0/com.ibm.zos.v2r1.ichd100/passret.htm

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

关于security - 如何避免在 COBOL 程序中硬编码凭据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50317586/

相关文章:

asp.net - 基于权限的访问控制

java - 注销后返回时验证用户

python - 暂停系统功能,直到我的 python 脚本完成

cobol 与带有破折号 (-) 和带有 X 的图片的区别

programming-languages - 您会将 COBOL 程序移植到哪种语言,为什么?

php - AJAX:单页应用程序结构/安全

javascript - 如何执行具有可操作反馈的跨站点脚本攻击测试?

VBA - 验证我的密码是否包含 1 个数字、1 个 ucase 和 1 个 lcase

passwords - 设置H2密码

java - 是否存在一种在 COBOL 中标准化的 Java 互操作形式?