我已经实现了一个HTTP服务器(CherryPy和Python),它从客户端(Android)接收encryption文件。 我正在使用OpenSSL来解密上传的文件。 目前我正在使用openssl -enc -pass file:password.txt -in encryptedfile -out decryptedfile
来执行解密在服务器端。 正如你所看到的,openssl使用的密码存储在一个纯文本文件(password.txt)中。
有没有更安全的方式来存储这个OpenSSL密码?
谢谢。
将它传递给更高的FD,然后在命令行中使用该FD。 请注意,在进程运行之前,您需要使用preexec_fn
参数来设置FD。
subprocess.Popen(['openssl', ..., 'file:/dev/fd/12', ...], ..., preexec_fn=passtofd12(password), ...)
为了用户的隐私和其他原因,密码通常不被服务器存储。 通常,用户选择在服务器上以某种形式存储的密码。
然后,用户通过根据基于用户输入提供的散列来检查所存储的散列来向web应用程序进行认证。 一旦客户端被认证,提供会话标识符允许使用服务器资源。 在此期间,用户可以例如上载文件。 在服务器上加密文件应该是不必要的,假设托管服务器是正确安全的,并且没有其他问题。
在这种情况下,认证机制不明确,危险威胁或上传文件的生命周期也不明确。
看来,一台服务器正在接收一个加密的文件,加上一些类型的密码。 在传输阶段密码保护是否被考虑,或作为服务器上的存储? HTTPS协议可以帮助防范有关传输文件/数据的威胁。 正如我从您的描述中看到的,似乎关心的是服务器端的存储。
一旦服务器接收到密码(单独或通过使用主密码),加密密码会增加另一层安全性,但这种方法并非没有问题,因为密码(1)需要以明文形式存储在服务器上用于访问文件(2),或需要由管理员在需要时作为需要密码的任何处理的一部分手动输入 – 请注意,用密码加密的任何资源对用户不可用。
虽然我并没有完全意识到发生了什么,但最安全的做法是重新开发Web应用程序,仔细考虑设计和需求。