【问题标题】:PHP - I want to know if the command which I executed via shell_exec() is prompting for passwordPHP - 我想知道我通过 shell_exec() 执行的命令是否提示输入密码
【发布时间】:2018-08-30 08:58:39
【问题描述】:

所以让我简要介绍一下我正在尝试做的事情。

  1. 从用户那里获取 bitbucket 输入(如 URL、用户名和密码)(我通过普通输入获取)。
  2. 调用 shell_exec 并传递克隆 URL 命令。

现在,这里有一个技巧。如果给定的 URL 是公共 repo,它只是克隆而不要求任何密码或任何东西。但是,如果这是一个私人仓库,那么它会提示输入密码。

我想确定提示是否要求输入密码并通过我的 PHP 代码输入密码。

有没有办法在 PHP 中实现这一点? 如果命令提示输入密码,有什么方法可以告诉 shell_exec() 提示我吗? PHP 中是否有另一个函数而不是 shell_exec() 可以让我这样做?

请帮忙!!!

【问题讨论】:

  • 在 repo 上执行 HEAD 请求(使用 curl 或其他东西)并测试 HTTP/1.1 401 Authorization Required 标头?
  • 很好。但我的问题是如何通过 shell_exec() 输入密码到密码提示符?
  • 如果是基本认证(有弹窗),你可以把URI改成http://username:password@example.com

标签: php shell command-line-interface bitbucket


【解决方案1】:

看起来通过 CURL 对私有 repo 执行 HEAD 请求会生成 404 Not Found 错误。您可以按照@DarkBee 的建议检查此错误代码。

curl -I https://github.com/EvansDaniel/LocalLocker

这个命令产生这个输出(这是我的私人仓库):

HTTP/1.1 404 Not Found
Server: GitHub.com
Date: Wed, 21 Mar 2018 09:57:32 GMT
Content-Type: text/plain; charset=utf-8
Status: 404 Not Found
X-Frame-Options: deny
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Cache-Control: no-cache
Vary: X-PJAX
Set-Cookie: _gh_sess=eyJzZXNzaW9uX2lkIjoiNTE5YmE5NmI3ZjNhNDkzZTI3ODkyMmJjNTc2ZDU2YzYiLCJsYXN0X3dyaXRlIjoxNTIxNjI2MjUyMjc4fQ%3D%3D--896b8c3727dd9159a46262b6bd6fa2f405f2e674; path=/; secure; HttpOnly
X-Request-Id: 1fbd5a0c-2114-413b-b0f3-5b23bf1b6a43
X-Runtime: 0.016399
Strict-Transport-Security: max-age=31536000; includeSubdomains; preload
Referrer-Policy: origin-when-cross-origin, strict-origin-when-cross-origin
Expect-CT: max-age=2592000, report-uri="https://api.github.com/_private/browser/errors"
Content-Security-Policy: default-src 'none'; base-uri 'self'; connect-src 'self'; form-action 'self'; img-src data:; script-src 'self'; style-src 'unsafe-inline'
X-Runtime-rack: 0.021113
X-GitHub-Request-Id: 404D:3341:9F6864:11DFCD2:5AB22C8C

如果你得到 404 错误代码,你可以尝试获取用户的用户名和密码,使用 git clone url 命令尝试shell_exec,如果没有成功,告诉用户存储库没有不存在,即 404 的真正原因是该 url 没有存储库。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 2021-05-15
  • 1970-01-01
  • 2023-03-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多