jenkins - 我的字符串插值在 Jenkins 管道脚本中是否安全?
问题描述
我指的是这里的链接。下面是我的脚本代码的一部分,它使用用户名和密码进入平台以获取身份验证令牌。
...
...
environment{
CRED = credentials("my_cred")
}
...
...
sh'''
token = $(curl --fail -H "Content-Type:application/json" -X POST https://google.com -d
\'{"username":"'"$CRED_USR"'","password":"'"$CRED_PSW"'"}\')
'''
//prints in console '{"username":"*****","password":"*****"}'
...
...
如果我只是通过下面,那么它不起作用。我认为在发送之前需要对正文进行字符串化。
"username":CRED_USR,"password":CRED_PSW
or
"username":'$CRED_USR',"password":'$CRED_PSW'
这可行,但它安全吗?
"username":"'$CRED_USR'","password":"'$CRED_PSW'"
// prints in console '{"username":"*****","password":"*****"}'
有人可以从字符串插值的角度告诉我我的代码是否安全吗?如果没有,请让我知道正确的方法。
解决方案
它不安全,因为当您在 groovy 级别上插入密码时,它可能会出现在日志中,并且有权访问日志的人可以看到密码。
这应该工作:
environment{
CRED_USR = ...
CRED_PSW = ...
}
...
sh '''
curl ... '{"username":"$CRED_USR","password":"$CRED_PSW"}' ...
'''
推荐阅读
- react-native - 反应原生子弹字符?或统一码?
- highcharts - Highchart 3D 拖动也可以移动绘图图像
- android - Java.Lang.ClassNotFoundException:找不到类“com.google.android.gms.vision.text.TextRecognizer$Builder”Xamarin Android
- ag-grid - 如何根据列是否固定在左侧来更改列的样式?
- c++ - 如何在 C++ 中处理时间
- python - 如何单独使用主要词并在python3中找到特定行?
- sql-server - 通过 Delphi DLL 连接到 SQL 时 Delphi 10.2 Tokyo 程序抛出 216 错误
- ruby-on-rails - 如何获取 Paypal 交易 ID 并在 ruby on rails 中退款
- arrays - Ngfor 的问题仅支持绑定到可迭代对象,例如数组
- css - 如何将boostrap 4下拉菜单修复到外部