【问题标题】:Removing password plain text from JMX file从 JMX 文件中删除密码纯文本
【发布时间】:2021-08-05 16:54:59
【问题描述】:

我正在开发一个项目,该项目使用 jmx 文件在带有 JMeter 的 API 上运行一些性能测试。 API 需要身份验证,用户名和密码是 JMX 文件中使用“password123”的纯文本。 我需要删除这个纯文本密码,这样当代码被推送到 gitlab 时,也不会使用密码。 任何帮助将非常感激。 这就是文件部分具有用户名/密码的样子:

<elementProp name="grant_type" elementType="HTTPArgument">
    <boolProp name="HTTPArgument.always_encode">true</boolProp>
    <stringProp name="Argument.value">password</stringProp>
    <stringProp name="Argument.metadata">=</stringProp>
    <boolProp name="HTTPArgument.use_equals">true</boolProp>
    <stringProp name="Argument.name">grant_type</stringProp>
</elementProp>
<elementProp name="username" elementType="HTTPArgument">
    <boolProp name="HTTPArgument.always_encode">true</boolProp>
    <stringProp name="Argument.value">johnSmith</stringProp>
    <stringProp name="Argument.metadata">=</stringProp>
    <boolProp name="HTTPArgument.use_equals">true</boolProp>
    <stringProp name="Argument.name">username</stringProp>
</elementProp>
<elementProp name="password" elementType="HTTPArgument">
    <boolProp name="HTTPArgument.always_encode">true</boolProp>
    <stringProp name="Argument.value">password123</stringProp>
    <stringProp name="Argument.metadata">=</stringProp>
    <boolProp name="HTTPArgument.use_equals">true</boolProp>
    <stringProp name="Argument.name">password</stringProp>
</elementProp>

【问题讨论】:

  • 你能通过环境变量传递它吗? ${__groovy(System.getenv('JM_PWD'),)}
  • @lojza 你能给我看一个示例代码吗?我是 Java 和 jMetter 世界的新手。谢谢
  • JM_PWD=password123 或通过docker run -e JM_PWD=password123 在 docker 中设置环境变量,然后使用 jmx where &lt;stringProp name="Argument.value"&gt;${__groovy(System.getenv('JM_PWD'),)}&lt;/stringProp&gt; 运行 jmeter

标签: jmeter jmx spring-jms jmeter-plugins


【解决方案1】:

不建议在 JMX 中包含敏感信息(例如密码)。您可以在执行测试时传递值

有许多选项可用于将运行时值传递给测试脚本

  1. 从命令行将值作为 JMeter 属性传递
jmeter.sh -n -t test-plan.jmx -Jpassword=Abcd1234

  1. 在user.properties中设置密码
password=Abcd1234

您需要更改 JMX 文件

<stringProp name="Argument.value">password123</stringProp>

<stringProp name="Argument.value">${__P(password,)}</stringProp>

  1. 您可以将密码设置为环境变量并使用以下方法检索它
${__env(password,,)}

  1. 您可以在使用BeanShell server 配置启动测试时传递变量。

【讨论】:

  • 2 & 3 听起来我需要。你能告诉我如何将密码设置为 user.properties 和环境(这样我就可以尝试这两种方法)。我在 JMeter UI 上将密码添加到“用户定义的变量”,但它所做的是它只是生成了以下代码: testPassword somePassword= 仍然是纯文本密码
  • 1. user.properties 文件位于 JMTER_HOME/bin 文件夹中。在文本编辑器中打开文件并将password=Abcd1234 添加到文件底部。保存文件并重启JMeter,
  • 2. TO SET ENV VAR :: 您可以从启动 JMeter 的命令窗口运行 export password=Abcd1234set password=Adbcd1234 (windows)
【解决方案2】:

如果您不想将密码保存在 .jmx 文件中,您可以使用 __P() function 从 JMeter 属性中读取密码,将您的 password123 更改为 ${__P(password,)}

完成后,您将能够在 JMeter 测试执行期间通过 -J command-line argument 传递实际密码值,例如:

jmeter -Jpassword=password123 -n -t test.jmx ....

并且 __P() 函数会将其占位符替换为通过-J 命令行参数传递的值。

更多信息:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-18
    • 2010-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-12
    相关资源
    最近更新 更多