如果我在 php 中使用 system() 函数并且该命令包含密码,那有多不安全?
If I use the system() function in php and the command contains a password, how unsafe is that?
我有一个 php 脚本可以生成报告。该报告的最终用户希望将其上传到他们可以访问的服务器。我有一个具有 SFTP 访问权限的帐户,可以将文件上传到他们的服务器。
一种方法是调用
system("lftp -e ... -u user,password sftp://host");
我知道在命令行上提供密码通常是不安全的,因为其他用户可以看到带有 w 和 ps 等程序的命令行。
由于这是从 php 过程完成的,这是否有任何不同或同样不安全?
显然使用 CURL 或其他库进行 SFTP 连接是最安全的,"right way" 可以做到这一点。这个问题是为了我在这个特定问题上的教育,所以我不需要任何人告诉我改用 curl。 ftp 示例只是一个示例。
我能想到 3 个潜在问题:
- 使用 ps 可见(就像在控制台中一样)
- 可能(不确定是否真的)存储在 shell 历史中,这意味着在硬盘上(就像来自控制台)
- 如果您将密码保存在源文件中而不是变量中,那么它也在 VCS 中(与控制台不同)
我有一个 php 脚本可以生成报告。该报告的最终用户希望将其上传到他们可以访问的服务器。我有一个具有 SFTP 访问权限的帐户,可以将文件上传到他们的服务器。
一种方法是调用
system("lftp -e ... -u user,password sftp://host");
我知道在命令行上提供密码通常是不安全的,因为其他用户可以看到带有 w 和 ps 等程序的命令行。
由于这是从 php 过程完成的,这是否有任何不同或同样不安全?
显然使用 CURL 或其他库进行 SFTP 连接是最安全的,"right way" 可以做到这一点。这个问题是为了我在这个特定问题上的教育,所以我不需要任何人告诉我改用 curl。 ftp 示例只是一个示例。
我能想到 3 个潜在问题:
- 使用 ps 可见(就像在控制台中一样)
- 可能(不确定是否真的)存储在 shell 历史中,这意味着在硬盘上(就像来自控制台)
- 如果您将密码保存在源文件中而不是变量中,那么它也在 VCS 中(与控制台不同)