是否可以在不泄露我的文件的情况下将密码保存在c++文件中
Is it possible to save a password in a c++ file without leaking my file
我正在用c++编写一个ftp上传器文件,如果不在代码中输入密码,我就无法使用该文件登录ftp服务器。这是我的代码:
void UploadFTP(string uploadFile) {
ofstream ftpFile;
ftpFile.open("ftpcmd.dat", ios_base::app);
ftpFile << "user <USER>n";
ftpFile << "<PASSWORD>n";
ftpFile << "binn";
ftpFile << "put " + uploadFile + "n";
ftpFile << "quit";
ftpFile.close();
system("ftp -n -s:ftpcmd.dat <FTPSERVER>");
remove("ftpcmd.dat");
}
如何将登录凭据放在上面写着<PASSWORD>
的位置,而不实际将密码放在那里。
此外,如果我能在上面写着system("ftp -n -s:ftpcmd.dat <FTPSERVER>");
的行上得到任何提示,我想试着离开系统命令。
如何在不将密码输入代码的情况下使用文件登录ftp服务器。
您可以选择以下选项之一:
- 将FTP服务器配置为不需要密码
- 让用户输入密码
- 将密码存储在程序读取的单独文件中
如果您想防止用户发现密码,那么没有完整的解决方案。您最多可以模糊密码。
我想尝试离开系统命令。
C++没有用于FTP的标准API。您可以在此处找到规格:https://www.rfc-editor.org/rfc/rfc959.您可能还需要咨询RFC,该RFC会更新该RFC以支持被动模式等附加功能。
C++甚至没有运行FTP的TCP的标准API。但是,您的操作系统可能会为您提供TCP API。
-s
选项只是从文本文件中获取命令,并将其解释为用户键入的命令。ftp
程序以纯文本形式接收用户的密码,无论是来自STDIN还是来自文件,因此无法在.dat
文件中隐藏密码。
解决方案是根本不使用system()
。
在Windows上,您可以使用CreateProcess()
,它允许您提供自己的重定向STDIN
管道,您可以根据需要向其写入数据。在'Nix系统上,您可以使用pipe()
+dup2()
来实现相同的效果。
这样,您的命令数据只在内存中,而不会在文件中。请参阅创建具有重定向输入和输出的子进程,Linux 3.0:使用管道stdin/stdout执行子进程等。
或者,您可以使用实际的FTP客户端库。例如,Windows的WinInet库和libcurl库都支持FTP操作。还有很多其他第三方库也支持FTP。
或者,您可以使用目标平台的通用TCP库,直接在自己的代码中实现FTP协议。
- 无法在 Cocos2dx 中使用受密码保护的 zip 文件
- 如何在 c++ 中将密码和用户名保存到 .txt 文件中.如果用户尝试登录,我仍然希望能够检索它们
- 使用 c++/openssl 使用密码解密文件
- 使用密码将 RSA 私钥写入 PEM 文件
- C++应用程序连接到网站服务器并根据密码检索文件
- 如何制作一个从文件中读取密码并与用户编写的密码进行比较的 c++ 程序
- 如何加密文件并隐藏密码
- 从C 中的文本文件顺序进行视觉检查的用户名和密码
- c++密码存储.txt文件+屏蔽输入
- 解密单字母密码到新的文本文件
- 如何通过AES-256-CBC使用密码代替密钥和IV加密文件
- 对已编译的可执行文件中的常量字符串(例如密码)进行加密
- 文件中的用户名和密码
- Outlook pst 文件 - 密码读取
- 检测受密码保护的 MS Office 文件在 C/C++
- 可视C++:从文件 /用户名和密码读取
- C++从文本文件中获取密码
- 正在获取当前用户的密码文件条目
- 我们可以使用minizip设置zip文件的密码吗?
- QuaZip -密码保护的文件